C++模板类实现单链表,数据类型为结构体,完成增删修改基本操作
时间: 2024-09-25 12:15:29 浏览: 53
在C++中,可以使用模板类来创建通用的单链表结构,允许处理不同类型的数据。这里我们首先定义一个结构体作为链表元素,然后创建模板链表类`TemplateLinkedList`,它包含节点、头指针以及基本的操作如插入、删除和查找。
```cpp
// 链表元素结构体
template <typename T>
struct ListNode {
T data;
ListNode* next; // 指向下一个节点的指针
};
// 模板单链表类
template <typename T>
class TemplateLinkedList {
public:
// 构造函数,初始化空链表
TemplateLinkedList() : head(nullptr) {}
private:
ListNode<T>* head;
// 插入节点函数
void insertNode(T value) {
ListNode<T>* newNode = new ListNode<T>{value, nullptr};
if (head == nullptr) {
head = newNode;
} else {
ListNode<T>* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = newNode;
}
}
// 删除节点函数
void deleteNode(T value) {
if (head == nullptr) return; // 如果链表为空,直接返回
if (head->data == value) { // 如果头节点就是要删除的
ListNode<T>* temp = head;
head = head->next;
delete temp;
return;
}
ListNode<T>* current = head;
while (current->next != nullptr && current->next->data != value) {
current = current->next;
}
if (current->next != nullptr) {
ListNode<T>* temp = current->next;
current->next = current->next->next;
delete temp;
}
}
// 修改节点值函数
void updateNode(T oldValue, T newValue) {
if (head == nullptr) return;
ListNode<T>* current = head;
while (current != nullptr && current->data != oldValue) {
current = current->next;
}
if (current != nullptr) {
current->data = newValue;
}
}
public:
// 其他公共操作,如获取头节点等...
};
阅读全文