鍊錶InitList傳入雙重指標分析

2021-09-05 09:36:28 字數 487 閱讀 3351

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...