資料結構簡單入門 複習(一) 線性鍊錶(C語言)

2021-10-08 19:01:43 字數 1600 閱讀 4986

這個系列是為了簡單入門與複習而作的,因此內容並不完全,如本篇的線性鍊錶除了建立、插入、刪除外,還有一些較為複雜的操作,並且,本篇內容提到的也不涉及任何判斷成功與否的**,但個人認為,只要這三個部分掌握了,剩餘的基礎用法都能很快解決。

基礎知識

指標的基本使用。

結構體的定義。

分配記憶體:{

使用 待分配變數 = (分配變數資料型別)malloc(分配大小);

其中,分配大小一般用 sizeof(資料型別) 獲得,如果需要分配n倍的空間,使用sizeof(資料型別)*n

假設要給 指標node 分配五個 node*型別 的空間,就應該

node = (node*)malloc(sizeof(node)*5);

釋放指標記憶體:{

即時釋放,可以防止過多過期資料佔據記憶體。free(指標名稱)

例如int *node;

node = (int*)malloc(sizeof(int));

free(node); //這樣就釋放掉了上一行分配的記憶體。

free()是用來釋放記憶體的,乙個單純指向性的指標並不需要釋放,但如果這個指向性的指標 被分配了記憶體 來儲存臨時資料,則應該釋放。(這裡入門搞不懂,問題不大,多寫點就有感覺了。)

定義與建立

線性鍊錶的訪問必須由頭指標開始,頭指標僅用來指向第乙個資料結點的位置。

線性鍊錶包括兩個域,資料域與指標域,資料域用來儲存資料,而指標域用來指向鍊錶的下乙個結點(node)。

且因為線性鍊錶的最後結點沒有後繼結點,因此其指標域為空(null)。

即,對於乙個有三個資料的鍊錶結構 |data - next|,它的形式應該是這樣的:

|empty - first| -> |data1 - second| -> |data2 - third| -> |data3 - null|

#define elemtype int      //元素型別設定為int

typedef struct lnodelnode;

鍊錶的建立及結點新增
#include #include #define elemtype int      //元素型別設定為int

typedef struct lnodelnode;

int main()

通過這個方法,即可建立乙個

|empty - first| -> |1 - second| ->|22 - null|

的線性鍊錶。

插入結點

原理:先將b的next設定為c,再將a的next設定為b

b->next = a->next;

a->next = b;

刪除結點
lnode *temp;

temp = a->next->next; //將temp設定成a的下乙個的下乙個,即c

free(a->next); //釋放b結點

a->next = temp; //將a的下乙個設定為c

這樣不釋放temp,因為此時temp儲存的是c的記憶體,不是新增加的臨時記憶體,這個temp只是指示器,不需要釋放。

資料結構 一 線性表

一 線性表的定義 線性結構的特點是 在資料元素的非空有限集中,1 存在唯一的乙個被成為 第乙個 的資料元素 2 存在唯一的乙個被成為 最後乙個 的資料元素 3 除了第乙個之外,其他的元素均只有乙個前驅,除了最後乙個以外,其他的元素均只有乙個後繼 線性表是最常用且最簡單的一種資料結構,乙個線性表是n個...

資料結構(一) 線性表之單向鍊錶

線性表,linear list,是最基本 最簡單 最常用的一種資料結構。乙個線性表是n個具有相同特性的資料元素的有限序列,例如 a1,ai 1,ai,ai 1,an 表示乙個順序表,ai 1領先於ai,ai領先於ai 1,稱ai 1是ai的直接前驅元素,ai 1是ai的直接後繼元素。特別的,第乙個元...

資料結構筆記(一) 線性表(順序表 鍊錶)

資料結構筆記 一 線性表 線性表就是乙個一維的表,其中各個元素之間是一對一的。對線性表的定義 adt 線性表 list data 線性表的資料物件集合 a1,a2,an 每個元素的型別均為datatype。其中,出來第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,出來最後乙個元素an外,每乙個...