双向链表的创建删除

来源:互联网 发布:天刀超帅胡歌捏脸数据 编辑:程序博客网 时间:2024/06/06 16:49
//双向链表#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..");}

原创粉丝点击