interconnected network nodes glowing blue, digital technology background, modern clean design

Python 資料結構入門:理解與實作節點 (Nodes) (01)

在學習資料結構時,Node(節點) 是最基本的組成單元,就像建築物的磚塊一樣重要。理解節點的概念,能為進一步學習鏈結串列、堆疊、佇列、樹和圖等資料結構打下堅實基礎。


掌握節點的設計與操作,不僅能幫助我們理解資料結構的運作方式,也能提升程式設計的思維能力。

interconnected network nodes glowing blue, digital technology background, modern clean design

什麼是 Node(節點)?

基本定義

Node 是一個獨立的資料容器,每個節點通常包含兩個主要部分:

  1. 資料 (Data):儲存實際的值,例如數字、字串或物件。
  2. 連結 (Link/Pointer):指向下一個節點的參考。

終止標記

當鏈結到最後一個節點時,連結設為 None,代表結束。

Python節點實現

我們將使用包含數據和一個指向另一個節點連結的基本節點。節點的數據在創建時指定且不可變更,而連結在初始化時是可選的,可以後續更新。

  • 沒有指標:Python 不像 C/C++ 使用指標,我們透過物件參考來實現。
  • 物件屬性:使用類別屬性儲存資料和連結。
  • 動態連結:可以在程式執行時,隨時修改節點的連結關係。
Python class diagram showing Node structure with value and link_node attributes

基本 Node 類別

class Node:
    def __init__(self, value, link_node=None):
        self.value = value          # 資料
        self.link_node = link_node  # 下一個節點(預設 None)

這是一個最簡單的 Node 類別,包含兩個核心屬性:

  • value:存放資料(不可變)。
  • link_node:指向下一個節點(可變)。

Getter 方法:取得資料

def get_value(self):
    return self.value

def get_link_node(self):
    return self.link_node

get_value()

回傳節點儲存的實際資料值

get_link_node()

回傳指向下一個節點的參考

Getter 方法提供安全的方式來存取節點的內部資料,遵循封裝的物件導向設計原則。

Setter 方法:更新連結

def set_link_node(self, link_node):
    self.link_node = link_node

為什麼只有連結可以更新?

資料一旦設定就不應該改變,但連結需要靈活調整來建立不同的資料結構排列。

安全性考量

限制資料的修改可以避免意外的資料損壞,同時保持結構調整的彈性。

建立節點實例

建立節點與鏈結

node1 = Node("A")
node2 = Node("B")
node3 = Node("C")

建立連結關係

node1.set_link_node(node2)
node2.set_link_node(node3)

此時,我們得到一個 A → B → C 的鏈結結構。

遍歷節點

設定起始點

從第一個節點開始遍歷

檢查是否結束

當遇到 None 時停止遍歷

移動到下一個

透過 get_link_node() 繼續

current = node1
while current is not None:
    print(current.get_value())
    current = current.get_link_node()

輸出:

A
B
C
three connected nodes labeled A B C with arrows

Nodes 的應用場景

1. 鏈結串列 (Linked List)

由節點依序連接,形成線性結構。

2. 堆疊 (Stack)

後進先出(LIFO),用於函數呼叫或運算處理。

3. 佇列 (Queue)

先進先出(FIFO),常見於排程或緩衝區設計。

4. 樹 (Tree)

階層式結構,例如檔案系統、分類器。

5. 圖 (Graph)

表示複雜網路關係,如社交網路或路徑規劃。

結語

節點是所有進階資料結構的基石。當你能夠靈活建立與操作節點後,就能進一步學習 Linked List(鏈結串列) 的完整操作,並逐步邁向更複雜的結構。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

High Quality

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.

Fast Delivery

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.

Best Warranty

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.