编写函数,遍历输出链表中数据。(提示:利用结构体数据)
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct STUDENT)
struct STUDENT
{
long num;
float score;
struct STUDENT *next;
};
int n;
void print(struct STUDENT *head)
{
//在这里添加函数体代码
//head或者为空指针,或者指向链表的第一个数据结点,没有头结点
// 输出格式
1 88.000000
2 99.000000
//即每一行有两项,用空格隔开,第一个是一个整数num,第二个是float数
//每一行后面有一个换行符号
}
struct STUDENT *creat()
{
struct STUDENT *head,*p1,*p2; n=0;
p1=p2=( struct STUDENT*) malloc(LEN);
scanf("%ld%f",&p1->num,&p1->score);
head=NULL;
while(p1->num!=0)
{
n=n+1;
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;
free(p1);
return(head);
}
void freenoheadlist(struct STUDENT *h)
{
struct STUDENT *t;
while(h)
{
t=h->next;
free(h);
h=t;
}
}
int main()
{
struct STUDENT *pt;
pt=creat();
print(pt);
freenoheadlist(pt);
return 0;
}