使用链表管理学生基本信息,结构体成员可根据实际情况自行定义,要求能实现以下功能: 1)创建新链表。 2)在链表中插入元素。 3)在链表中删除元素。 4)在链表中查找元素。 5)倒置链表。
时间: 2024-09-08 18:04:18 浏览: 54
链表实现的学生信息管理系统
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C语言中,可以使用结构体来定义链表的节点。以下是一个简单的示例,展示如何使用结构体和链表来管理学生的基本信息。
首先,定义学生信息的结构体:
```c
typedef struct Student {
int id; // 学生ID
char name[50]; // 学生姓名
float score; // 学生成绩
struct Student *next; // 指向下一个学生节点的指针
} Student;
```
接着,实现链表管理学生信息的功能:
1)创建新链表:
```c
Student *createList() {
Student *head = NULL; // 初始化头指针为NULL
return head;
}
```
2)在链表中插入元素:
```c
void insertStudent(Student **head, Student newStudent) {
newStudent.next = *head;
*head = newStudent;
}
```
3)在链表中删除元素:
```c
void deleteStudent(Student **head, int id) {
Student *current = *head, *previous = NULL;
while (current != NULL && current->id != id) {
previous = current;
current = current->next;
}
if (current == NULL) return; // 没有找到
if (previous == NULL) {
*head = current->next; // 删除的是头节点
} else {
previous->next = current->next; // 删除中间或尾节点
}
free(current); // 释放内存
}
```
4)在链表中查找元素:
```c
Student* findStudent(Student *head, int id) {
Student *current = head;
while (current != NULL) {
if (current->id == id) {
return current;
}
current = current->next;
}
return NULL; // 没有找到
}
```
5)倒置链表:
```c
void reverseList(Student **head) {
Student *prev = NULL;
Student *current = *head;
Student *next = NULL;
while (current != NULL) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
*head = prev;
}
```
阅读全文