建立一个有5个结点的单向链表。每个结点包含姓名、年龄和工资。编写两个函数,一个用于建立链表,另一个用

另一个用于输出链表。
要求:1 建立链表的函数名为creat,数据输入和链表建立在函数中实现;
2 输出链表的函数名为output,用以实现creat建立的链表数据的输出;
3 在main函数中调用creat函数和output函数。
模版:(这个不对,只是参考,尽量用这种方法)
#include<stdio.h>
#include<malloc.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)
{
strcut Student *p;
printf("\nNow,These %d records are :\n",n);
p = head;
if(head != NULL)
do
{
printf("%d %5.lf\n",p->num,p->score);
p = p->next;
}while(p != NULL);
}
void main()
{
struct Student *head;
head = creat();
print(head);
}

//就在原来的基础上改了一点,按你的模版的话,输入必须int,float的形式(两个数之间有逗号,如果不想要的话,就把输入那儿中间的逗号去掉)
//例如
/*
13,89.90
89,34.34
78,67
0,0
*/最后0结尾
#include<stdio.h>
#include<malloc.h>

#define LEN sizeof(struct Student)

struct Student
{
int num;
float score;
struct Student *next;
};
int n;
struct Student *creat()
{
struct Student *head = NULL;
struct Student *p1, *p2;
n = 0;
p1 = ( struct Student * ) malloc(LEN);
scanf("%d , %f", &p1->num,&p1->score);
while(p1->num != 0)
{
n++;
if(n == 1)head = p1;
else p2->next = p1;
p2 = p1;
p1 = (struct Student *)malloc(LEN);
scanf("%d , %f", &p1->num,&p1->score);
}
p2->next = NULL;
return head;
}
void print(struct Student *head)
{
struct Student *p = head;
printf("\nNow,These %d records are :\n",n);
while (p != NULL)
{
printf("%d %.5f\n",p->num,p->score);
p = p->next;
}
}
int main()
{
struct Student *head;
head = creat();
print(head);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答