用链表实现对学生成绩进行存储、插入及显示功能,学生包括I和score属性。 结构体类型定义如下: struct grade { int score; char ID[6]; struct grade *next 〈1)写西数创建单向链表并存储学生成绩信息,输入工和ec
时间: 2023-12-10 13:39:39 浏览: 175
1_lower7y7_定义一个包含学生信息(学号_成绩)的顺序表和链表(二选一)_姓名_使其具有如下功能_
5星 · 资源好评率100%
下面是使用链表实现对学生成绩进行存储、插入及显示功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct grade {
int score;
char ID[6];
struct grade *next;
};
struct grade *head = NULL;
void append(int score, char ID[]) {
struct grade *new_grade = (struct grade*) malloc(sizeof(struct grade));
new_grade->score = score;
strcpy(new_grade->ID, ID);
new_grade->next = NULL;
if (head == NULL) {
head = new_grade;
} else {
struct grade *current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = new_grade;
}
}
void insert(int score, char ID[], int pos) {
struct grade *new_grade = (struct grade*) malloc(sizeof(struct grade));
new_grade->score = score;
strcpy(new_grade->ID, ID);
new_grade->next = NULL;
if (pos == 1) {
new_grade->next = head;
head = new_grade;
} else {
struct grade *current = head;
for (int i = 1; i < pos - 1; i++) {
if (current == NULL) {
printf("Invalid position\n");
return;
}
current = current->next;
}
new_grade->next = current->next;
current->next = new_grade;
}
}
void display() {
struct grade *current = head;
printf("ID\tScore\n");
while (current != NULL) {
printf("%s\t%d\n", current->ID, current->score);
current = current->next;
}
}
int main() {
int score, pos;
char ID[6], choice;
do {
printf("Enter choice:\n 1. Append\n 2. Insert\n 3. Display\n 4. Exit\n");
scanf(" %c", &choice);
switch (choice) {
case '1':
printf("Enter ID: ");
scanf("%s", ID);
printf("Enter score: ");
scanf("%d", &score);
append(score, ID);
break;
case '2':
printf("Enter ID: ");
scanf("%s", ID);
printf("Enter score: ");
scanf("%d", &score);
printf("Enter position: ");
scanf("%d", &pos);
insert(score, ID, pos);
break;
case '3':
display();
break;
case '4':
printf("Exiting...\n");
break;
default:
printf("Invalid choice\n");
}
} while (choice != '4');
return 0;
}
```
在上面的代码中,我们定义了 `struct grade` 结构体来存储学生的成绩信息,包括 `score` 和 `ID` 属性。我们使用单向链表来存储这些信息,其中每个节点包含一个 `struct grade` 结构体和一个指向下一个节点的指针。
在 `append()` 函数中,我们创建一个新的 `struct grade` 节点,将输入的 `score` 和 `ID` 值存储在其中,并将其添加到链表的末尾。
在 `insert()` 函数中,我们创建一个新的 `struct grade` 节点,将输入的 `score` 和 `ID` 值存储在其中,然后将其插入到链表的指定位置。如果指定的位置无效,则打印错误消息。
在 `display()` 函数中,我们遍历整个链表,并输出每个节点中的 `score` 和 `ID` 值。
最后,在 `main()` 函数中,我们使用一个 `do-while` 循环来接受用户输入,根据输入的选项调用相应的函数。当用户选择退出时,程序结束。
阅读全文