關於建立鍊錶(C語言基礎)我的一些想法

2021-10-19 08:16:56 字數 1681 閱讀 1231

在學到鍊錶時我停留了很長時間,或許是強迫症,總是想要把一小段**讀懂,磨了好久才想通。

接下來讓我來講講我對鍊錶的理解吧。

注釋統一在**下方

建立鍊錶的**(我苦思冥想的部分)奉上

struct student*

create()

else

pnew=

(struct student*

)malloc

(sizeof

(struct student));

//新節點重新分配記憶體

scanf_s

("%d\n"

,pnew->data);}

free

(pnew)

;//釋放新節點未使用的記憶體

return phead;

//返回頭指標

};

其實呢,想一想pconnect其實就相當於作為乙個尾部的節點,乙個頭節點phead,乙個尾節點pconnect,齊了。

這樣就結束了,對了,還有一段**我需要解讀一下,既然這樣,完整的**我直接連帶打出來好了。

pnew=

(struct stduent*

)malloc

(sizeof

(struct stuent)

);

左側,普普通通的指標沒啥說的

右側,

(struct student*)
看到括號了麼,強制轉換為結構體指標型別 sizeof,這個本身是測量型別所佔記憶體大小的乙個。。。東東吧。

malloc的用法是:void*malloc(unsigned int size)

動態分配一塊記憶體大小為size的記憶體空間,malloc會返回乙個指向分配記憶體空間的指標,如果出現錯誤就返回null。這要清楚哦。

接下來就是**時間(累暈了啊)

#include

#include

//這個預處理檔案是給malloc函式以支援的

struct student

;//student結構體

int icount;

//定義全域性變數

struct student*

create()

else

pnew=

(struct student*

)malloc

(sizeof

(struct student));

//新節點重新分配記憶體以供下面輸入的資料使用

scanf_s

("%d\n"

,&pnew->data);}

free

(pnew)

;//釋放新節點未使用的記憶體

return phead;

//返回頭指標};

//create建立鍊錶

void

print

(struct student* phead)

}//列印鍊錶

intmain()

//主函式

自己寫的**可能多多少少有些問題,我測試過,好像前面輸入的數反倒到了後面,不過無傷大雅,嘿嘿,不管怎麼說,自己想出來的**才能被自己真正接受,希望各位能有所啟發吧。

關於鍊錶的一些題目

2.刪除遞增有序鍊錶中大於min,小於max的元素 3.逆置鍊錶 4.合併兩個鍊錶 4.合併n個鍊錶 分治法 測試 前乙個與後乙個比較,相同就刪除結點,並釋放記憶體。返回頂部 先找到兩個前驅,釋放中間結點,並且將鍊錶重新鏈起來。返回頂部 public listnode reverselist lis...

關於鍊錶的一些總結

1.在鍊錶頭部新增空頭以消除頭部特殊判斷比較常見,用於刪除和新增元素,啞結點的意思就是在head第乙個節點之前設立乙個節點。2.因為鍊錶的操作有限,所以很多時候我們可以把鍊錶中的元素儲存在陣列中,進行操作。3.鍊錶從前往後遍歷元素簡單,但是從後往前遍歷元素確實困難重重,所以我們可以使用棧來儲存資料,...

關於C語言的一些基礎知識

1 32個關鍵字 資料型別 void 無型別,用於函式返回值 引數 指標 unsigned signed 整型的型別說明 char short int long 整數型別 float double 浮點型 struct union enum 結構 聯合 列舉 auto 自動建立 銷毀 const 常...