資源簡(jiǎn)介
實(shí)現(xiàn)雙向鏈表的增刪改查功能,dos窗口輸入輸出,可運(yùn)行,有注釋

代碼片段和文件信息
#include
#include
#define?ElemType?int
typedef?struct?DNode{
ElemType?data;
struct?DNode?*prior*next;
}DNode*Dlinklist;
//尾插入法創(chuàng)建鏈表
Dlinklist?CreateList(){
int?ix;
Dlinklist?L;
DNode?*s*r;
L?=?(Dlinklist)malloc(sizeof(DNode));
L->next?=?NULL;
L->prior?=?NULL;
r?=?L;
int?MaxSize;
printf(“輸入建立鏈表結(jié)點(diǎn)數(shù):“);
scanf(“%d“&MaxSize);
for(i?=?0;i printf(“輸入第?%d?個(gè)結(jié)點(diǎn)值:“i+1);
scanf(“%d“&x);
s?=?(DNode?*)malloc(sizeof(DNode));
s->data?=?x;
r->next?=?s;
s->prior?=?r;
s->next?=?NULL;
r?=?s;
}
return?L;
}
//按序號(hào)查找結(jié)點(diǎn)
DNode?*GetElemBySeq(Dlinklist?Lint?i){
int?j=1;
DNode?*p?=?L->next;
if(i==0)
return?(DNode?*)L;
if(i<1)
return?NULL;
while(p&&j p=p->next;
j++;
}
return?p;
}
//按值查找結(jié)點(diǎn)
DNode?*GetElemByValue(Dlinklist?LElemType?e){
DNode?*p?=?L->next;
while(p!=NULL?&&?p->data?!=?e)
p?=?p->next;
return?p;
}
//插入節(jié)點(diǎn)在第i個(gè)位置插入結(jié)點(diǎn)
Dlinklist?InsertNode(Dlinklist?LElemType?eint?i){
DNode?*p*s;
p?=?GetElemBySeq(Li-1);?//查找第i-1個(gè)結(jié)點(diǎn)
s?=?(DNode?*)malloc(sizeof(DNode));
s->data?=?e;
if(p->next?!=NULL){
s->next?=?p->next;
p->next->prior?=?s;
}
else
s->next?=?NULL;
p->next?=?s;
s->prior?=?p;
return?L;
}
//刪除第i個(gè)結(jié)點(diǎn)
Dlinklist?DeleteNode(Dlinklist?L?int?i){
DNode?*p*q;
q?=?GetElemBySeq(Li);?//查找第i個(gè)結(jié)點(diǎn)為q
p?=?q->prior;
p->next?=?q->next;
q->next->prior?=?p;
free(q);
return?L;
}
void?PrintList(Dlinklist?L){
DNode?*p;
p?=?L->next;
printf(“當(dāng)前鏈表為:“);
while(p?!=?NULL){
printf(“??%d“p->data);
p?=?p->next;
}
printf(“\n“);
}
int?menuselect(){
int?s;
do{
printf(“請(qǐng)選擇具體操作:\n“);
printf(“1.打印鏈表?\n“);
printf(“2.查詢結(jié)點(diǎn)?\n“);
printf(“3.插入結(jié)點(diǎn)?\n“);
printf(“4.刪除結(jié)點(diǎn)?\n“);
printf(“5.退出?????\n“);
printf(“請(qǐng)選擇(1-5):“);
scanf(“%d“&s);
}while(s<1?&&?s>5);
return?s;
}
void?main(void){
Dlinklist?L;
DNode?*p;
L?=?CreateList();
while(1){
switch(menuselect()){
int?i;
ElemType?e;
case?1:?
PrintList(L);
break;
case?2:
printf(“請(qǐng)輸入查找節(jié)點(diǎn)位置:“);
scanf(“%d“&i);
p?=?GetElemBySeq(Li);
printf(“結(jié)點(diǎn)值為:%d“p->data);
printf(“\n“);
break;
case?3:
printf(“請(qǐng)輸入要插入節(jié)點(diǎn)的位置:“);
scanf(“%d“&i);
printf(“請(qǐng)輸入要插入節(jié)點(diǎn)的值:“);
scanf(“%d“&e);
InsertNode(Lei);
PrintList(L);
break;
case?4:
printf(“請(qǐng)輸入要?jiǎng)h除節(jié)點(diǎn)的位置:“);
scanf(“%d“&i);
DeleteNode(?L??i);
PrintList(L);
break;
case?5:
exit(0);
}
}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????2717??2014-03-05?11:35??Dli
-----------?---------??----------?-----??----
?????????????????2717????????????????????1
評(píng)論
共有 條評(píng)論