在學到鍊錶時我停留了很長時間,或許是強迫症,總是想要把一小段**讀懂,磨了好久才想通。
接下來讓我來講講我對鍊錶的理解吧。
注釋統一在**下方
建立鍊錶的**(我苦思冥想的部分)奉上
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 常...