(16分)为了对班级学生的基本信息和C语言程序设计成绩进行管理,利用结构体变量记录每个学生的学号和C程序设计成绩。先根据用户输入的人数建立单向链表来存放学生的信息,然后输出各个学生的信息,分别用 (1)写函数creat(),使其建立单链表来存放学生的信息及输出各学生的信息: (2)写函数delete(),按学号检素学生信息,如果找到,则删除该学生信息,并输出删除过后的所有学生信息,否则输出“不存在! (3)写函数输出链表中的结点。 (4)释放链表所占内存空间。 输入和输出格式; 输入信息提示,“请输入班级人数: \wn" 输入提示信息。“请依次输入每个学生的学号成绩1”"请输入第财个学生的成绩信息。x"
时间: 2023-11-27 20:49:23 浏览: 85
(代码如下,仅供参考)
```c
#include <stdio.h>
#include <stdlib.h>
// 学生信息结构体
typedef struct student {
int num; // 学号
int score; // 成绩
struct student *next; // 指向下一个节点的指针
} Student;
// 创建链表
Student *creat(int n) {
Student *head, *p, *q;
int i;
head = p = (Student*)malloc(sizeof(Student));
printf("请输入每个学生的学号和成绩:\n");
for (i = 0; i < n; i++) {
q = (Student*)malloc(sizeof(Student));
scanf("%d %d", &q->num, &q->score);
p->next = q;
p = q;
}
p->next = NULL;
return head;
}
// 输出链表中的结点
void output(Student *head) {
Student *p = head->next;
while (p != NULL) {
printf("学号:%d,成绩:%d\n", p->num, p->score);
p = p->next;
}
}
// 按学号删除结点
void delete(Student *head, int num) {
Student *p = head->next, *prev = head;
while (p != NULL) {
if (p->num == num) {
prev->next = p->next;
free(p);
printf("删除成功!\n");
output(head);
return;
}
prev = p;
p = p->next;
}
printf("不存在!\n");
}
// 释放链表所占内存空间
void free_list(Student *head) {
Student *p = head, *q;
while (p != NULL) {
q = p;
p = p->next;
free(q);
}
}
int main() {
int n, num;
Student *head;
printf("请输入班级人数:\n");
scanf("%d", &n);
head = creat(n);
output(head);
printf("请输入要删除的学生学号:\n");
scanf("%d", &num);
delete(head, num);
free_list(head);
return 0;
}
```
阅读全文