由鍊錶初始化看C語言的二級指標

2022-09-23 23:51:15 字數 658 閱讀 6903

先來看c語言建立鍊錶、插入節點和遍歷鍊錶的一段**:

[c]  

#include  

#include  

typedef int elemtype;  

typedef struct nodenode, *linkedlist;  

//void init_linkedlist(linkedlist *list)  

void insert(linkedlist list, elemtype elem)  

void main()  

printf("\n");  

}   這個小程式完成的功能很簡單,建立乙個鍊錶,然後插入3,4,5這三個整數,最後遍歷鍊錶輸出每個節點中的整數。但是大家注意到沒有,在main函式中,初始化鍊錶的函式引數的是乙個二級指標,為什麼要使用乙個二級指標作為引數呢?在任何一本c語言的教材上,都會寫c語言的函式引數傳遞是值傳遞方式,所有的引數都是通過值傳遞的,使用指標作為引數可以在函式中改變引數的值(此處感覺表達有誤,但是想不到更好的表達方式)。可能有人會有疑問了,在上面**的main函式中初始化鍊錶的呼叫函式**

[j**a]  

init_linkedlist(&list);  

list已經是乙個指標了,為什麼要傳遞乙個指標的位址,直接使用指標不行嗎?確實不行。

c語言鍊錶初始化

include include include typedef struct node node,pnode pnode init list else if len 0 對長度為負數的處理 pnode ptail phead ptail指向的是尾節點 ptail pnext null for i 0...

關於棧初始化的二級指標使用問題

關於棧初始化的二級指標使用問題 先附上 include include define stack init size 20 typedef struct bitnodebitnode,bitree typedef structsqstack int initstack sqstack s s bas...

鍊錶 二級指標的使用

博文的記錄源自閱讀著名的酷殼主頁 coolshell 並茂說明了這個問題 我們在刪除鍊錶的時候,常常需要記錄該結點在鍊錶中是否有前趨prev。如果有,那麼需要把prev next指向該結點的next域,然後再刪除該結點,這樣才能保證鍊錶不會因為刪除結點而 斷開 像這樣 void remove lis...