如何用读取并利用链表里的数据
这是我看视频打的代码,但是链表没学过,但我想接着弄完,就是第三个功能输出平均分 如何接着我上面的代码输出?#include <stdio.h>
#include <stdlib.h>
typedef struct tagStudent
//typedef给你的基本类型起一个别名
{
//匈牙利命名法
char szName[10]; //姓名
int nStuNum; //学号
int nScore1; //成绩1
int nScore2; //成绩2
int nScore3; //成绩3
}Student;
typedef struct tagNode
{
Student stu; //学生信息 数据域
struct tagNode *pNext; //指向下一个学生 指针域
}Node;
//定义的链表头
Node *g_pHead=NULL;
void InputStudent();
void PrintStudent();
void SaveStudent();
void PrintAverage();
void main()
{
printf("==========================欢迎使用高校学生成绩管理系统==========================\n");
while(1)
{
//\t表示制表符
printf("\t====请选择功能列表====\n");
printf("\t\t1.录入学生成绩\n");
printf("\t\t2.打印学生成绩\n");
printf("\t\t3.输出每个学生的平均分\n");
printf("\t\t4.输出每门课的平均分\n");
printf("\t\t5.按学生平均分降序输出学生信息\n");
printf("\t\t6.统计不及格学生并输出其相应信息\n");
printf("\t\t0.退出系统\n");
int ch;
//%c格式化去读取一个字符
scanf("%d",&ch);
switch (ch)
{
case 1:
InputStudent();
break;
case 2:
PrintStudent();
break;
case 3:
PrintAverage();
break;
case 4:
break;
case 5:
break;
case 0:
break;
}
}
}
//录入学生成绩
void InputStudent()
{
printf("\n请输入学生信息:姓名 学号 成绩1 成绩2 成绩3");
Node* p; //当前节点
p=g_pHead;
while (g_pHead!=NULL && p->pNext!=NULL)
{
p = p->pNext;
}
//定一个新节点
Node *pNewNode =(Node*)malloc(sizeof(Node));
pNewNode->pNext = NULL;
if(g_pHead == NULL)
{
g_pHead = pNewNode;
p = g_pHead;
}
else
{
p->pNext = pNewNode;
}
//输入新的学生数据
//姓名 学号 成绩1 成绩2 成绩3
scanf("%s %d %d %d %d",
pNewNode->stu.szName,
&pNewNode->stu.nStuNum,
&pNewNode->stu.nScore1,
&pNewNode->stu.nScore2,
&pNewNode->stu.nScore3
);
printf("添加数据成功!\n");
}
//打印学生信息
void PrintStudent()
{
printf("打印所有学生信息\n");
Node *p;//当前节点
p = g_pHead;
while (p!=NULL)
{
printf("学号:%d\t姓名:%s\t成绩1:%d\t成绩2:%d\t成绩3:%d\n",
p->stu.nStuNum,
p->stu.szName,
p->stu.nScore1,
p->stu.nScore2,
p->stu.nScore3
);
p = p->pNext;
}
}