python数据结构学习笔记-2016-11-07-02-环形链表
来源:互联网 发布:实惠猪软件多少钱 编辑:程序博客网 时间:2024/06/05 11:29
9.2 环形链表
环形链表(circlar linked list)将所有结点组织成环形。与单链表不同的是,最后一个结点的next指针指向首元结点。(首元结点的prev指针指向最后一个结点。)
通常情况下,可以使用一个外部指针指向最后一个结点,方便向前遍历或者向后遍历。
# 遍历def traverse(listRef): curNode = listRef # curNode设定为最后一个结点 done = listRef is None: # 循环条件 while not done: curNode = curNode.next print curNode.data done = curNode is listRef
搜索
搜索需要遍历,注意遍历可能提前结束,因此循环条件要修改。
# 搜索,假定链表def searchCircularList(listRef, target): curNode = listRef done = listRef is None while not done: curNode = curNode.next if curNode.data == target: return True else: done = curNode is listRef or curNode.data > target # 注意循环条件 return False
添加结点分四种情况:
- 空链表;
- 在第一个结点前插入,即listRef指向的结点的下一个结点处插入;
- 在最后一个结点插入,即在listRef指向的结点处插入;
- 在中间插入。
# 添加结点def insert(listRef, value): newnode = ListNode(value) if listRef is None: # 空链表 listRef = newnode elif value < listRef.next.data: # 在表头插入 newnode.next = listRef.next listRef.next = newnode elif value > listRef.data: # 在表尾插入 newnode.next = listRef.next listRef.next = newnode listRef = newnode else: predNode = None curNode = listRef done = listRef is None while not done: predNode = curNode predNode = curNode.next done = curNode is listRef or curNode.data > target newnode.next = curNode predNode.next = newnode
删除元素
0 0
- python数据结构学习笔记-2016-11-07-02-环形链表
- 数据结构:环形链表
- python数据结构学习笔记-2016-11-07-03-多重链表以及相应的迭代器
- python数据结构学习笔记-2016-11-02-02-迷宫问题
- python数据结构学习笔记-2016-11-07-01-双链表
- python数据结构学习笔记-2016-11-05-02-优先级队列
- python数据结构学习笔记-2016-11-24-02-基数排序
- python数据结构学习笔记-2016-11-26-02-树结构
- python数据结构学习笔记-2016-10-14-02-python列表
- python数据结构学习笔记-2016-10-28-02-使用链表实现稀疏矩阵
- python数据结构学习笔记-2016-11-26-01-链表排序
- python学习笔记-数据结构
- python数据结构学习笔记-2016-11-11-01-递归
- python数据结构学习笔记-2016-10-15-02-生命游戏
- python数据结构学习笔记-2016-10-17-02-映射
- python数据结构学习笔记-2016-10-23-02-排序
- python数据结构学习笔记-2016-11-05-03-计算机仿真
- python数据结构学习笔记-2016-11-09-01-文本编辑器
- linux下 eth0变成eth1的原因
- 组成c语言的基本元素
- 超级简单的ButterKnife使用技巧
- 11.7当前时间 休息 开机启动
- 运算放大器の文档
- python数据结构学习笔记-2016-11-07-02-环形链表
- java接口和类的区别Java 接口
- LUT函数的使用——opencv
- ubuntu 16.04安装WPS总结
- 一天一条Linux指令-make
- 【UML】--初识
- UVA11651Krypton Number System(DP+矩阵快速幂)
- Django框架学习-Model篇
- 坚持#第89天~胡晨晨会给予我力量!