如何用链表添加学生信息
时间: 2023-07-12 13:19:25 浏览: 49
假设我们有一个结构体 `Student` 表示学生信息,包含学号、姓名、年龄等属性,如下所示:
```c++
struct Student {
int id;
string name;
int age;
};
```
现在我们要使用链表存储多个学生的信息,可以定义一个 `Node` 结构体表示链表中的一个节点,它包含一个 `Student` 类型的数据和一个指向下一个节点的指针,如下所示:
```c++
struct Node {
Student data;
Node* next;
};
```
然后可以定义一个头指针 `head`,用于指向链表的头节点,初始时指向 `NULL` 表示链表为空。接下来可以编写一个函数来添加学生信息,该函数接受一个 `Student` 类型的参数,表示要添加的学生信息,函数的实现如下所示:
```c++
void addStudent(Node*& head, Student stu) {
Node* newNode = new Node; // 创建一个新节点
newNode->data = stu; // 设置新节点的数据
newNode->next = NULL; // 设置新节点的指针
if (head == NULL) { // 如果链表为空
head = newNode; // 则把新节点作为头结点
} else { // 否则
Node* cur = head; // 从头结点开始遍历
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = newNode; // 把新节点添加到链表末尾
}
}
```
在这个函数中,我们首先创建一个新的节点 `newNode`,然后将要添加的学生信息 `stu` 设置为新节点的数据。接下来需要判断链表是否为空,如果为空,则把新节点作为头节点;否则,需要从头节点开始遍历链表,直到找到链表中的最后一个节点,然后将新节点添加到链表末尾。
使用这个函数可以方便地添加多个学生信息,例如:
```c++
Node* head = NULL; // 头指针初始化为空
Student stu1 = { 1001, "张三", 20 };
Student stu2 = { 1002, "李四", 22 };
addStudent(head, stu1); // 添加学生信息
addStudent(head, stu2); // 添加学生信息
```
这样就可以通过链表来存储多个学生的信息了。需要注意的是,在使用链表时需要及时释放内存,避免出现内存泄漏等问题。