函式參數為 `Node* head`,函式內 `head = new Node(...)` 或 `head->next = ...`,返回後呼叫端 `head` 仍為 `NULL` 或原值。
C/C++ 採用呼叫傳值。`Node* head` 是指標的副本,函式內修改副本指向的記憶體(如 `head->next`)可影響原物件,但修改副本本身(`head = ...`)不影響呼叫端的實參指標。
// 錯誤
void push_wrong(Node* head, int v) { head = new Node(v); }
// 正確:C++ 參考
void push_ref(Node*& head, int v) { head = new Node(v); }
// 正確:C 雙重指標
void push_dptr(Node** head, int v) { *head = new Node(v); }
// 正確:回傳值
Node* push_ret(Node* head, int v) { return new Node(v); }
「函式需要修改指標本身(而非指向的物件)時,必須傳遞指標的地址(雙重指標)或使用 C++ 參考。」這是指標進階的核心考點,也是資料結構實作的必修課。