BUAA OO 2021 第4單元總結 & 課程總結
阿新 • • 發佈:2021-06-26
class Node():
def init(self,item):
self.item = item
self.next = None
class Link():
#構建一個空連結串列
def init(self):
self.head = None
#每次都是向連結串列的頭部新增節點(insert(0))
def addByHead(self,item):
#建立一個新的節點物件
node =Node(item)
node.next = self.head
self.head = node
#遍歷連結串列
def travel(self): cur = self.head while cur: print(cur.item) cur = cur.next def isEmpty(self): return self.head == None def append(self,item): node = Node(item) if self.isEmpty(): #連結串列為空的操作 self.head = node return #連結串列為非空的操作 cur = self.head pre = None #永遠指向cur前一個節點 while cur: pre = cur cur = cur.next #迴圈結束後,pre一定指向的是連結串列中最後一個節點 pre.next = node def size(self): count = 0 cur = self.head while cur: count +=1 cur = cur.next return count def insertNode(self,pos,item): if pos == 0 : self.addHead(item) return node = Node(item) pre = None cur = self.head for i in range(pos): pre = cur cur = cur.next pre.next = node node.next =cur def removeNode(self,item): cur = self.head pre =None #如果刪除的是第一個節點 if item == self.head.item: self.head = self.head.next return #刪除的非第一個節點 while cur: pre = cur cur = cur.next if cur.item == item: pre.next = cur.next return def reverseLink(self): pre = None cur = self.head nextNode = cur.next while True: cur.next = pre pre = cur cur = nextNode if cur == None: break else: nextNode = cur.next self.head = pre
link = Link()
link.addHead(1)
link.addHead(2)
link.addHead(3)
link.addHead(4)
link.removeNode(40)
link.travel()