python實現單鏈表
阿新 • • 發佈:2019-05-11
fir 元素 iter while 添加 none __next__ turn pop
class Chain(): def __init__(self): self.first = None self.length = 0 def is_empty(self): """是否為空""" return self.first == None def add(self, val): """頭部添加""" node = Node(val) temp = self.first node.next = temp self.first= node self.length += 1 def append(self, val): """尾部添加""" node = Node(val) if self.first: temp = self.first mid = None while temp: mid = temp temp = temp.next mid.next = nodeelse: self.first = node self.length += 1 def insert(self, item, val): """插入元素""" node = Node(val) temp, index = self.first, 0 if item == 0: node.next, self.first = self.first, node self.length += 1 else:while temp: if index+1 == item: node.next, temp.next = temp.next, node self.length += 1 break index += 1 temp = temp.next def __len__(self): """鏈表長度""" return self.length @property def len_2(self): """鏈表長度(時間復雜度O(n))""" if not self.first: return 0 else: temp = self.first length = 1 while temp.next: length += 1 temp = temp.next return length def pop(self): """刪除尾部元素(有錯誤)""" temp = self.first mid = None while temp.next: mid, temp = temp, temp.next if mid: mid.next = None self.length -= 1 def remove(self, item): """刪除某一位置元素""" temp, index = self.first, 0 if item == 0: if self.first: self.first = self.first.next self.length -= 1 while temp: if index + 1 == item: temp.next = temp.next.next self.length -= 1 index += 1 temp = temp.next def bianli(self): """遍歷鏈表""" temp = self.first while temp: print(temp.value) temp = temp.next def __iter__(self): pass def __next__(self): pass class Node(): def __init__(self, val): self.value = val self.next = None
python實現單鏈表