编写一个输出链表的函数print。
解:程序:
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
struct Student
{
long num;
float score;
struct Student *next;
};
int n;
struct Student *creat()//建立链表的函数
{
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 = 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;
return(head);
}
void print(struct Student *head)//输出链表的函数
{
struct Student *p;
printf("\nNow,These %d records are:\n",n);//records记录
p = head;//p指向第1个结点
if (head != NULL)//若不是空表
{
do
{
printf("%ld %5.1f\n", p->num, p->score);
p = p->next;
} while (p != NULL);
}
}
void main()
{
struct Student *head;
head= creat();//调用函数返回链表第1个结点的地址
print(head);
}
结果:
1001,77
1003,88
1005,99
0,0
Now,These 3 records are:
1001 77.0
1003 88.0
1005 99.0
请按任意键继续. . .