1. 程式人生 > >python實現單鏈表

python實現單鏈表

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 = node
else: 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實現單鏈表