python如何對連結串列操作
阿新 • • 發佈:2020-10-12
連結串列
連結串列(linked list)是由一組被稱為結點的資料元素組成的資料結構,每個結點都包含結點本身的資訊和指向下一個結點的地址。
由於每個結點都包含了可以連結起來的地址資訊,所以用一個變數就能夠訪問整個結點序列。
也就是說,結點包含兩部分資訊:一部分用於儲存資料元素的值,稱為資訊域;另一部分用於儲存下一個資料元素地址的指標,稱為指標域。連結串列中的第一個結點的地址儲存在一個單獨的結點中,稱為頭結點或首結點。連結串列中的最後一個結點沒有後繼元素,其指標域為空。
程式碼
class Node(): '建立節點' def __init__(self,data): self.data = data self.next = None class LinkList(): '建立列表' def __init__(self,node): '初始化列表' self.head = node #連結串列的頭部 self.head.next = None self.tail = self.head #記錄連結串列的尾部 def add_node(self,node): '新增節點' self.tail.next = node self.tail = self.tail.next def view(self): '檢視列表' node = self.head link_str = '' while node is not None: if node.next is not None: link_str += str(node.data) + '-->' else: link_str += str(node.data) node = node.next print('The Linklist is:' + link_str) def length(self): '列表長度' node = self.head count = 1 while node.next is not None: count += 1 node = node.next print('The length of linklist are %d' % count) return count def delete_node(self,index): '刪除節點' if index + 1 > self.length(): raise IndexError('index out of bounds') num = 0 node = self.head while True: if num == index - 1: break node = node.next num += 1 tmp_node = node.next node.next = node.next.next return tmp_node.data def find_node(self,index): '檢視具體節點' if index + 1 > self.length(): raise IndexError('index out of bounds') num = 0 node = self.head while True: if num == index: break node = node.next num += 1 return node.data node1 = Node(3301) node2 = Node(330104) node3 = Node(330104005) node4 = Node(330104005052) node5 = Node(330104005052001) linklist = LinkList(node1) linklist.add_node(node2) linklist.add_node(node3) linklist.add_node(node4) linklist.add_node(node5) linklist.view() linklist.length()
以上就是python如何對連結串列操作的詳細內容,更多關於python 連結串列操作的資料請關注我們其它相關文章!