c語言 資料結構 單鏈表

2021-06-23 05:01:26 字數 1564 閱讀 2588

將線性表l=(a0,a1,

……,an-1)

中各元素分布在儲存器的不同儲存塊,稱為結點,通過位址或指標建立它們之間的聯絡,所得到的儲存結構為鍊錶結構,表中

ai的結點形式如圖表示:

其中結點的data

域存放資料元素

ai,而

next

域是乙個指標,指向

ai的直接後繼

ai+1

所在的結點。單鏈表結構如下:

單鏈表的建立:

#include #include #include #include typedef int datatype;

//宣告結點,結點包括元素資料以及指標域。

typedef struct node

linknode,*linklist;

//初始化鍊錶。1)分配記憶體;2)將頭節點指標域指向空,該指向也是鍊錶遍歷的判斷依據;3)返回頭節點位址。

linklist init_list(void)

//插入結點。1)新建結點,對於鍊錶來說,不同於順序表一次性將總表長的記憶體分配完畢,因此在每次新建

//結點都該給新結點newnode分配記憶體;2)將插入的資料賦予newnode的data域;3)定義中間結點p,p主要在

//遍歷過程中起作用,初始化p等於head頭結點進行遍歷,當p->next指向null時,說明當前結點為末結點,

//否則繼續遍歷下一結點;4)在找到末結點後,將末結點p->next指標指向新結點newnode,新結

//點newnode->next指向null,此時完成新結點的插入,新結點newnode成為末結點。

bool insert_list(linklist head,datatype n)

//刪除結點。對鍊錶遍歷,當找到對應元素結點q時,記錄其直接前驅結點p,將前驅結點的next域p->next指向

//q的直接後繼結點p->next->next,釋放q記憶體,完成刪除工作。

bool remove_list(linklist head,datatype n)

p = p->next;

}printf("remove failed\n");

return false;}

//列印結點。

void show_list(linklist head)

printf("\n");}

//鍊錶逆轉。依次將結點a0,a1,a2,……,an-1移到頭結點作為其直接後繼結點。如圖:

//測試。輸入正數則插入結點,負數則刪除對應結點,最後逆轉鍊錶。

int main(void)

else

}revert_list(l);

printf("revert linklist:\n");

show_list(l);

return 0;

}

資料結構 單鏈表 C語言

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

C語言資料結構 單鏈表

單鏈表在資料結構裡十分常見,是一種常見的線性表,下面介紹其性質並用 實現相關功能 單鏈表以鏈結方式儲存資料 1 鍊錶的具體儲存表示為 用一組任意的儲存單元來存放線性表的結點 這組儲存單元既可以是連續的,也可以是不連續的 鍊錶中結點的邏輯次序和物理次序不一定相同。為了能正確表示結點間的邏輯關係,在儲存...

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

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