雙向迴圈鍊錶的建立 查詢 插入 刪除和遍歷等操作

2021-10-01 09:28:51 字數 2101 閱讀 2442

雙向迴圈鍊錶的建立、查詢、插入、刪除和遍歷等操作

#ifndef __dlinklist_h__

#define __dlinklist_h__

#include

#include

typedef

int datatype;

typedef

struct double_link_node

dlk,

*dplk;

extern

void

init_dlinklist

(dplk *h)

;extern

void

create_dlinklist

(dplk p)

;extern

void

search_dlinklist

(dplk p,

int pos,dplk *r)

;extern

void

insert_dlinklist

(dplk p,datatype val,

int pos)

;extern

void

delete_dlinklist

(dplk p,

int pos)

;extern

void

show_dlinklist

(dplk p)

;extern

void

clear_dlinklist

(dplk p)

;#endif

#include

"dlinklist.h"

//初始化

void

init_dlinklist

(dplk *h)

(*h)

->prior =

*h;(

*h)->next =

*h;}

//建立雙向迴圈鍊錶

void

create_dlinklist

(dplk p)

q->data = val;

q->prior = r;

q->next = r->next;

r->next = q;

p->prior = q;

r = q;}}

//位置搜尋

void

search_dlinklist

(dplk p,

int pos,dplk *r)

while

(p->next != t)

}*r =

null

;return;}

//位置插入

void

insert_dlinklist

(dplk p,datatype val,

int pos)

q->data = val;

search_dlinklist

(p,pos,

&r);if(

null

== r)

q->next = r;

q->prior = r->prior;

r->prior->next = q;

r->prior = q;

return;}

//位置刪除

void

delete_dlinklist

(dplk p,

int pos)

r->prior->next = r->next;

r->next->prior = r->prior;

free

(r);

}//遍歷

void

show_dlinklist

(dplk p)

puts(""

);}//釋放記憶體

void

clear_dlinklist

(dplk p)

return;}

#include

"dlinklist.h"

intmain

(int argc,

const

char

*ar**)

雙向迴圈鍊錶(建立 插入 刪除 遍歷)

author chen ming dong include include typedef struct list str int n str creat str head head prior p p next head return head 遍歷 void gothrough str head...

雙向迴圈鍊錶的建立 查詢 新增 刪除

雙向迴圈鍊錶的建立 查詢 新增 刪除 include include typedef struct lnodelnode,dlinklist 尾插法建立雙向鍊錶 dlinklist create dlinklist l,int n return l void menu 獲取雙向迴圈鍊錶中某一元素的值...

雙向迴圈鍊錶的插入與刪除

關於解釋部分不再多說了,網上資料很多,下面就介紹具體的實現吧 雙向迴圈鍊錶的插入與刪除 typedef struct nodednode,dlinklist 在帶有頭結點雙向迴圈鍊錶中第1個資料域內容為x的結點右邊插入乙個資料資訊為item的新結點 void insert dlinklist lis...