算法与数据结构——用Python实现简单单链表
算法与数据结构——用Python实现简单单链表
目前仅支持单链表的创建、长度查询、输出、任意位置的插入、指定元素的删除操作,后续会增加更多功能
1 class Node(object): 2 """单个节点""" 3 4 def __init__(self, data): 5 """数据域""" 6 self.data = data 7 """指针域""" 8 self.next = None 9 10 11 class SingleLinkList(object): 12 """单链表""" 13 14 def __init__(self, node=None): 15 self.__head = node 16 17 def is_empty(self): 18 """查询链表是否为空""" 19 return self.__head is None 20 21 def length(self): 22 """返回单链表的长度""" 23 i = self.__head 24 count = 0 25 while i: 26 count += 1 27 i = i.next 28 return count 29 30 def travel(self): 31 i = self.__head 32 while i: 33 print(i.data, end=' ') 34 i = i.next 35 print() 36 37 def add(self, elem): 38 """头插法""" 39 node = Node(elem) 40 node.next = self.__head 41 self.__head = node 42 43 def append(self, elem): 44 """尾插法""" 45 node = Node(elem) 46 if self.is_empty(): 47 self.__head = node 48 else: 49 i = self.__head 50 while i.next: 51 i = i.next 52 i.next = node 53 54 def insert(self, elem, pos): 55 """在指定位置插入一个节点""" 56 node = Node(elem) 57 if pos == 0: 58 self.add(elem) 59 elif pos > (self.length() - 1): 60 self.append(elem) 61 elif pos < 0: 62 print("非法的插入位置,将取插入位置的绝对值进行插入") 63 pos = abs(pos) 64 self.insert(elem, pos) 65 else: 66 count = 1 67 i = self.__head 68 while count: 69 if count == pos: 70 node.next = i.next.next 71 i.next = node 72 break 73 i = i.next 74 count += 1 75 76 def remove(self, elem): 77 """删除一个节点""" 78 i = self.__head 79 if self.is_empty(): 80 return 81 count = 0 82 if i.data == elem: 83 self.__head = i.next 84 else: 85 while i.next: 86 if i.next.data == elem: 87 i.next = i.next.next 88 return count + 1, elem 89 i = i.next 90 count = count + 1 91 92 93 if __name__ == '__main__': 94 A = SingleLinkList() 95 print(A.length()) 96 A.travel() 97 A.append(20) 98 A.append(30) 99 A.append(40) 100 A.append(60) 101 A.append(70) 102 print(A.length()) 103 A.travel() 104 A.add(10) 105 print(A.length()) 106 A.travel() 107 A.insert(0, 0) 108 A.insert(50, 5) 109 A.insert(100, 20) 110 A.travel() 111 print(A.length()) 112 A.remove(20) 113 print(A.length()) 114 A.travel()
本文来自博客园,作者:刘大炮不挂科,转载请注明原文链接:https://www.cnblogs.com/LiuDaPao2333/p/16010110.html

浙公网安备 33010602011771号