给我一个单链表模板程序
时间: 2024-03-14 17:45:18 浏览: 19
以下是一个单链表的模板程序:
```c++
#include <iostream>
using namespace std;
// 定义节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 定义单链表类
class LinkedList {
public:
// 构造函数
LinkedList() {
head = new ListNode(0);
}
// 析构函数
~LinkedList() {
ListNode* cur = head;
while (cur != NULL) {
ListNode* temp = cur->next;
delete cur;
cur = temp;
}
}
// 添加节点
void addNode(int val) {
ListNode* cur = head;
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = new ListNode(val);
}
// 删除节点
void deleteNode(int val) {
ListNode* cur = head->next;
ListNode* prev = head;
while (cur != NULL) {
if (cur->val == val) {
prev->next = cur->next;
delete cur;
return;
}
prev = cur;
cur = cur->next;
}
}
// 遍历节点
void traverse() {
ListNode* cur = head->next;
while (cur != NULL) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
private:
ListNode* head; // 头节点
};
int main() {
LinkedList list;
list.addNode(1);
list.addNode(2);
list.addNode(3);
list.traverse();
list.deleteNode(2);
list.traverse();
return 0;
}
```
这个模板程序定义了一个 `ListNode` 结构体和一个 `LinkedList` 类,其中 `ListNode` 结构体表示链表的节点, `LinkedList` 类包括添加节点、删除节点和遍历节点等操作。在主函数中,创建一个链表对象 `list`,并添加了三个节点,然后遍历链表并删除一个节点,最后再次遍历链表。