1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
class (object): def __init__(self, item): self.elem = item self.next = None self.prev = None class DoubleLinkList(object): def __init__(self, node=None): self.__head = node def is_empty(self): return self.__head is None def length(self): cur = self.__head count = 0 while cur != None: count += 1 cur = cur.next return count def travel(self): cur = self.__head while cur != None: print(cur.elem, end=" ") cur = cur.next print("") def add(self, item): node = Node(item) node.next = self.__head self.__head = node node.next.prev = node def append(self, item): node = Node(item) if self.is_empty(): self.__head = node else: cur = self.__head while cur.next != None: cur = cur.next cur.next = node node.prev = cur def insert(self, pos, item): if pos <= 0: self.add(item) elif pos > (self.length()-1): self.append(item) else: cur = self.__head count = 0 while count < pos: count += 1 cur = cur.next node = Node(item) node.next = cur node.prev = cur.prev cur.prev.next = node cur.prev = node def remove(self, item): cur = self.__head while cur != None: if cur.elem == item: if cur == self.__head: self.__head = cur.next if cur.next: cur.next.prev = None else: cur.prev.next = cur.next if cur.next: cur.next.prev = cur.prev break else: cur = cur.next def search(self, item): cur = self.__head while cur != None: if cur.elem == item: return True else: cur = cur.next return False
if __name__ == "__main__": li = DoubleLinkList() print(li.is_empty()) print(li.length()) li.append(1) print(li.is_empty()) print(li.length()) li.append(2) li.append(4) li.add(8) li.append(5) li.insert(-1,9) li.travel() li.insert(4,11) li.travel() li.insert(15,12) li.travel() li.remove(9) li.travel() li.remove(4) li.travel() li.remove(12) li.travel()
|
近期评论