資料結構 c語言實現 雙鏈表

2021-10-08 05:07:15 字數 2244 閱讀 5405

//有頭結點雙鏈表

#include

#include

#include

#define max 51

struct people

;typedef

struct lnode lnode,

* linklist;

//linklist為指向結構體lnode的指標型別,這裡linklist 與lnote*等價

void

printpeo

(people peo)

;//輸出people

intlistlength

(linklist list)

;//鍊錶的長度

void

intilist

(linklist& list)

;//雙鏈表初始化

lnode*

getelem

(linklist& list,

int i)

;//按位查詢元素

bool insertlnode

(linklist& list, people peo ,

int i)

;//按位插入節點

bool dellnode

(linklist& list,

int i)

;//按位刪除節點

void

main()

,,,}

;for

(int i =

0; i <

4; i++

)insertlnode

(list, peo[i],1

);//依次插入peo[i]

lnode* l;

l = list;

for(

int i =

0; i <

4; i++

)for

(int i =

0; i <

4; i++

)dellnode

(list,1)

;printf

("%d\n"

,listlength

(list));

free

(list);}

void

intilist

(linklist& list)

//雙鏈表初始化

lnode*

getelem

(linklist& list,

int i)

//按位查詢元素

return p;

}bool insertlnode

(linklist& list, people peo,

int i)

//按位插入節點

//鍊錶為非空表,新節點插入到表頭

if(i ==

1&& len !=0)

//鍊錶不空,新節點查到表尾

if(i == len +

1&& len !=0)

//鍊錶非空,且不是插入到表頭、表尾

lnode* temp =list->next ;

temp=

getelem

(list, i-1)

; s->next = temp->next;

temp->next->previous = s;

s->previous = temp;

temp->next = s;

return true;

}bool dellnode

(linklist& list,

int i)

//按位刪除節點

temp =

getelem

(list, i -1)

; lnode* del;

del = temp->next;

temp->next = del->next;

del->next->previous = temp;

free

(del)

;return true;

}//鍊錶長度

intlistlength

(linklist list)

return i;

}//判斷兩個people 是否相等

bool judgeeq

(people peo1, people peo2)

void

printpeo

(people peo)

資料結構之雙鏈表的C語言實現

在寫過單鏈表之後再來寫雙鏈表會發現,雙鏈表和單鏈表在實現上的主要區別在於 雙鏈表每個節點需要考慮她的前驅和後繼,因此在插入和刪除操作的時候就需要格外注意對鍊錶最後乙個元素的操作,因為最後乙個元素的next指向的是null,所以在寫插入和刪除操作的時候需要判斷是不是對最後乙個節點操作。include ...

資料結構 單鏈表c語言實現

list.h如下 ifndef list h define list h typedef struct node node,list void initlist list list bool insert head list list,int val bool insert tail list li...

資料結構 單鏈表 c語言實現

建立結構體 node typedef struct node node,pnode 在堆記憶體上 動態建立結構體p指標 頭指標 指向頭節點的指標變數 頭節點 沒有有效資料,但是指向首節點的,結構體 首節點 第乙個含有有效資料,並儲存下個有效節點的指標 尾結點 最後乙個含有效資料,不指向下個節點位址,...