C++模板类实现学生信息单链表,数据类型为结构体,完成增删修改等基本操作,主函数自己编写,要求整个代码的完整性
时间: 2024-09-26 09:10:23 浏览: 34
c++ STL之list对结构体的增加,删除,排序等操作详解
在C++中,我们可以使用模板类来创建一个通用的学生信息单链表。这里是一个简单的实现,包括了Student结构体、Node模板类以及链表的基本操作(插入、删除、查找):
```cpp
#include <iostream>
using namespace std;
// 定义学生结构体
struct Student {
string name;
int id;
};
// 链表节点模板类
template<typename T>
class Node {
public:
T data;
Node<T>* next;
Node(T value) : data(value), next(nullptr) {}
};
// 链表模板类
template<typename T>
class LinkedList {
private:
Node<T>* head;
public:
LinkedList() : head(nullptr) {}
// 插入元素到链表头部
void insertAtBegin(T value) {
Node<T>* newNode = new Node<T>(value);
newNode->next = head;
head = newNode;
}
// 删除指定值的节点(如果存在)
void remove(T value) {
if (head == nullptr || head->data != value) return;
Node<T>* temp = head;
head = head->next;
delete temp;
}
// 查找并打印包含特定值的节点(如果有)
void searchAndPrint(T value) {
Node<T>* curr = head;
while (curr != nullptr) {
cout << "Name: " << curr->data.name << ", ID: " << curr->data.id << endl;
if (curr->data == value) break;
curr = curr->next;
}
}
// 主函数示例
static void mainFunction() {
LinkedList<Student> studentList;
// 假设我们有了一些学生数据...
studentList.insertAtBegin(Student{"张三", 1001});
studentList.insertAtBegin(Student{"李四", 1002});
// 执行一些操作...
studentList.searchAndPrint(Student{"张三", 1001}); // 查找并打印
// 删除某个学生...
studentList.remove(Student{"李四", 1002});
// 结束前检查链表是否为空
if (studentList.head == nullptr)
cout << "链表已空" << endl;
}
};
int main() {
LinkedList<Student>::mainFunction();
return 0;
}
阅读全文