//雙向鏈表
#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..");
}
雙向鏈表的創建刪除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.