使用后插法建立一个带头结点的存储学生信息的单链表,并将建立后的学生链表中的信息输出到屏幕上,学生的结构体类型可自行定义。
时间: 2024-03-22 16:41:30 浏览: 66
好的,让我们来看看如何使用后插法建立一个带头结点的单链表,并输出学生链表中的信息。
首先,我们需要定义一个学生结构体类型,代码如下:
```c
typedef struct student {
char name[20]; // 学生姓名
int age; // 学生年龄
char id[10]; // 学生学号
struct student *next; // 指向下一个学生的指针
} Student;
```
然后,我们可以编写一个函数来创建一个新的学生节点,代码如下:
```c
// 创建一个新的学生节点
Student* createStudent() {
Student* stu = (Student*)malloc(sizeof(Student));
printf("请输入学生姓名:");
scanf("%s", stu->name);
printf("请输入学生年龄:");
scanf("%d", &stu->age);
printf("请输入学生学号:");
scanf("%s", stu->id);
stu->next = NULL;
return stu;
}
```
接着,我们可以编写一个函数来使用后插法向链表中添加新的学生节点,代码如下:
```c
// 向学生链表中插入一个新的学生节点
void insertStudent(Student* head) {
Student* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = createStudent();
}
```
最后,我们可以编写一个函数来输出学生链表中的信息,代码如下:
```c
// 输出学生链表中的信息
void printStudent(Student* head) {
Student* p = head->next;
while (p != NULL) {
printf("姓名:%s,年龄:%d,学号:%s\n", p->name, p->age, p->id);
p = p->next;
}
}
```
完整的程序代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct student {
char name[20]; // 学生姓名
int age; // 学生年龄
char id[10]; // 学生学号
struct student *next; // 指向下一个学生的指针
} Student;
// 创建一个新的学生节点
Student* createStudent() {
Student* stu = (Student*)malloc(sizeof(Student));
printf("请输入学生姓名:");
scanf("%s", stu->name);
printf("请输入学生年龄:");
scanf("%d", &stu->age);
printf("请输入学生学号:");
scanf("%s", stu->id);
stu->next = NULL;
return stu;
}
// 向学生链表中插入一个新的学生节点
void insertStudent(Student* head) {
Student* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = createStudent();
}
// 输出学生链表中的信息
void printStudent(Student* head) {
Student* p = head->next;
while (p != NULL) {
printf("姓名:%s,年龄:%d,学号:%s\n", p->name, p->age, p->id);
p = p->next;
}
}
int main() {
// 创建一个头节点
Student* head = (Student*)malloc(sizeof(Student));
head->next = NULL;
// 向学生链表中插入新的学生节点
printf("请输入学生信息:\n");
for (int i = 0; i < 3; i++) {
insertStudent(head);
}
// 输出学生链表中的信息
printf("学生信息如下:\n");
printStudent(head);
return 0;
}
```
希望这个回答对你有所帮助,如果还有其他问题,可以继续问我哦!
阅读全文