c++链表类模板
时间: 2023-07-04 14:23:39 浏览: 62
好的,下面是一个简单的C++链表类模板代码示例:
```c++
template <typename T>
class LinkedList {
private:
struct Node {
T data;
Node* next;
Node(const T& d = T(), Node* n = nullptr)
: data(d), next(n) {}
};
Node* head;
public:
LinkedList() : head(nullptr) {}
~LinkedList() {
Node* p = head;
while (p != nullptr) {
Node* q = p->next;
delete p;
p = q;
}
}
void insert(const T& data) {
head = new Node(data, head);
}
void remove(const T& data) {
Node** p = &head;
while (*p != nullptr) {
if ((*p)->data == data) {
Node* q = *p;
*p = q->next;
delete q;
break;
}
p = &(*p)->next;
}
}
void print() const {
Node* p = head;
while (p != nullptr) {
std::cout << p->data << " ";
p = p->next;
}
std::cout << std::endl;
}
};
```
这是一个模板类,可以存储任意类型的数据。它内部定义了一个私有的结构体 `Node`,表示链表中的节点,包含数据和指向下一个节点的指针。链表的头节点指针为`head`。
该类提供了插入、删除和打印链表的方法。插入方法会将新节点插入到链表头部,删除方法会删除链表中第一个值为`data`的节点,打印方法会将链表中所有节点的值输出到控制台。
使用该模板类时,只需要在声明对象时指定数据类型即可,例如:
```c++
LinkedList<int> list;
list.insert(1);
list.insert(2);
list.insert(3);
list.print(); // 输出 3 2 1
list.remove(2);
list.print(); // 输出 3 1
```