//双向链表
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct node
{
char name[20];
struct node *prior,*next;
}stud;
//创建双向链表
stud *creat(int n)
{
stud *p,*h,*s;
int i;
h=(stud*)malloc(sizeof(stud));
h->name[0]='\0';
h->next=NULL;
h->prior=NULL;
p=h;
for(i=0;i<n;i++)
{
s=(stud*)malloc(sizeof(stud));
p->next=s;
printf("input the %d students' name", i+1);
scanf("%s",s->name);
s->prior=p;
s->next=NULL;
p=s;
}
p->next=NULL;
return(h);
}
//查找
stud*search(stud*h,char*x)
{
stud*p;
char*y;
p=h->next;
while(p)
{
y=p->name;
if(strcmp(y,x)==0)
{
return(p);
}else
{
p=p->next;
}
printf("cannot find data\n");
}
return NULL;
}
//删除
void del(stud*p)
{
p->next->prior=p->prior;
p->prior->next=p->next;
free(p);
}
void main()
{
int number;
char sname[20];
stud *head,*sp;
puts("Please input the size of the list");
scanf("%d",&number);
head=creat(number);
sp=head->next;
sp=head->next;
while(sp)
{
printf("%s",sp->name);
sp=sp->next;
}
printf("\nPlease input the name which you want to find:\n");
scanf("%s",sname);
sp=search(head,sname);
printf("the name you want find is :%s\n",sp->name);
del(sp);
sp=head->next;
printf("Now the double list is :\n");
while(sp)
{
printf("%s",&*(sp->name));
sp=sp->next;
}
printf("\n");
puts("\n Press any key to quit..");
}双向链表的创建删除
最新推荐文章于 2026-01-06 02:26:14 发布
1751

被折叠的 条评论
为什么被折叠?



