大家帮帮我看看这个 【双向的链表程序】
删除节点后 输出有错误 程序代码:
#include <stdio.h> #include <malloc.h> #include <string.h> typedef struct node { char name[20]; struct node *prior,*next; }stud; stud *creat(int n) //此处用到了typedef的功能 { stud *p,*h,*s; int i; h = (stud *)malloc(sizeof(stud)); h->name[0] = '\0'; h->prior = NULL; h->next = NULL; p = h; for (i=0;i<n;i++) { s = (stud *)malloc(sizeof(stud)); p->next = s; printf("输入第%d学生的姓名\n",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("Can't Find It\n"); } 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("Long of the link\n"); scanf("%d",&number); head = creat(number); sp = head->next; printf("Now The Link Is :\n"); while(sp) { printf("%s ",sp->name); sp = sp->next; } printf("\n"); printf("Input the name you want to search\n"); scanf("%s",sname); sp = search(head,sname); del(sp); printf("Now the Link is \n"); while(sp) { printf("%s ",sp->name); sp = sp->next; } printf("\n"); puts("\nAnykey to exit"); }