小技巧:
對於鍊錶問題,建立頭節點時不知道合適的節點值,因此通常需要先初始化乙個預先指標(偽頭節點) pre,該指標的下乙個節點指向真正的頭結點head。使用預先指標的目的在於鍊錶初始化時無可用節點值。
struct listnode };
listnode* pre =
newlistnode(0
);//0為預先指標的值,pre->next指向head
listnode* current = pre;
//移動current
return pre-
>next;
//返回真實頭節點
例子:
1、演算法題:2. 兩數相加
2、面試題25. 合併兩個排序的鍊錶
1、使用偽頭節點(預先指標)可以在不確定煉表頭節點值的情況下初始化,從而可以進行之後的建立鍊錶過程,但需要返回pre->next
。
頭節點鍊錶
linklist.h ifndef linklist h define linklist h define false 0 define true 1 typedef int linkdata typedef struct node node 建立鍊錶 node create list 尾插 int...
頭節點鍊錶C程式
main.c檔案 include include headnode.h int main for i 0 i 20 i 錯誤1 空表的情況下插入節點 insert pos head,0,2 正確 空表的情況下在第乙個節點處插入 insert pos head,1,2 錯誤2 空表的情況下在非第乙個節...
從無頭鍊錶中刪除節點
程式設計之美 第3.4節 從無頭鍊錶中刪除節點 問題 假設有乙個沒有頭指標的單鏈表。乙個指標指向此單鏈表中間的乙個節點 不是第乙個也不是最後乙個節點 請將該節點從單鏈表中刪除 解法 題目中已經說明既不是頭節點也不是尾節點,因此不用考慮特殊情況。要解這個題首先的思路是尋找前乙個節點的指標,但是由於這是...