雙向鍊錶的基本操作

2021-10-21 11:59:24 字數 4169 閱讀 2401

對雙線性鍊錶進行一些基礎操作

利用尾插法建立乙個雙向鍊錶

**示例

void

initdlist

(dlinklist*l)

int num;

scanf

("%d"

,&num)

; dlnode*p;

//建立乙個儲存當前資料的節點

dlnode*last=

(*l)

;//建立乙個指向表尾節點的指標

while

(num!=-1

)//利用後插法輸入初始的鍊錶資料

last->next=

null

;}

插入節點的位置要分情況討論,第乙個位置,中間位置,最後乙個位置

void

insertdlist

(dlinklist*l,

int insertsite,

int value)

if(flag==0)

else

else

if(insertsite==len+1)

q->next=p;

p->pre=q;

}else

dlnode*qnext=q->next;

p->next=qnext;

//先將要插入節點與後向節點建立聯絡

qnext->pre=p;

q->next=p;

p->pre=q;}}

}

按照位置刪除

void

deledlist

(dlinklist*l,

int delesite)

if(flag==0)

else

else

if(delesite==len)

q=q->pre;

q->next=

null;}

else

dlnode*qnext=q->next;

dlnode*p=qnext->next;

q->next=p;

p->pre=q;}}

}

按照數值刪除

void

deledlist_value

(dlinklist*l,

int value)

p=p->next;}if

(flag==0)

else

}}

按照位置修改

void

changedlist_site

(dlinklist*l,

int change_site,

int value)

if(flag==0)

else

p->data=value;

}}

按照數值修改

void

changedlist_value

(dlinklist*l,

int change_value,

int num)

p=p->next;}if

(flag==0)

else

}}

#include

#include

typedef

struct dlnodedlnode,

*dlinklist;

void

initdlist

(dlinklist*l)

;void

outputdlist

(dlinklist l)

;void

insertdlist

(dlinklist*l,

int insertsite,

int value)

;void

deledlist

(dlinklist*l,

int delesite)

;void

deledlist_value

(dlinklist*l,

int value)

;void

changedlist_site

(dlinklist*l,

int change_site,

int value)

;void

changedlist_value

(dlinklist*l,

int change_value,

int num)

;int

get_length

(dlinklist l)

;int

main()

void

initdlist

(dlinklist*l)

int num;

scanf

("%d"

,&num)

; dlnode*p;

//建立乙個儲存當前資料的節點

dlnode*last=

(*l)

;//建立乙個指向表尾節點的指標

while

(num!=-1

)//利用後插法輸入初始的鍊錶資料

last->next=

null;}

void

outputdlist

(dlinklist l)

printf

("\n");

int len=

get_length

(l);

dlnode*q=l;

int i;

for(i=

1;i)while

(q)printf

("\n");

}void

insertdlist

(dlinklist*l,

int insertsite,

int value)

if(flag==0)

else

else

if(insertsite==len+1)

q->next=p;

p->pre=q;

}else

dlnode*qnext=q->next;

p->next=qnext;

//先將要插入節點與後向節點建立聯絡

qnext->pre=p;

q->next=p;

p->pre=q;}}

}int

get_length

(dlinklist l)

printf

("length=%d\n"

,len)

;return len;

}void

deledlist

(dlinklist*l,

int delesite)

if(flag==0)

else

else

if(delesite==len)

q=q->pre;

q->next=

null;}

else

dlnode*qnext=q->next;

dlnode*p=qnext->next;

q->next=p;

p->pre=q;}}

}void

deledlist_value

(dlinklist*l,

int value)

p=p->next;}if

(flag==0)

else}}

void

changedlist_site

(dlinklist*l,

int change_site,

int value)

if(flag==0)

else

p->data=value;}}

void

changedlist_value

(dlinklist*l,

int change_value,

int num)

p=p->next;}if

(flag==0)

else

}}

雙向鍊錶與單向鍊錶類似,區別在於多了乙個前向指標,可以雙向訪問節點的前後;

雙向鍊錶 基本操作

test.c define crt secure no warnings 1 include doubleslishtnode.h void test1 initdslist pushback printfdslist popback void test2 pushfront popfront vo...

雙向鍊錶基本操作

帶頭節點的雙向鍊錶操作 include include include define ok 1 define error 0 define overflow 0 using namespace std typedef int status typedef int elemtype typedef s...

雙向鍊錶基本操作

package com.bei.linkedlist auther honeysky date 2020 11 10 13 38 public class doublelinkedlistdemo 建立乙個雙向鍊錶的類 class doublelinkedlist 遍歷雙向鍊錶的方法 public ...