进行链表基本操作 ①初始链表为空,即链表的头指针为空。 ②对于第2题的表所示学生情况,依次将每个学生的情况作为一个节点插入单链表的链头(即当前插入的节点成为第一个节点) ③所有学生情况都插入链表后,从链头开始,依次输出链表中的各节点值(即每个学生的情况)。输出格式如第2题表的格式。
时间: 2024-03-14 14:48:21 浏览: 11
好的,以下是链表的基本操作过程:
① 初始链表为空,即链表的头指针为空。
② 对于第2题的表所示学生情况,依次将每个学生的情况作为一个节点插入单链表的链头(即当前插入的节点成为第一个节点)。
具体操作如下:
- 定义一个结构体表示每个学生的信息,包括学号、姓名和成绩。
```
struct student {
int num; // 学号
char name[20]; // 姓名
int score; // 成绩
};
```
- 定义链表节点结构体,包含一个指向下一个节点的指针和一个指向学生信息的指针。
```
struct node {
struct student *stu; // 指向学生信息的指针
struct node *next; // 指向下一个节点的指针
};
```
- 创建第一个节点,将头指针指向该节点。
```
struct node *head = NULL;
```
- 依次创建每个节点,并将其插入链头。
```
struct node *p;
for (int i = 0; i < 10; i++) {
// 创建一个新的学生信息
struct student *stu = (struct student *)malloc(sizeof(struct student));
stu->num = i + 1001;
sprintf(stu->name, "学生%d", i+1);
stu->score = rand() % 101;
// 创建一个新的节点
p = (struct node *)malloc(sizeof(struct node));
p->stu = stu;
// 将新节点插入链头
p->next = head;
head = p;
}
```
③ 所有学生情况都插入链表后,从链头开始,依次输出链表中的各节点值(即每个学生的情况)。输出格式如第2题表的格式。
```
printf("| 学号 | 姓名 | 成绩 |\n");
printf("|------|----------|------|\n");
p = head;
while (p != NULL) {
printf("| %4d | %-8s | %4d |\n", p->stu->num, p->stu->name, p->stu->score);
p = p->next;
}
```
完整代码如下: