国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

鏈表的c語(yǔ)言實(shí)現(xiàn)(九)

2019-11-17 05:20:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
3、刪除
刪除某個(gè)結(jié)點(diǎn),其實(shí)就是插入某個(gè)結(jié)點(diǎn)的逆操作。還是對(duì)于雙向循環(huán)鏈表,要在連續(xù)的三個(gè)結(jié)點(diǎn)s,p,q中刪除p結(jié)點(diǎn),只需把s的右鏈域指針指向q,q的左鏈域指針指向s,并收回p結(jié)點(diǎn)就完成了。
下面就是一個(gè)應(yīng)用雙向循環(huán)鏈表刪除算法的例子:
#include
#include
#include
#define N 10

typedef strUCt node
{
char name[20];
struct node *llink,*rlink;
}stud;
stud * creat(int n)
{
stud *p,*h,*s;
int i;
if((h=(stud *)malloc(sizeof(stud)))==NULL)
{
exit(0);
}
h->name[0]='/0';
h->llink=NULL;
h->rlink=NULL;
p=h;
for(i=0;i〈n;i++)
{
if((s= (stud *) malloc(sizeof(stud)))==NULL)
{
printf("不能分配內(nèi)存空間!");
exit(0);
}
p-〉rlink=s;
printf("請(qǐng)輸入第%d個(gè)人的姓名",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)
{
stud *p;
char *y;
p=h->rlink;
while(p!=h)
{
y=p->name;
if(strcmp(y,x)==0)
return(p);
else p=p->rlink;
}
printf("沒(méi)有查找到該數(shù)據(jù)!");
}
void print(stud *h)
{
int n;
stud *p;
p=h->rlink;
printf("數(shù)據(jù)信息為:/n");
while(p!=h)
{
printf("%s ",&*(p->name));
p=p->rlink;
}
printf("/n");
}
void del(stud *p)
{
(p->rlink)->llink=p->llink;
(p->llink)->rlink=p->rlink;
free (p);
}
main()
{
int number;
char studname[20];
stud *head,*searchpoint;
number=N;
clrscr();
head=creat(number);
print(head);
printf("請(qǐng)輸入你要查找的人的姓名:");
scanf("%s",studname);
searchpoint=search(head,studname);
printf("你所要查找的人的姓名是:%s/n",*&searchpoint->name);
del(searchpoint);
print(head);
}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 滨海县| 凌云县| 道孚县| 曲周县| 神农架林区| 陈巴尔虎旗| 平顺县| 修水县| 崇州市| 定兴县| 香河县| 济南市| 安仁县| 南澳县| 卢湾区| 辽宁省| 锡林郭勒盟| 隆昌县| 玉屏| 九龙城区| 平南县| 稷山县| 昌都县| 曲周县| 徐水县| 乌拉特前旗| 合作市| 灯塔市| 海林市| 淄博市| 廊坊市| 东乌| 四平市| 二手房| 洪洞县| 壤塘县| 宁安市| 宁安市| 怀安县| 延庆县| 永善县|