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-看图理解数据结构与算法系列(单向链表)

 

posted @ 2018-11-20 14:38  浅尝辄止易初心不改难  Views(113)  Comments(0Edit  收藏  举报