c++单链表实现学生管理系统
时间: 2024-11-12 09:43:05 浏览: 11
在C++中,可以使用单链表数据结构来实现一个简单的学生管理系统。以下是基本步骤:
1. 定义节点类(Node):首先,创建一个名为`StudentNode`的类,表示链表中的每个元素,包含学生的姓名、学号等信息以及指向下一个节点的指针。
```cpp
class StudentNode {
public:
string name;
int studentID;
StudentNode* next;
// 构造函数和析构函数
StudentNode(string n, int id) : name(n), studentID(id), next(nullptr) {}
~StudentNode() {}
};
```
2. 创建链表类(StudentList):然后创建一个`StudentList`类,管理整个学生链表,包括插入新学生、删除学生、查找学生等功能。
```cpp
class StudentList {
private:
StudentNode* head; // 链表头节点
public:
// 插入学生
void insertStudent(string name, int ID);
// 删除学生
void deleteStudent(int ID);
// 查找学生
bool findStudent(int ID);
// 其他辅助方法,如显示链表等
// ...
};
```
3. 实现功能方法:
- `insertStudent`: 新建一个`StudentNode`并添加到链表尾部。
- `deleteStudent`: 遍历链表查找指定学号的节点并删除。
- `findStudent`: 遍历链表查找是否存在指定学号的学生。
```cpp
// 插入学生实现
void StudentList::insertStudent(string name, int ID) {
StudentNode* newNode = new StudentNode(name, ID);
if (head == nullptr) {
head = newNode;
} else {
StudentNode* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = newNode;
}
}
// 删除学生实现
void StudentList::deleteStudent(int ID) {
if (head == nullptr) return;
if (head->studentID == ID) {
StudentNode* temp = head;
head = head->next;
delete temp;
return;
}
StudentNode* current = head;
while (current->next != nullptr && current->next->studentID != ID) {
current = current->next;
}
if (current->next != nullptr) {
current->next = current->next->next;
delete current->next;
}
}
// 查找学生实现
bool StudentList::findStudent(int ID) {
StudentNode* current = head;
while (current != nullptr) {
if (current->studentID == ID) {
return true;
}
current = current->next;
}
return false;
}
```
阅读全文