單鏈表與指向指標的指標

2021-06-01 00:04:44 字數 988 閱讀 8657

今天我們來實現帶頭結點的乙個單鏈表的建立。

#include #include #include #define elemtype int

typedef struct node

node;

typedef struct node* linklist; //定義linklist為指向每個結構體的指標

/*建立含有n個結點的帶有頭結點的鍊錶*/

int creatlisthead(linklist *l,int n)

(*l)->next = null;           //建立了乙個只有頭結點的單鏈表

/*建立新的結點並依次插入*/

for(i=0;idata = rand()%100 + 1;           //隨機產生乙個100之內的數

p->next = (*l)->next;

(*l)->next = p;

} printf("finish creat linklist!\n");

return 0;

} int main()

如上標註顏色的地方為我們應該特別注意的地方:

1.建立乙個指標的時候,一定要同時對其進行初始化為null,以免後面出現不必要的錯誤(如檢查記憶體是否分配成功)

2.使用malloc()分配記憶體空間之後,一定馬上檢查指標是否為null,用來檢測是否分配成功。

3.本次建立中,我們使用了「指向指標的指標」來作為建立單鏈表的引數。為以後鍊錶中的插入操作刪除等很多操作提供了方便:

1)每個鍊錶結點,可能會發生刪除插入操作,所以注定了結點結構體中的指標肯定會不斷的發生變化———鍊錶結點的定義一定要用指標來對結點進行間接訪問

2)在傳入頭結點指標給呼叫函式時,在函式的操作過程中,會給頭結點分配記憶體空間,對其進行修改。所以我們要用指向頭結點指標的指標來作為函式的引數。

昨天就是因為問題2)浪費了乙個下午的時間,最後終於在各位網友和校友的關注下弄明白了,在此謝謝大家~

單鏈表為什麼用指向指標的指標

int a 1,b 2 void change int x void change int x void main 上面的例子很好的說明了傳遞指標與傳遞指標的指標的不同 所以在建立單鏈表時,由於需要修改傳遞給呼叫函式的頭指標的值,所以需要傳遞指向頭指標的指標 include include incl...

指標的引用與指向指標的指標

一般來說,為函式傳入乙個引數,如果希望函式執行完成後對引數的改動依然保留,那麼有兩種方式 傳入乙個引用 傳入乙個指標 傳入引用的方式很好理解,就是相當於將變數本身傳入,針對變數所進行的一切修改都是直接對變數本身的修改。傳入指標則不然,傳入指標後進行的修改,實際上是對指標指向的位址的內容進行修改,而不...

指向指標的指標

理解二級指標,關鍵是理解指標的儲存方式和意義。這裡以指向int型指標的指標為例,梳理一下二級指標在記憶體分配中 的奧妙.include using namespace std int main int p a int point p cout a a endl p p endl p p endl p...