学生信息链表的创建和输出
在定义一个包含学生信息(学号、姓名、成绩)的链表基础上,读入相应的学生数据来完成学生信息链表的创建,然后统计学生表中的学生个数,同时逐行输出每个学生的信息。要求完成创建链表函数和输出显示学生链表信息函数。函数接口定义:
int CreateList(LinkList &L,Student b);
int PrintList(LinkList &L);
其中 L 和 b 都是用户传入的参数。 L 是创建的学生信息链表; b 是要输入的一个学生的结构体数据。
裁判测试程序样例:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef struct tagStudent
{
char no[20],name[50];
float score;
}Student;
typedef struct LNode
{
Student data;
struct LNode *next;
}LNode,*LinkList;
int ListInit(LinkList &L)
{
L=new LNode;
L->next=NULL;
return OK;
}
int ListEmpty(LinkList L){
if(L->next)
return 0;
else
return 1;
}
int ListLength(LinkList L){
LinkList p;
p=L->next;
int i=0;
while(p){
i++;
p=p->next;
}
return i;
}
int CreateList(LinkList &L,Student b);
int PrintList(LinkList &L);
int main()
{
LinkList L,head;
ListInit(L);
head=L;
Student s;
while(cin>>s.no>>s.name>>s.score) //输入no、name、score
{
if(!strcmp(s.no,"0")&&!strcmp(s.name,"0")&&s.score==0.0)
break; //0 0 0 时结束
CreateList(L,s);
}
cout<<ListLength(head)<<endl;
PrintList(head);
return 0;
}
/* 请在这里填写答案 */
输入样例:
输入n+1行,其中前n行是n个学生的信息(学号、姓名、成绩),每个学生信息占一行,学号、姓名、成绩用空格分隔,成绩之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中学号和姓名为字符串类型,成绩为浮点数类型。
9787302257646 Jack 95
9787302164340 Sam 80
9787302219972 Marry 82
9787302203513 David 86
9787810827430 Susan 86
9787302257800 Dora 89
9787811234923 Lily 85
9787822234110 Kimi 88
0 0 0
输出样例:
总计n+1行,第1行是所创建的学生表中的学生个数,后n行是n个学生的信息(学号、姓名、成绩),每个学生信息占一行,学号、姓名、成绩用空格分隔。其中成绩输出保留一位小数。
8
9787302257646 Jack 95.0
9787302164340 Sam 80.0
9787302219972 Marry 82.0
9787302203513 David 86.0
9787810827430 Susan 86.0
9787302257800 Dora 89.0
9787811234923 Lily 85.0
9787822234110 Kimi 88.0
Press any key to continue
咋做的呢,完全没思路