【简单的链表问题】 遇到了一个解决不了的问题
我的运行结果和答案是一样的 为什么过不了原题目如下 我只写了两个函数(下图有) 其他为原有的
代码如下
#include <stdio.h>
#include <stdlib.h>
struct stud_node {
int num;
char name[20];
int score;
struct stud_node *next;
};
struct stud_node *createlist();
struct stud_node *deletelist( struct stud_node *head, int min_score );
int main()
{
int min_score;
struct stud_node *p, *head = NULL;
head = createlist();
scanf("%d", &min_score);
head = deletelist(head, min_score);
for ( p = head; p != NULL; p = p->next )
printf("%d %s %d\n", p->num, p->name, p->score);
return 0;
}
struct stud_node *createlist()
{
struct stud_node *p=NULL;
int number;
do
{
struct stud_node *q;
scanf("%d",&number);
if(number!=0)
{
q=(struct stud_node *)malloc(sizeof(struct stud_node ));
q->num=number;
scanf("%s",q->name);
scanf("%d",&q->score);
q->next=NULL;
struct stud_node *last;
last=p;
if(last)
{
while(last->next)
{
last=last->next;
}
last->next=q;
}
else
{
p=q;
}
}
}while(number!=0);
return p;
}
struct stud_node *deletelist( struct stud_node *head, int min_score )
{
struct stud_node*p,*q;
for(q=NULL,p=head;p;q=p,p=p->next)
{
if(p->score<min_score)
{
if(q)
{
q->next=p->next;
}
else
{
head=p->next;
}
free(p);
}
}
return head;
}
题目要求如下
运行结果如下
输入
输出
【最后的结果!】
没找出任何毛病 大佬帮帮忙!
附:输入样例
1 zhang 78
2 wang 80
3 li 75
4 zhao 85
0
80