資料結構雙向鍊錶及基本操作實現 C語言實現

2021-10-09 12:25:11 字數 1983 閱讀 1574

雙向鍊錶的特點:雙向鍊錶相對於單向鍊錶其優點在於其可以同時檢視某個節點的前驅節點和其後繼節點,當然因為乙個節點使用了兩個指標來記錄前後節點的位置,其每個節點占用的記憶體空間自然更大

其實現的基本操作**如下:

#include

#include

#include

typedef

int elementtype;

typedef

struct lnode lnode,

*dlinklist;

//***************定義基本操作*******************

dlinklist init_list

(dlinklist l)

;dlinklist list_headinsert

(dlinklist l, elementtype e)

;dlinklist list_tailinsert

(dlinklist l, dlinklist p, elementtype e)

;void

prtlist

(dlinklist l)

;int

list_length

(dlinklist l)

;bool delete_listnode

(dlinklist l,

int locate)

;//******************#end**********************

intmain()

int length =

list_length

(list)

;printf

("% d\n"

, length)

;delete_listnode

(list,2)

;prtlist

(list)

;return0;

}//*************實現基本操作**********************

dlinklist init_list

(dlinklist l)

dlinklist list_headinsert

(dlinklist l, elementtype e)

newnode->next = l->next;

l->next = newnode;

newnode->prior = l;

newnode->element = e;

return l;

}dlinklist list_tailinsert

(dlinklist l, dlinklist p, elementtype e)

void

prtlist

(dlinklist l)

}int

list_length

(dlinklist l)

return counter;

}elementtype getelement

(dlinklist l,

int locate)

dlinklist p = l;

while

(locate >0)

return p->element;

}bool delete_listnode

(dlinklist l,

int locate)

while

(locate >0)

p->prior->next = p->next;

p->next->prior = p->prior;

free

(p);

return true;}/

****

****

****

****

****

****#end***

****

****

****

****

***/

C 資料結構 雙向鍊錶的基本操作

pragma once ifndef dlist h define dlist h include include using namespace std typedef enum status templateclass list templateclass listnode listnode t...

C C 實現雙向鍊錶及基本操作

接下來,我要用一段c c 實現雙向鍊錶的構建,插入,刪除操作。這是鍊錶操作中比較基本的操作,我是模仿單向鍊錶來進行雙向鍊錶的構建,其插入和刪除操作也和單向鍊錶大同小異,並不晦澀難懂,適合新手研讀,有錯誤或者不夠完善的希望大家指出。include pch.h include include inclu...

資料結構 雙向鍊錶的實現

帶頭結點,不帶頭結點的類似 include include define elemtype int typedef struct dnodednode,dlinklist 雙向鍊錶的初始化 bool initdlinklist dlinklist l 雙鏈表 查詢指定idx位置的結點 dnode g...