對雙線性鍊錶進行一些基礎操作
利用尾插法建立乙個雙向鍊錶
**示例
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 ...