雙向迴圈鍊錶的刪除

2021-04-20 00:09:16 字數 713 閱讀 4310

刪除某個結點,其實就是插入某個結點的逆操作。還是對於雙向迴圈鍊錶,要在連續的三個結點s,p,q中刪除p結點,只需把s的右鏈域指標指向q,q的左鏈域指標指向s,並收回p結點就完成了。

下面就是乙個應用雙向迴圈鍊錶刪除演算法的例子:

#include

#include

#include

#define n 10

typedef struct node

stud;

stud * creat(int n)

h->name[0]='/0';

h->llink=null;

h->rlink=null;

p=h;

for(i=0;i〈n;i++)

p-〉rlink=s;

printf("請輸入第%d個人的姓名",i+1);

scanf("%s",s->name);

s->llink=p;

s->rlink=null;

p=s;

}h->llink=s;

p->rlink=h;

return(h);

}stud * search(stud *h,char *x)

printf("沒有查詢到該資料!");

}void print(stud *h)

printf("/n");

}void del(stud *p)

main()

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

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

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

a 為刪除,b 為插入 雙向迴圈鍊錶實則為乙個環狀,因此插入 刪除 對任一位置的節點都適用 如下 define ok 1 define error 0typedef intstatus typedef struct dulnode dulinkedlist dulinkedlist getelemp...

雙向鍊錶和雙向迴圈鍊錶

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼next和prior都指向自己。而對於雙迴圈鍊錶,只需要最後乙個元素的next指向head next,head next的prior指向最後乙個節點即可。新節點s插入鍊錶,s next給p結點,s prior給p prior,然後,p prior n...