iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Software Development

闖進Python異世界系列 第 16

[Day 16] 闖進Python異世界 - Singly Linked List 2/3

  • 分享至 

  • xImage
  •  

今日目標:

  1. pop_front(self) : 刪除第一個節點
  2. push_back(self, data) : 新增節點到最後方
  3. pop_back(self) : 刪除最後一個節點

定義 pop_front()

從下面的程式碼可以看到,這個類別方法被分成 3 個情況來討論:

  1. 鏈結串列本身是空的:沒有資料內容
  2. 鏈結串列只有一個節點:刪除該節點後,要將 head 設為 None
  3. 鏈結串列包含多個節點:將 head 向後移動
def pop_front(self):
    if self.head == None: 
        pass
    elif self.head.next == None:
        self.head = None
    else:
        self.head = self.head.next

定義 push_back(self, data)

從下面的程式碼可以看到,這個類別方法被分成 3 個情況來討論:

  1. 鏈結串列本身是空的:head 設為新節點
  2. 鏈結串列包含節點:找到最後一個節點,將他新增在最後
def push_back(self, data):
    if self.head == None: 
        self.head = Node(data)
    elif self.head.next == None:
        self.head = None
    else:
        cur = self.head
        while (cur.next != None):
            cur = cur -> next
        cur -> next = Node(data)

定義 pop_back()

從下面的程式碼可以看到,這個類別方法被分成 3 個情況來討論:

  1. 鏈結串列本身是空的:沒有資料內容
  2. 鏈結串列只有一個節點:刪除該節點後,要將 head 設為 None
  3. 鏈結串列包含多個節點:找到最後兩個節點,倒數第二個節點的 next 設為 None
def pop_back(self):
    if self.head == None:
        return None
    if self.head.next == None:
        self.head = None
        return None
    cur = self.head
    prev = None
    while cur.next != None:
        prev = cur
        cur = cur.next
    prev.next = None

鏈結串列的四種基本操作大概介紹完了,下一篇我們來介紹怎麼輸出所有鏈結串列的資料,以及進階的類別方法。


上一篇
[Day 15] 闖進Python異世界 - Singly Linked List 1/3
下一篇
[Day 17] 闖進Python異世界 - Singly Linked List 3/3
系列文
闖進Python異世界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言