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