c语音建立一个含有10个结点的单链表,每个节点包括:学号、姓名、性别、年龄和一门课程的成绩。向原单链表中插入两个新结点。
时间: 2023-07-14 13:13:42 浏览: 82
下面是一个简单的 C 代码示例,用于创建一个包含 10 个节点的单链表,每个节点包括:学号、姓名、性别、年龄和一门课程的成绩。并向原单链表中插入两个新结点。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义链表节点结构体
struct student {
int id;
char name[20];
char gender[10];
int age;
float score;
struct student *next;
};
int main() {
// 创建头节点
struct student *head = (struct student*)malloc(sizeof(struct student));
head->next = NULL;
// 创建 10 个节点
struct student *p = head;
for(int i = 0; i < 10; i++) {
struct student *node = (struct student*)malloc(sizeof(struct student));
printf("请输入第 %d 个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &node->id);
printf("姓名:");
scanf("%s", node->name);
printf("性别:");
scanf("%s", node->gender);
printf("年龄:");
scanf("%d", &node->age);
printf("成绩:");
scanf("%f", &node->score);
p->next = node;
p = p->next;
p->next = NULL;
}
// 输出链表
printf("\n原链表:\n");
p = head->next;
while(p != NULL) {
printf("%d\t%s\t%s\t%d\t%.2f\n", p->id, p->name, p->gender, p->age, p->score);
p = p->next;
}
// 插入新节点
struct student *node1 = (struct student*)malloc(sizeof(struct student));
printf("\n请输入要插入的第一个新节点的信息:\n");
printf("学号:");
scanf("%d", &node1->id);
printf("姓名:");
scanf("%s", node1->name);
printf("性别:");
scanf("%s", node1->gender);
printf("年龄:");
scanf("%d", &node1->age);
printf("成绩:");
scanf("%f", &node1->score);
struct student *node2 = (struct student*)malloc(sizeof(struct student));
printf("\n请输入要插入的第二个新节点的信息:\n");
printf("学号:");
scanf("%d", &node2->id);
printf("姓名:");
scanf("%s", node2->name);
printf("性别:");
scanf("%s", node2->gender);
printf("年龄:");
scanf("%d", &node2->age);
printf("成绩:");
scanf("%f", &node2->score);
// 在第 5 个节点后插入新节点1
p = head;
for(int i = 0; i < 4; i++) {
p = p->next;
}
node1->next = p->next;
p->next = node1;
// 在第 8 个节点后插入新节点2
p = head;
for(int i = 0; i < 7; i++) {
p = p->next;
}
node2->next = p->next;
p->next = node2;
// 输出链表
printf("\n插入新节点后的链表:\n");
p = head->next;
while(p != NULL) {
printf("%d\t%s\t%s\t%d\t%.2f\n", p->id, p->name, p->gender, p->age, p->score);
p = p->next;
}
return 0;
}
```
运行程序后,根据提示输入学生信息和要插入的新节点信息,即可创建包含 10 个节点的单链表,并向原单链表中插入两个新结点。程序输出原链表和插入新节点后的链表。
阅读全文