请建立学生信息或图书信息的线性表结构(链表),并在此基础上完成增、删、改、查等基本操作。
时间: 2024-09-19 14:09:08 浏览: 52
创建一个学生信息或图书信息的线性表结构,如链表,可以分为以下几个步骤:
**学生信息链表(StudentInfoList)示例**:
```cpp
class Student {
public:
int id;
string name;
// 其他属性...
private:
Student* next; // 指向下一个学生的指针
};
// 定义链表头节点
struct ListNode {
Student student;
ListNode* next;
};
```
**图书信息链表(BookInfoList)示例**:
```cpp
class Book {
public:
int bookId;
string title;
// 其他属性...
private:
Book* next;
};
// 定义链表头节点
struct Node {
Book book;
Node* next;
};
```
### 基本操作:
#### 插入 (Insert)
- 添加新学生(或书籍)到列表尾部:
```cpp
void insert(Student& student) {
ListNode* newNode = new ListNode{student, nullptr};
if (!head) {
head = newNode;
} else {
ListNode* current = head;
while (current->next) {
current = current->next;
}
current->next = newNode;
}
}
```
#### 删除 (Delete)
- 删除指定ID的学生(或书籍):
```cpp
bool deleteStudent(int id) {
ListNode* current = head;
ListNode* previous = nullptr;
while (current && current->student.id != id) {
previous = current;
current = current->next;
}
if (current) {
if (previous == nullptr) {
head = current->next;
} else {
previous->next = current->next;
}
delete current;
return true;
}
return false;
}
```
#### 修改 (Update)
- 更新指定ID的学生信息:
```cpp
void updateStudent(int id, const Student& updatedStudent) {
ListNode* current = head;
while (current && current->student.id != id) {
current = current->next;
}
if (current) {
current->student = updatedStudent;
}
}
// 类似地,更新书籍信息只需修改`Book`对象即可
```
#### 查找 (Search)
- 查找指定ID的学生(或书籍):
```cpp
Student findStudentById(int id) {
ListNode* current = head;
while (current) {
if (current->student.id == id) {
return current->student;
}
current = current->next;
}
// 如果未找到,则返回空或抛异常
return {};
}
// 对于书籍信息查找也类似
```