C語言學習筆記 鍊錶

2021-09-03 02:08:52 字數 1486 閱讀 4891

鍊錶是一種常見的重要的資料結構。它是動態地進行儲存分配的一種結構。它可以根據需要開闢記憶體單元。鍊錶有乙個「頭指標」變數,以head表示,它存放乙個位址。該位址指向乙個元素。鍊錶中每乙個元素稱為「結點」,每個結點都應包括兩個部分:一為使用者需要用的實際資料,二為下乙個結點的位址。因此,head指向第乙個元素:第乙個元素又指向第二個元素;……,直到最後乙個元素,該元素不再指向其它元素,它稱為「表尾」,它的位址部分放乙個「null」(表示「空位址」),鍊錶到此結束。

鍊錶包含以下特徵:(1).由n個節點離散分配;(2)每個節點通過指標連線(3)每乙個節點由乙個前驅節點和乙個後驅節點(4).首節點沒有前驅節點,尾節點沒有後驅節點;

鍊錶的節點由兩個部分組成,一是資料域,用來存放有效資料;二是指標域,用來指向下乙個節點;

鍊錶的各類操作包括:學習單向鍊錶的建立、刪除、 插入(無序、有序)、輸出、 排序(選擇、插入、冒泡)、反序等等。

(1)鍊錶的節點構造

typedef int datatype; //定義乙個資料型別
struct node ;

typedef struct node listnode;

(2)定義鍊錶結構體

typedef structlinklist;
(3)鍊錶初始化

void initlinklist(linklist* list)
(4)求鍊錶長度

int listlength(linklist list)
(5)按索引查詢乙個節點

listnode* nodeatindex(linklist list, int index) 

return pnode;

}

(6)插入乙個節點

void insertnodeatindex(linklist* list, datatype data, int index) 

else

list->nlenth++;

}

(7)刪除乙個節點

datatype deletnodeatindex(linklist* list, int index) 

else

// 把要刪除的節點值保留

datatype data = deletnode->data;

// 把節點記憶體釋放

free(deletnode);

}

C語言學習筆記 24鍊錶

一 鍊錶和陣列的比較 二 鍊錶中的術語 三 演算法 四 鍊錶結構示意圖 五 示例 include include include 定義乙個鍊錶結構 struct node 函式宣告 struct node createlist void void ergodiclist struct node in...

C語言學習 鍊錶

建立單鏈表,每個節點包括學號 姓名 性別 年齡和計算機成績。實現按學號刪除 鍊錶中指定結點的功能。2.將 1 中建立的單向鍊錶 a 分別拆成兩個鍊錶 b,c。b 中存放 80 分以上成績的節點,c 中存放其他結點。3.將 1 中建立的單向鍊錶 a 改為按計算機成績遞增排序的單向鍊錶,並統計出高於平均...

C語言學習筆記 十三 鍊錶 Chain

動態申請鍊錶 動態申請鍊錶 陣列 靜態儲存,有序的資料集合,資料順序能夠對映實體地址,查詢快,插入刪除效率低 鍊錶 動態儲存,插入刪除效率高 include include typedef struct node node node createlink void printlink node he...