typedef int element;
typedef int status;
typedef struct node
node, *linklist;
status initlink(linklist *l)
答:因為鍊錶只有定義成雙重指標,這裡才能把頭結點給帶出來。如果這裡用單指標(linklist l)的話,那麼initlink函式傳入的指標將會是乙個區域性變數,在初始化函式結束後會被釋放掉。malloc分配的空間無指標指向。
答:在傳入sertlink(linklist l,node node)函式時,形參l也確實是頭指標的乙個副本,也是乙個區域性變數。但是我們已經不需要這個區域性變數返回給我們了,我們已經有頭結點了。這時的區域性變數和頭結點都指向鏈條的首部,區域性變數直接能夠操縱堆。實現對鍊錶結構的更改。
總結:這裡什麼時候用雙重指標什麼時候用單指標,歸根到底就是是否需要返回可用指標。區域性變數在作祟。
劍指Offer 鍊錶 反轉鍊錶
定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。解題思路 演算法流程 複雜度分析 實現 class solution object defreverselist self,head 申請兩個節點,pre和cur,pre最初指向none pre none cur head 遍歷...
指 Offer24鍊錶 反轉鍊錶
題目 定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 限制 0 節點個數 5000 注意 本題與主站 206 題相同 分析 反轉單鏈表主要是將指標反向,主要有兩種方式,迭代和遞迴。思路 1 遞迴 2...
劍指offer 鍊錶
單向鍊錶的結構定義 typedef int datatype struct listnode 問題1 往鍊錶的末尾新增乙個結點 給定頭結點,往末尾插入乙個結點 void insertnode listnode head,datatype key listnode p head while p nex...