# 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描述-单链表相关推荐

  1. 数据结构与算法 完整版单链表(附GIF)

    因为博主认为单链表是非常重要的数据结构,能够熟练使用单链表的话后面的数据结构会越学越轻松,所以博主就把这篇博客做的细致一点,不是很好懂的地方做成 gif 动画,希望大家能理解期中代码的含义 学习链表的 ...

  2. 数据结构与算法python描述_数据结构与算法——Python语言描述.pdf

    数据结构与算法--Python语言描述.pdf 欢迎加入非盈利Python编学习交流程QQ群783462347,群里免费提供500+本Python书籍! 欢迎加入非盈利Python编程学习交流程QQ群 ...

  3. 【python】数据结构和算法 + 浅谈单链表与双链表的区别

    有这么一句话说"程序=数据结构+算法",也有人说"如果把编程比作做菜,那么数据结构就好比食材(菜),算法就好比厨艺(做菜的技巧)". 当然这是笼统的说法,不过也 ...

  4. 【数据结构与算法】判断单链表是否有环的算法

    带环链表 这里的带环单链表可不是环形单链表,这个环可能是我们不想要的,所以需要检测. 我们就不假设有一个打结状的环了,那样跑到哪里去也不清楚,这里的"带环链表",环必然是在末端. ...

  5. 裘宗燕-数据结构与算法python描述-ppt及源代码

    免费共享 https://pan.baidu.com/s/1__aqzzGDNBGgPIhuErv-8w

  6. 《数据结构与算法 Python语言描述》 读书笔记

    已经发布博客 <数据结构与算法 Python语言描述> 读书笔记 第二章 抽象数据类型和Python类 2.1 抽象数据类型abstract data type:ADT 2.1.1 使用编 ...

  7. 数据结构python课后答案_数据结构与算法:Python语言描述 1~5章课后习题

    数据结构与算法:Python语言描述 1~5章课后习题 发布时间:2018-07-19 20:42, 浏览次数:1885 , 标签: Python MarkDown语法写的,不知道为啥上传到CSDN不 ...

  8. python基础教程第三版豆瓣-数据结构与算法必读书单吐血整理推荐【附网盘链接】...

    前言:技术书阅读方法论 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用. 对于每一章的知识,先阅读标题, ...

  9. (数据结构)1.实现顺序表的各种基本运算的算法 2.实现单链表的各种基本运算的算法

    实验内容 1.编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型ElemType为char),并在此基础上设计一个程序exp2-1.cpp完成以下功能. ( ...

最新文章

  1. 分享Silverlight/WPF/Windows Phone一周学习导读(07月25日-07月31日)
  2. linux命令学习记录一
  3. 设计一个程序实现两个任意长的整数的求和运算_深入 Python (7) Karatsuba 实现长整数乘法...
  4. Linux内核配置系统浅析
  5. SimpleITK使用深度学习识别肺癌CT DICOM数据集
  6. Oracle杂谈二 SQL*PLUS命令的使用大全
  7. Django怎么配置mysql数据库_Django如何配置mysql数据库
  8. Ubuntu10.04设备未托管
  9. mysql数据倾斜_sqoop数据倾斜解决实战
  10. 关于JavaScript中return的使用情况
  11. d3学习day3 --y轴添加文本标签
  12. 最大流(Max Flow)
  13. 大圆航线、恒向线绘制
  14. ricequant股东人数数据获取方式
  15. 【Numpy入门实例:图像的手绘效果】
  16. Origin | 堆叠柱状图 | 多列(分组)堆积柱状图
  17. python如何执行部分代码_python如何运行代码
  18. 权威发布:新一代人工智能发展白皮书(2017)
  19. isis学不到looback口的路由_随手装了台LEDE软路由,测试WAN口能否跑万兆(上篇)...
  20. ps4jump大乱斗服务器维护,Jump大乱斗新人实用技巧分享 新手注意事项介绍

热门文章

  1. 数集合有多少个TOJ(2469)
  2. iOS开发简单高效的数据存储
  3. Xcode模拟器和真机生成的日志查看(ios必知必会)
  4. SOAP 1.1 - 学习
  5. delphi中指针的用法
  6. C#调用Python模块
  7. Leetcode之javascript解题(No33-34)
  8. vue13过滤器 debounce延迟、limitBy、filterBy、orderBy
  9. 32位CentOS系统安装kernel-PAE支持4g以上内存
  10. 网络信息系统(NIS服务器)