1. 程式人生 > 程式設計 >python如何對連結串列操作

python如何對連結串列操作

連結串列

連結串列(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 連結串列操作的資料請關注我們其它相關文章!