c语言写一个简单的学生成绩

#include<stdio.h>
#include<malloc.h>
typedef struct Student{
int number; //数据域
int yuwen; //数据域
int shuxue; //数据域
int yingyu; //数据域
Student * Next;
}Node,*PNode;
//创造链表
PNode creatStudent(void){
int len ; // 用于定义链表长度
int val1 ; // 用于存放节点数值—number
int val2; //—yuwen
int val3; //—shuxue
int val4; //—yingyu
PNode PHead = (PNode)malloc(sizeof(Node)); // 创建分配一个头节点内存空间
//头节点相当于链表的哨兵,不存放数据,指向首节点(第一个节点)
if (PHead == NULL) // 判断是否分配成功
{
printf(“空间分配失败 \n”);
exit(-1);
}
PNode PTail = PHead; // 链表的末尾节点,初始指向头节点
PTail->Next = NULL; // 最后一个节点指针置为空
printf(“请输入学生的个数:”);
scanf("%d", &len); // 输入节点个数
for (int i = 0; i < len; i++) {
PNode pNew = (PNode)malloc(sizeof(Node)); // 分配一个新节点
if (pNew == NULL) {
printf(“分配新节点失败\n”);
exit(-1);
}
printf(“请输入第 %d 个学生的学号:”, i + 1);
scanf("%d", &val1); // 输入链表节点的数据
printf(“请输入语文的分数:”);
scanf("%d", &val2);
printf(“请输入数学的分数:”);
scanf("%d", &val3);
printf(“请输入英语的分数:”);
scanf("%d", &val4);
pNew->number= val1; // 把数据赋值给节点数据域-----------------------
pNew->yuwen=val2;
pNew->shuxue=val3; // 把数据赋值给节点数据域-----------------------
pNew->yingyu=val4;
PTail->Next = pNew; // 末尾节点指针指向下一个新节点
pNew->Next = NULL; // 新节点指针指向为空
PTail = pNew; // 将新节点复制给末尾节点
}
printf(“创建链表成功\n”);
return PHead; // 返回头节点
}
void PrintLList(Node * q){
Node *p;
p=q->Next;
printf(“字符单链表结果是:\n”);
while(p!=NULL){
printf(“学号:%d-分数:%d语文:%d数学:%d英语:%d”,p->number,p->yuwen,p->shuxue,p->yingyu);
printf("\n");
p=p->Next;
}
printf("\b\n");
}
int GetLListLength(Node *L){
Node *p;
int j;
p=L->Next;
j=0;
while(p!=NULL){
p=p->Next;
j++;
}
return j;
}
int insertLList(Node *L){
int number;
int yuwen; //数据域
int shuxue; //数据域
int yingyu; //数据域
Node *pre,s;
int k=0;
pre=L;
while(pre->Next){
pre=pre->Next;
k=k+1;
}
if(!pre)
{
printf(“插入位置不合理!”);
return 0;
}
s=(Node
)malloc(sizeof(Node));
printf(“请输入学生的学号”);
scanf("%d",&number);
printf(“请输入语文的分数:”);
scanf("%d",&yuwen);
printf(“请输入数学的分数:”);
scanf("%d",&shuxue);
printf(“请输入英语的分数:”);
scanf("%d",&yingyu);
s->number=number;
s->yuwen=yuwen;
s->shuxue=shuxue;
s->yingyu=yingyu;
s->Next=pre->Next;
pre->Next=s;
return 1;
}
int main(){
PNode list1=creatStudent();
PrintLList(list1);
printf(“学生的人数为:%d”,GetLListLength(list1));
printf("\n");
printf(“现在开始进行插入学生数据操作”);
printf("\n");
int a=insertLList(list1);
printf("\n");
PrintLList(list1);
return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值