C語言單鏈表

2021-08-07 13:49:09 字數 2383 閱讀 8462

c語言單鏈表的實現(非迴圈)

資料結構這一塊丟了很久了,今天抽空寫了乙個單鏈表,如有問題請指正!

#include "stdafx.h"

#include

#include

typedef struct node

node, *pnode;

typedef struct 

dlist ,*dlist ;

/*初始化乙個鍊錶,建立頭節點 */

dlist initlist(void); 

/*向鍊錶新增資料(尾插法)*/

bool addnode(dlist plist,int val); 

/*在鍊錶pos位置前插入資料val*/

bool insertbefore(dlist plist,int pos,int val);

/*在鍊錶pos位置後插入資料val*/

bool insertbefore(dlist plist,int pos,int val);

/*刪除pos位置的節點*/

bool deletenode(dlist plist,int pos);

/*列印鍊錶*/

void printlist(dlist plist);

/*清空鍊錶*/

void clearlist(dlist plist);

/*摧毀乙個鍊錶*/

void destroy(dlist plist);

/*計算鍊錶長度*/

int getlength(dlist plist);

/*判斷鍊錶是否為空*/

bool isempty(dlist plist);

/*初始化鍊錶(建立頭節點)

*/dlist initlist(void) 

else

else

}return plist;}/*

向鍊錶新增乙個節點(尾插法)

*/bool addnode(dlist plist,int val)

else

return true;}/*

在某個節點前插入乙個資料

*/bool insertbefore(dlist plist,int pos,int val)

if( null == p||i>pos-1)  //防止空鍊錶和輸入錯誤

return false;

pnode pnew = (pnode)malloc(sizeof(node)); //建立乙個新節點

pnew ->data = val;

pnew ->pnext = p ->pnext;

p ->pnext = pnew;

plist ->length++;

return true;}/*

在某個節點後插入乙個資料

*/bool insertafter(dlist plist,int pos,int val)

if( null == p||i>pos)  //防止空鍊錶和輸入錯誤

return false;

pnode pnew = (pnode)malloc(sizeof(node)); //建立乙個新節點

pnew ->data = val;

if(null !=p ->pnext)

pnew ->pnext = p ->pnext;

else                         //在尾節點後插入,調節尾節點

p ->pnext = pnew;

plist ->length++;

return true;}/*

刪除指定位置的節點

*/bool deletenode(dlist plist,int pos)

if( null == p||i>pos-1)  //防止空鍊錶和輸入錯誤

return false;

pnode q = p ->pnext;

if( null == q->pnext) //待刪除節點為尾節點

else

p ->pnext = q ->pnext;

free(q);

q  = null;

plist ->length--;

return true;}/*

列印鍊錶(遍歷鍊錶)

*/void printlist(dlist plist)}/*

清空鍊錶(刪除所有節點,直流乙個空表)

*/void clearlist(dlist plist)}}

/*摧毀乙個鍊錶

*/void destroy(dlist plist)

/*計算鍊錶長度

*/int getlength(dlist plist)

/*判斷鍊錶是否為空

*/bool isempty(dlist plist)

C語言單鏈表

include include include define error 0 typedef struct lnode lnode,linklist linklist initlist linklist l node next null l node return l int listlength ...

c語言 單鏈表

單鏈表,顧名思義是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以結點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。我們在這裡使用c語言實現 h 檔案 pragma on...

C語言單鏈表

學過線性表中的順序表的都知道,順序表裡的資料在物理記憶體上是相鄰的,所以當我們在順序表中想要訪問下乙個元素時可以直接去訪問,就像陣列一樣。但是單鏈表卻不同,單鏈表的資料儲存的位置是動態分配的,也就是說單鏈表的儲存在物理記憶體上不是相鄰的,所以我們就只能通過指標這種方式來把單鏈表串起來,通過指標來訪問...