鍊錶的C語言實現(五)

2021-03-31 22:53:42 字數 1210 閱讀 8635

3、刪除

假如我們已經知道了要刪除的結點p的位置,那麼要刪除p結點時只要令p結點的前驅結點的鏈域由儲存p結點的位址該為儲存p的後繼結點的位址,並**p結點即可。

以下便是應用刪除演算法的例項:

#include

#include

#include

#define n 10

typedef struct node

stud;

stud * creat(int n) /*建立新的鍊錶的函式*/

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

h->link=null;

p=h;

for(i=0;ilink=s;

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

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

s->link=null;

p=s;

}return(h);

}stud * search(stud *h,char *x) /*查詢函式*/

if(p==null)

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

}stud * search2(stud *h,char *x) /*另乙個查詢函式,返回的是上乙個查詢函式的直接前驅結點的指標,*/

/*h為表頭指標,x為指向要查詢的姓名的指標*/

/*其實此函式的演算法與上面的查詢演算法是一樣的,只是多了乙個指標s,並且s總是指向指標p所指向的結點的直接前驅,*/

/*結果返回s即是要查詢的結點的前乙個結點*/

}if(p==null)

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

}void del(stud *x,stud *y) /*刪除函式,其中y為要刪除的結點的指標,x為要刪除的結點的前乙個結點的指標*/

main()

{int number;

char fullname[20];

stud *head,*searchpoint,*forepoint;

number=n;

head=creat(number);

printf("請輸入你要刪除的人的姓名:");

scanf("%s",fullname);

searchpoint=search(head,fullname);

forepoint=search2(head,fullname);

del(forepoint,searchpoint);

鍊錶的C語言實現(五)

一 迴圈鍊錶 迴圈鍊錶是與單鏈表一樣,是一種鏈式的儲存結構,所不同的是,迴圈鍊錶的最後乙個結點的指標是指向該迴圈鍊錶的第乙個結點或者表頭結點,從而構成乙個環形的鏈。迴圈鍊錶的運算與單鏈表的運算基本一致。所不同的有以下幾點 1 在建立乙個迴圈鍊錶時,必須使其最後乙個結點的指標指向表頭結點,而不是象單鏈...

鍊錶的C語言實現

編輯 c巨集例項 以下 摘自linux核心2.6.21.5原始碼 部分 展示了鍊錶的另一種實現思路,未採用ansi c標準,採用gnu c標準,遵從gpl版權許可。struct list head define list head init name define list head name st...

雙向鍊錶C語言實現

ifndef stdlist h define stdlist h typedef struct tagstdnode stdnode,lpstdnode typedef struct tagstdlist stdlist,lpstdlist 鍊錶資料結構 struct tagstdnode 鍊錶節...