用c写一个单链表用来储存学生的学号和成绩
时间: 2023-04-06 17:00:58 浏览: 129
学生成绩管理系统(单链表)(C语言)
5星 · 资源好评率100%
好的,我可以回答这个问题。以下是用 C 语言编写单链表来存储学生学号和成绩的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct student {
int id; // 学号
float score; // 成绩
struct student *next; // 指向下一个节点的指针
} Student;
int main() {
// 创建头节点
Student *head = (Student *)malloc(sizeof(Student));
head->next = NULL;
// 添加节点
Student *p = head;
int id;
float score;
printf("请输入学生的学号和成绩,以空格分隔,输入 -1 结束:\n");
while (scanf("%d %f", &id, &score) == 2 && id != -1) {
// 创建新节点
Student *new_node = (Student *)malloc(sizeof(Student));
new_node->id = id;
new_node->score = score;
new_node->next = NULL;
// 将新节点插入链表尾部
p->next = new_node;
p = new_node;
}
// 遍历链表并输出学生信息
printf("学生信息如下:\n");
p = head->next;
while (p != NULL) {
printf("学号:%d,成绩:%.2f\n", p->id, p->score);
p = p->next;
}
// 释放内存
p = head;
while (p != NULL) {
Student *temp = p;
p = p->next;
free(temp);
}
return 0;
}
```
以上代码中,我们定义了一个 `Student` 结构体来表示学生,其中包含学号和成绩两个属性,以及一个指向下一个节点的指针。我们创建了一个头节点 `head`,并将其指向下一个节点的指针初始化为 `NULL`。然后,我们通过循环读取用户输入的学号和成绩,并创建新节点来存储这些信息。每次创建新节点后,我们将其插入链表尾部,并将指针 `p` 指向新节点,以便下一次插入。最后,我们遍历链表并输出学生信息,然后释放内存。
阅读全文