1. 程式人生 > 其它 >BUAA OO 2021 第4單元總結 & 課程總結

BUAA OO 2021 第4單元總結 & 課程總結

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()