簡單使用c語言實現雙向鍊錶

2021-10-07 10:55:41 字數 1739 閱讀 5569

1.單鏈表結點中只有乙個指標指向其後繼的指標域,所以單鏈表只能從頭結點依次順序的向後遍歷。而雙向鍊錶結點中有兩個指標,分別指向其前驅結點和後繼結點,這樣就可以實現鍊錶的雙向遍歷了。

2.雙向鍊錶的具體實現過程

#include

#include

#define elemtype int

typedef

struct linknodelinknode;

linknode *phead =

null

;//雙向鍊錶的頭指標

linknode *pend =

null

;//雙向鍊錶的尾指標

//建立雙向鍊錶節點

void

createnode

(linknode *pnode)

pnode->pnext =

null

; pnode->pprior =

null;}

//建立雙向鍊錶(帶頭節點),可以理解為建立乙個空表,建立的鍊錶中只包含乙個頭結點

void

createlinklist()

//新增結點,結點後面依次按順序新增,注意與後面的插入結點區分開

void

addnode()

//輸出雙向鍊錶

void

showlinklist()

}else

}//雙向鍊錶中查詢某個結點

linknode*

findnode

(elemtype e)

//e為查詢條件

ptemp=ptemp->pprior;}}

return

null;}

//修改雙向鍊錶某一結點的值

void

modifynode

(elemtype e)

else}}

//雙向鍊錶特定位置插入結點

void

insertnode

(elemtype e,

int ntype)

//e為插入點對應的值,ntype表示插入的方式,我們規定ntype=0為前插,ntype=1為後插

else

//後插

else

}printf

("插入結點成功!\n");

}}//刪除雙向鍊錶某一結點

void

deletenode

(elemtype e)

else

//刪除其他位置結點

free

(ppos)

;//釋放記憶體空間

printf

("刪除結點成功!\n");

}}//刪除整個雙向鍊錶

void

clearlinklist()

phead->pnext =

null

; phead->pprior =

null

; pend = phead;

printf

("清空鍊錶成功!\n");

}}intmain()

case2:

case3:

case4:

case5:

case6:

case7:

case8:

default

:printf

("error");

}}return0;

}

雙向鍊錶C語言實現

ifndef stdlist h define stdlist h typedef struct tagstdnode stdnode,lpstdnode typedef struct tagstdlist stdlist,lpstdlist 鍊錶資料結構 struct tagstdnode 鍊錶節...

c語言實現雙向鍊錶

單向鍊錶有一定的缺陷,其中乙個就是只能一條路走到黑,只能前進不能後退,但雙向鍊錶就解決了這一問題 include include typedef struct node node,linklist void create list tail linklist l 頭插法建立 void create ...

C語言實現雙向鍊錶

1.定義兩個結構體,乙個表示鍊錶的乙個單元,另乙個表示鍊錶的頭結點 2.鍊錶的初始化 必須讓頭結點的next和prev指向自己 清除 不刪除頭結點 銷毀 刪除頭結點 3.增操作 每次增加需要開闢乙個單元,所以直接建立乙個函式用來建立單元 頭插 尾插 pos結點之前插 4.刪操作 分為三種 刪除pos...