iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Software Development

闖進Python異世界系列 第 15

[Day 15] 闖進Python異世界 - Singly Linked List 1/3

  • 分享至 

  • xImage
  •  

今日目標:

  1. 定義 class Node:節點的組成
  2. 定義 class SLL:單向鏈結串列的組成
  3. push_front(data):從頭新增節點

定義 class Node

單向鏈結串列的節點包含一個鏈結(指向下一個節點)、資料內容。
在新增節點時,我們保證會給定資料內容,因此在設計建構子時,要傳入一個參數 data
因為不確定下一個節點為何,所以我們直接設定鏈結 next 存的值是 None

class Node:
    def __init__(self, data):
        self.data = data # 節點的資料
        self.next = None # 節點的鏈結

定義 class SLL

鏈結串列是由很多節點組成的,但是最重要的是第一個節點,我們需要一個變數 head 儲存。
最開始鏈結串列沒有任何節點,所以 head 初始化為 None
為了方便,我們也可以多宣告一個紀錄鏈結串列長度的變數 length

class SLL:
    def __init__(self):
        self.head = None # 鏈結串列的第一個節點
        self.length = 0 # 鏈結串列的長度
    '''
        methods such as push_front(data), ...
    '''

定義 push_front(data)

這個類別方法的用途是「新增節點在鏈結串列最前端」。

這就牽扯到一個問題:head 會不會被改變?
一定會的!因為我們把節點新增在鏈結串列最前端。

這個類別方法的做法大致為:

  1. 新增一個節點,使他的鏈結指向原本的 head
  2. 將新的 head 更正為新的節點
class SLL:
    '''
        pass
    '''
    def push_front(self, data):
        newNode = Node(data)
        newNode.next = self.head
        self.head = newNode

下一篇,我們再來繼續為鏈結串列新增類別方法!


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

尚未有邦友留言

立即登入留言