class Node():
def __init__(self, dataval=None):
self.dataval = dataval
self.nextval = None class SLinkedList():
def __init__(self):
self.headval = None # 遍历链表
def listprint(self):
printval = self.headval
while printval is not None:
print(printval.dataval)
printval = printval.nextval # 在链表最前插入
def AtBegin(self, newdata):
NewNode = Node(newdata)
NewNode.nextval = self.headval
self.headval = NewNode # 在链表最后追加
def AtEnd(self, newdata):
NewNode = Node(newdata)
if self.headval is None:
self.headval = NewNode
return
laste = self.headval
while laste.nextval:
laste = laste.nextval
laste.nextval = NewNode # 某个节点后插入节点
def Atbetween(self, middle_node, newdata):
if middle_node is None:
print("The mentioned node is absent")
return
NewNode = Node(newdata)
NewNode.nextval = middle_node.nextval
middle_node.nextval = NewNode # 删除节点
def RemoveNode(self, RemoveKey):
Headval = self.headval
if Headval is None:
if Headval.dataval == RemoveKey:
self.headval = Headval.nextval
Headval = None
return
while Headval:
if Headval.dataval == RemoveKey:
break
prev = Headval
Headval = Headval.nextval
if Headval is None:
return
prev.nextval = Headval.nextval
Headval = None list1 = SLinkedList()
list1.headval = Node('Mon')
e2 = Node("Tue")
list1.headval.nextval = e2
e3 = Node("Wed")
e2.nextval = e3 list1.listprint()
print('--------1----------')
list1.AtBegin('sun')
list1.listprint()
print('---------2------------')
list1.AtEnd('stu')
list1.listprint()
print('----------3-----------')
list1.Atbetween(list1.headval.nextval, 'fri')
list1.listprint()
print('-----------4-----------')
list1.RemoveNode('Wed')
list1.listprint()

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

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

最新文章

  1. 【转】Source Insight的Alt + W键不能使用的解决办法
  2. SpringCloud Sleuth 使用
  3. C# 模拟键盘操作--SendKey(),SendKeys()
  4. win环境安装python爬虫框架scrapy
  5. JavaScript——事件模型
  6. angularJs指令执行的机制==大概的三个阶段
  7. 【mysql】一个关于order by排序的问题
  8. Multi-Device Hybrid Apps for Visual Studio CTP2.0
  9. JavaScript break和continue 跳出循环
  10. C# 关于委托和事件的妙文
  11. iOS UIKit:TableView之单元格配置(2)
  12. .NET MV4 Remote远程验证注意事项及案例
  13. Javascript 正确用法 二
  14. 金句: "對比MBA學位,我們更需要PSD學位的人!" Poor, Smart and Deep Desire to… | consilient_lollapalooza on Xanga
  15. Spring中IOC和AOP的理解
  16. mybatis设置callSettersOnNulls解决返回字段不全的问题
  17. 2019年春季学期第三周作业 ----PTA作业
  18. bzoj1195 神奇的ac自动机+状态压缩dp
  19. shell bash-shell
  20. cbow与skip-gram

热门文章

  1. UOJ228 简单数据结构练习题
  2. Hdu 5358 First One (尺取法+枚举)
  3. Lightoj 1071 - Baker Vai (双线程DP)
  4. 洛谷 P1816 忠诚
  5. Liferay门户部署至Apusic Application Server域
  6. E. Comments dfs模拟
  7. jquery判断checkbox最多选几个
  8. Spring日期格式初始化
  9. Apollo源码搭建调试看一文就够
  10. html添加css——样式选择器