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