数据结构与算法-python描述-单链表
# coding:utf-8# 单链表的相关操作:
# is_empty() 链表是否为空
# length() 链表长度
# travel() 遍历整个链表
# add(item) 链表头部添加元素
# append(item) 链表尾部添加元素
# insert(pos, item) 指定位置添加元素
# remove(item) 删除节点
# search(item) 查找节点是否存在class Node(object):"""节点"""def __init__(self, elem):# 数据区self.elem = elem# 指向下一个节点self.next = Noneclass SingleLikedList(object):"""单链表"""def __init__(self, node = None):# 头节点self.__head = nodedef is_empty(self):"""链表是否为空"""return self.__head is Nonedef length(self):"""链表长度"""cur = self.__headcount = 0while cur != None:count += 1cur = cur.nextreturn countdef travel(self):"""遍历整个链表"""cur = self.__headwhile cur != None:print(cur.elem, end=" ")cur = cur.nextprint("")def add(self, item):"""链表头部添加元素,头插法"""# 创建一个Nodenode = Node(item)node.next = self.__headself.__head = nodedef append(self, item):"""链表尾部添加元素,尾插法"""# 创建一个Nodenode = Node(item)# 如果链表为空if self.is_empty():self.__head = nodeelse:cur = self.__headwhile cur.next != None:cur = cur.nextcur.next = nodedef insert(self, pos, item):"""指定位置添加元素:param pos 从0开始"""if pos <= 0:self.add(item)elif pos > (self.length() - 1):self.append(item)else:pre = self.__headcount = 0# 1 2 3 4 5 6# pos = 3, item = 9while count < (pos - 1):count += 1pre = pre.next# 当循环结束后,pre指向要插入位置的前一个,即pos-1的位置node = Node(item)node.next = pre.nextpre.next = nodedef remove(self, item):"""删除节点"""pre = Nonecur = self.__headwhile cur != None:if cur.elem == item:# 判断此节点是否为头节点if cur == self.__head:self.__head = cur.nextelse:pre.next = cur.nextbreakelse:pre = curcur = cur.nextdef search(self,item):"""查找节点是否存在"""cur = self.__headwhile cur != None:if cur.elem == item:return Trueelse:cur = cur.nextreturn Falseif __name__ == "__main__":sll = SingleLikedList()print("initialized...")print("is_empty:", sll.is_empty())print("length:", sll.length())sll.append(1)print("is_empty:", sll.is_empty())print("length:", sll.length())sll.append(2)sll.append(3)sll.append(4)sll.append(5)sll.append(6)sll.add(7)sll.travel()print("before insert exist -5:",sll.search(-5))sll.insert(-5, -5)print("after insert exist -5:", sll.search(-5))sll.travel()
转载于:https://www.cnblogs.com/coderwjq/p/7305325.html
数据结构与算法-python描述-单链表相关推荐
- 数据结构与算法 完整版单链表(附GIF)
因为博主认为单链表是非常重要的数据结构,能够熟练使用单链表的话后面的数据结构会越学越轻松,所以博主就把这篇博客做的细致一点,不是很好懂的地方做成 gif 动画,希望大家能理解期中代码的含义 学习链表的 ...
- 数据结构与算法python描述_数据结构与算法——Python语言描述.pdf
数据结构与算法--Python语言描述.pdf 欢迎加入非盈利Python编学习交流程QQ群783462347,群里免费提供500+本Python书籍! 欢迎加入非盈利Python编程学习交流程QQ群 ...
- 【python】数据结构和算法 + 浅谈单链表与双链表的区别
有这么一句话说"程序=数据结构+算法",也有人说"如果把编程比作做菜,那么数据结构就好比食材(菜),算法就好比厨艺(做菜的技巧)". 当然这是笼统的说法,不过也 ...
- 【数据结构与算法】判断单链表是否有环的算法
带环链表 这里的带环单链表可不是环形单链表,这个环可能是我们不想要的,所以需要检测. 我们就不假设有一个打结状的环了,那样跑到哪里去也不清楚,这里的"带环链表",环必然是在末端. ...
- 裘宗燕-数据结构与算法python描述-ppt及源代码
免费共享 https://pan.baidu.com/s/1__aqzzGDNBGgPIhuErv-8w
- 《数据结构与算法 Python语言描述》 读书笔记
已经发布博客 <数据结构与算法 Python语言描述> 读书笔记 第二章 抽象数据类型和Python类 2.1 抽象数据类型abstract data type:ADT 2.1.1 使用编 ...
- 数据结构python课后答案_数据结构与算法:Python语言描述 1~5章课后习题
数据结构与算法:Python语言描述 1~5章课后习题 发布时间:2018-07-19 20:42, 浏览次数:1885 , 标签: Python MarkDown语法写的,不知道为啥上传到CSDN不 ...
- python基础教程第三版豆瓣-数据结构与算法必读书单吐血整理推荐【附网盘链接】...
前言:技术书阅读方法论 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用. 对于每一章的知识,先阅读标题, ...
- (数据结构)1.实现顺序表的各种基本运算的算法 2.实现单链表的各种基本运算的算法
实验内容 1.编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型ElemType为char),并在此基础上设计一个程序exp2-1.cpp完成以下功能. ( ...
最新文章
- 分享Silverlight/WPF/Windows Phone一周学习导读(07月25日-07月31日)
- linux命令学习记录一
- 设计一个程序实现两个任意长的整数的求和运算_深入 Python (7) Karatsuba 实现长整数乘法...
- Linux内核配置系统浅析
- SimpleITK使用深度学习识别肺癌CT DICOM数据集
- Oracle杂谈二 SQL*PLUS命令的使用大全
- Django怎么配置mysql数据库_Django如何配置mysql数据库
- Ubuntu10.04设备未托管
- mysql数据倾斜_sqoop数据倾斜解决实战
- 关于JavaScript中return的使用情况
- d3学习day3 --y轴添加文本标签
- 最大流(Max Flow)
- 大圆航线、恒向线绘制
- ricequant股东人数数据获取方式
- 【Numpy入门实例:图像的手绘效果】
- Origin | 堆叠柱状图 | 多列(分组)堆积柱状图
- python如何执行部分代码_python如何运行代码
- 权威发布:新一代人工智能发展白皮书(2017)
- isis学不到looback口的路由_随手装了台LEDE软路由,测试WAN口能否跑万兆(上篇)...
- ps4jump大乱斗服务器维护,Jump大乱斗新人实用技巧分享 新手注意事项介绍