C語言資料結構 單鏈表

2021-07-05 17:52:54 字數 1382 閱讀 1315

單鏈表在資料結構裡十分常見,是一種常見的線性表,下面介紹其性質並用**實現相關功能

單鏈表以鏈結方式儲存資料

1、鍊錶的具體儲存表示為:

① 用一組任意的儲存單元來存放線性表的結點(這組儲存單元既可以是連續的,也可以是不連續的)

② 鍊錶中結點的邏輯次序和物理次序不一定相同。為了能正確表示結點間的邏輯關係,在儲存每個結點值的同時,還必須儲存指示其後繼結點的位址。

2、鍊錶的結點結構

┌──┬──┐

│data│next│

└──┴──┘

data域–存放結點值的資料域,一般為同一種型別

next域–存放結點的直接後繼的位址(位置)的指標域(鏈域)

注意:

①鍊錶通過每個結點的鏈域將線性表的n個結點按其邏輯順序鏈結在一起的。

②每個結點只有乙個鏈域的鍊錶稱為單鏈表(single linked list)。

3、鍊錶的描述方法

鍊錶一般用乙個頭指標來表示,頭指標指向下乙個節點的位址,鍊錶最後乙個節點沒有後繼,因此其next指標為null;一般的頭指標也是帶有資料的。

下面利用c**定義了鍊錶結構及些運算操作函式:

#include 

#include

#define n 8

//結構定義

typedef struct node

linklist;

//建立鍊錶,以頭指標表示

linklist *creatlist(void) //返回的是鍊錶的頭指標

; head = null; //鍊錶為空

for(i = n-1; i >=0; i-- )

return head;

}//讀list值,把list中值按序輸出,並獲取個數

void readlist(linklist *head)

len = listlength(p); //計算值個數

printf("\nthe length of the list is: %d\n", len);

}//對鍊錶l,在i處插入x

void *insertlist(linklist *l,int

x, int i)

//刪除鍊錶i處的值

void *deletelist(linklist *l, int i)

//計算鍊錶長度

int listlength(linklist *l)

return j;

}//鏈結兩個鍊錶

linklist *listlink(linklist *l1, linklist *l2)

int main()

直接執行則可以看到實際結果

c語言 資料結構 單鏈表

將線性表l a0,a1,an 1 中各元素分布在儲存器的不同儲存塊,稱為結點,通過位址或指標建立它們之間的聯絡,所得到的儲存結構為鍊錶結構,表中 ai的結點形式如圖表示 其中結點的data 域存放資料元素 ai,而 next 域是乙個指標,指向 ai的直接後繼 ai 1 所在的結點。單鏈表結構如下 ...

資料結構 單鏈表 C語言

單向鍊錶 鍊錶結點通常包含資料域與指標域,資料域用來儲存相關的使用者的資料,指標域用來指向下乙個結點。訪問單向鍊錶,需要從頭部 head 開始單向順序訪問,訪問終結於指標域 next 為null的結點 其儲存方式不同於以往的陣列,按照非連續位址方式儲存。優點 鍊錶長度可以實現動態增長,不必像陣列一樣...

C語言資料結構(單鏈表)

單鏈表的整表建立 對於順序儲存結構的線性表的整表建立,我們可以用陣列的初始化來直觀理解。而單鏈表和順序儲存結構就不一樣了,它不像順序儲存結構這麼集中,他的資料可以是分散在記憶體各個角落的,他的增長也是動態的。對於每個單鏈表來說,他所占用空間的大小和位置是不需要預先分配劃定的,可以根據系統的情況和實際...