大家帮帮我看看这个 【双向的链表程序】
删除节点后 输出有错误
程序代码:#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");
}







