ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构 单向链表 双向链表 环形链表 约瑟夫问题

2022-01-22 15:05:27  阅读:124  来源: 互联网

标签:约瑟夫 结点 temp no next 链表 数据结构 节点


链表

线性表,但是并不会按现行的顺序储存数据,而是在每一个节点里存到下一个节点的地址。

单向链表

一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。

img

插入(2种)

// 给链表插入一个结点
// 编写1种插入方法,在单链表的最后加入【简单】
func InsertHeroNode(head *HeroNode, newHeroNode *HeroNode) {
	// 1.先找到该链表的最后这个结点
	// 2.建一个辅助结点【跑龙套,帮忙】
	temp := head
	for {
		if temp.next == nil { //表示找到最后
			break
		}
		temp = temp.next //让temp不断的指向下一个结点
	}

	// 3.将newHeroNode加入到链表的最后
	temp.next = newHeroNode
}
  1. 参数:传入头结点和新节点指针地址
  2. 辅助变量为头结点
  3. 循环找到链表的最后,找到break循环,未找到让temp不断的指向下一个节点
  4. 将新节点加入到链表的最后
// 编写2种插入方法,根据no的编号从小到大插入【实用】
func InsertHeroNode2(head *HeroNode, newHeroNode *HeroNode) {
	// 1.找到适当的结点
	// 2.创建一个辅助结点【跑龙套,帮忙】
	temp := head
	flag := true
	// 让插入的结点的no和temp的下一个结点的no比较
	for {
		if temp.next == nil { //说明到链表的最后
			break
		} else if temp.next.no >= newHeroNode.no {
			// 说明newHeroNode就应该插入到temp后面
			break
		} else if temp.next.no == newHeroNode.no {
			// 说明我们链表中已经有这个no,就不插入
			flag = false
			break
		}
		temp = temp.next
	}

	if !flag {
		fmt.Println("抱歉,已经存在no=", newHeroNode.no)
		return
	} else {
		newHeroNode.next = temp.next
		temp.next = newHeroNode
	}
}
  1. 参数:传入头结点和新节点指针地址
  2. 辅助变量为头结点,标志位flag为true
  3. 循环找到链表的最后,到链表的最后跳出,继续循环执行下一个节点
  4. 让插入节点的no和temp比较大小,说明newHeroNode就应该插入到temp后面
  5. 让插入节点的no和temp比较相等,相等就说明已经有相同的no,不插入,flag为false,跳出
  6. 判断标志位给出no重复提示,否则,插入新节点

删除

  1. 循环找到要删除节点的no,和temp的下一个节点的no比较
  2. 找到后改标志位跳出,判断标志位删除 temp.next = temp.next.next

双向链表

一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。

img

环形链表

约瑟夫问题

标签:约瑟夫,结点,temp,no,next,链表,数据结构,节点
来源: https://www.cnblogs.com/gdf456/p/15834003.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有