1. class Node():
  2. def __init__(self, dataval=None):
  3. self.dataval = dataval
  4. self.nextval = None
  5.  
  6. class SLinkedList():
  7. def __init__(self):
  8. self.headval = None
  9.  
  10. # 遍历链表
  11. def listprint(self):
  12. printval = self.headval
  13. while printval is not None:
  14. print(printval.dataval)
  15. printval = printval.nextval
  16.  
  17. # 在链表最前插入
  18. def AtBegin(self, newdata):
  19. NewNode = Node(newdata)
  20. NewNode.nextval = self.headval
  21. self.headval = NewNode
  22.  
  23. # 在链表最后追加
  24. def AtEnd(self, newdata):
  25. NewNode = Node(newdata)
  26. if self.headval is None:
  27. self.headval = NewNode
  28. return
  29. laste = self.headval
  30. while laste.nextval:
  31. laste = laste.nextval
  32. laste.nextval = NewNode
  33.  
  34. # 某个节点后插入节点
  35. def Atbetween(self, middle_node, newdata):
  36. if middle_node is None:
  37. print("The mentioned node is absent")
  38. return
  39. NewNode = Node(newdata)
  40. NewNode.nextval = middle_node.nextval
  41. middle_node.nextval = NewNode
  42.  
  43. # 删除节点
  44. def RemoveNode(self, RemoveKey):
  45. Headval = self.headval
  46. if Headval is None:
  47. if Headval.dataval == RemoveKey:
  48. self.headval = Headval.nextval
  49. Headval = None
  50. return
  51. while Headval:
  52. if Headval.dataval == RemoveKey:
  53. break
  54. prev = Headval
  55. Headval = Headval.nextval
  56. if Headval is None:
  57. return
  58. prev.nextval = Headval.nextval
  59. Headval = None
  60.  
  61. list1 = SLinkedList()
  62. list1.headval = Node('Mon')
  63. e2 = Node("Tue")
  64. list1.headval.nextval = e2
  65. e3 = Node("Wed")
  66. e2.nextval = e3
  67.  
  68. list1.listprint()
  69. print('--------1----------')
  70. list1.AtBegin('sun')
  71. list1.listprint()
  72. print('---------2------------')
  73. list1.AtEnd('stu')
  74. list1.listprint()
  75. print('----------3-----------')
  76. list1.Atbetween(list1.headval.nextval, 'fri')
  77. list1.listprint()
  78. print('-----------4-----------')
  79. list1.RemoveNode('Wed')
  80. list1.listprint()

参考图解更容易理解:https://www.cnblogs.com/Knight-of-Dulcinea/p/9945810.html

02-看图理解数据结构与算法系列(单向链表)

Python数据结构--链表的更多相关文章

  1. Python—数据结构——链表

    数据结构——链表 一.简介 链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构.由一系列节点组成的元素集合.每个节点包含两部分,数据域item和指向下一个节 ...

  2. Python 数据结构 链表

    什么是时间复杂度 时间频度:一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才知道.但是我们不可能也没有必要对每一个算法都进行上机测试,只需要知道那个算法花费的时间多,那个算法花费得 ...

  3. python数据结构链表之单向链表

    单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值. 表元素域ele ...

  4. Python数据结构——链表的实现

    链表由一系列不必在内存中相连的结构构成,这些对象按线性顺序排序.每个结构含有表元素和指向后继元素的指针.最后一个单元的指针指向NULL.为了方便链表的删除与插入操作,可以为链表添加一个表头. 删除操作 ...

  5. python数据结构与算法——链表

    具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向 ...

  6. Python数据结构之单链表

    Python数据结构之单链表 单链表有后继结点,无前继结点. 以下实现: 创建单链表 打印单链表 获取单链表的长度 判断单链表是否为空 在单链表后插入数据 获取单链表指定位置的数据 获取单链表指定元素 ...

  7. python数据结构之链表(一)

    数据结构是计算机科学必须掌握的一门学问,之前很多的教材都是用C语言实现链表,因为c有指针,可以很方便的控制内存,很方便就实现链表,其他的语言,则没那么方便,有很多都是用模拟链表,不过这次,我不是用模拟 ...

  8. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  9. 算法之python创建链表实现cache

    算法之python创建链表实现cache 本节内容 问题由来 解决思路 实现代码 总结 1. 问题由来 问题起因于朋友的一次面试题,面试公司直接给出两道题,要求四十八小时之内做出来,语言不限,做出来之 ...

随机推荐

  1. python服务之flask

    前言: 关于python flask 的介绍.指导.案例,网络上比比皆是.这里参考官网:http://www.pythondoc.com/flask/index.html 你可能不知道的flask服务 ...

  2. pycharm版本选择并安装

    pycharm版本选择并安装 一.  初学python最好选择专业版的,因为经测试社区版的很多插件都没有安装,如果自己安装的话会非常麻烦,而且很多根本就安装不上,比如说css,javascript,d ...

  3. 51nod 1088 最长回文子串

    1088 最长回文子串 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串. 输入一 ...

  4. 字符串处理 BestCoder Round #43 1001 pog loves szh I

    题目传送门 /* 字符串处理:是一道水题,但是WA了3次,要注意是没有加'\0'的字符串不要用%s输出,否则在多组测试时输出多余的字符 */ #include <cstdio> #incl ...

  5. angular2+typescript在asp.net MVC Web项目上的实现

    网上现在还没有关于angular2+typescript在asp.net mvc web项目上的实现的系统介绍,这里我也只是探索到了一个简单的方式,还有很多问题没能解决.但是能有个好的开头也值得记录一 ...

  6. 转 ORA-00054 的解决方法

    统有一个不用的索引,想删除这个索引, SQL> drop index GPSTIME_GLOBAL_INDEX  2  /drop index GPSTIME_GLOBAL_INDEX      ...

  7. java awt 乱码问题

    问题:项目环境是utf-8,awt的元件比如label一直乱码 解决: (eclipse) 1.在你的具有main函数的类也即你应用运行的主类上点击右键,选择Run As中的Run Configura ...

  8. VMware虚拟机中涉及的3种常见网络模式

    桥接模式.这种模式下,虚拟机和物理机连的是同一个网络,虚拟机和物理机是并列关系,地位是相当的.比如你家如果有用路由器,那么你的电脑和你的手机同时连接这个路由器提供的Wi-Fi,那么它们的关系就是这种模 ...

  9. js跨域请求的5中解决方式

    跨域请求数据解决方案主要有如下解决方法: ? 1 2 3 4 5 JSONP方式 表单POST方式 服务器代理 Html5的XDomainRequest Flash request 分开说明: 一.J ...

  10. 前端Unicode转码的好处

    站长工具支持Unicode转码:http://tool.chinaz.com/Tools/Unicode.aspx (这是一个网页标题)转码后 ------>变为:\u8fd9\u662f\u4 ...