雙向迴圈鍊錶的建立、查詢、新增、刪除
#include
#include
typedef struct lnodelnode,*dlinklist;
//尾插法建立雙向鍊錶
dlinklist create(dlinklist l,int n)
return l; }
void menu()
//獲取雙向迴圈鍊錶中某一元素的值
dlinklist getelem(dlinklist l,int n)
if(n>count)
else
return p; }
}//刪除雙向迴圈鍊錶某一位置的元素
void deleteelem(dlinklist l,int n)
if(n>count)
else
dlinklist t;
t=p->next;
p->next=t->next;
t->next->pre=p;
free(t); }
} //在某乙個位置插入元素
dlinklist insert(dlinklist l,int m,int e)
if(m>count)
else
dlinklist q;
q=(dlinklist) malloc (sizeof(lnode));
q->data=e;
q->next=p->next;
p->next->pre=q;
p->next=q;
q->pre=p;
return l; }
}void main()
break;
case 2:
printf("請輸入要查詢與元素的位置:");
scanf("%d",&n);
dlinklist t;
t=getelem(l,n);
printf("該位置的資料為:%d",t->data);
break;
case 3:
printf("請輸入要刪除元素的位置:");
scanf("%d",&i);
deleteelem(l,i);
break;
case 4:
printf("請輸入要插入元素的位置:");
scanf("%d",&i);
printf("請輸入要插入元素:");
scanf("%d",&e);
insert(l,i,e);
break;
case 0:
printf("已結束程式!!!\n");
break;
default:
printf("輸入錯誤!!!\n");
break; }
}while(m!=0); }
雙向迴圈鍊錶(建立 插入 刪除 遍歷)
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...
雙向迴圈鍊錶的刪除
刪除某個結點,其實就是插入某個結點的逆操作。還是對於雙向迴圈鍊錶,要在連續的三個結點s,p,q中刪除p結點,只需把s的右鏈域指標指向q,q的左鏈域指標指向s,並收回p結點就完成了。下面就是乙個應用雙向迴圈鍊錶刪除演算法的例子 include include include define n 10 t...
雙向迴圈鍊錶的建立 查詢 插入 刪除和遍歷等操作
雙向迴圈鍊錶的建立 查詢 插入 刪除和遍歷等操作 ifndef dlinklist h define dlinklist h include include typedef int datatype typedef struct double link node dlk,dplk extern vo...