s.c
Code:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
//#define NULL 0
#define LEN sizeof(struct student)
struct student
{
long num;
float score;
struct student * next;
};
int n;
struct student *create(void)
{
struct student *head;
struct student *p1,*p2;
n = 0;
p1 = p2 = (struct student *) malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
head = NULL;
while(p1->num != 0)
{
n++;
if ( n == 1 ) head = p1;
else p2->next = p1;
p2 = p1;
p1 = (struct student *) malloc (LEN);
scanf("%ld,%f",&p1->num,&p1->score);
}
p2->next = NULL;
return(head);
}
void showLink(struct student *h)
{
while( h->num != 0 )
{
printf("%ld,%f\n",h->num,h->score);
h = h->next;//if h now is pointng the last node, h->next is invalid, then error occurs
}
}
int main()
{
struct student *h;
h = create();
showLink(h);
return 1;
}
h = h->next;//if h now is pointng the last node, h->next is invalid, then error occurs
how to add codes to solve this problem?