单链表实现
时间: 2023-10-16 12:10:38 浏览: 61
好的,单链表是一种常用的数据结构,下面是单链表的实现示例:
```c++
#include <iostream>
using namespace std;
//定义链表结点
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
};
//定义链表类
class LinkedList {
public:
//构造函数
LinkedList() {
head = nullptr;
}
//析构函数
~LinkedList() {
ListNode *curr = head;
while (curr != nullptr) {
ListNode *temp = curr;
curr = curr->next;
delete temp;
}
}
//在链表尾部添加结点
void addNode(int val) {
ListNode *node = new ListNode(val);
if (head == nullptr) {
head = node;
} else {
ListNode *curr = head;
while (curr->next != nullptr) {
curr = curr->next;
}
curr->next = node;
}
}
//删除链表中的某个结点
void deleteNode(int val) {
if (head == nullptr) {
return;
} else if (head->val == val) {
ListNode *temp = head;
head = head->next;
delete temp;
} else {
ListNode *prev = head;
ListNode *curr = head->next;
while (curr != nullptr && curr->val != val) {
prev = curr;
curr = curr->next;
}
if (curr != nullptr) {
prev->next = curr->next;
delete curr;
}
}
}
//遍历链表并打印
void printList() {
ListNode *curr = head;
while (curr != nullptr) {
cout << curr->val << " ";
curr = curr->next;
}
cout << endl;
}
private:
ListNode *head;
};
```
这里定义了一个 `ListNode` 结构体作为链表的结点,包含两个成员变量 `val` 和 `next`,分别表示当前结点的值和下一个结点的指针。`LinkedList` 类包含链表的构造函数、析构函数、添加结点、删除结点和遍历链表并打印的方法。其中,添加结点方法是在链表的尾部添加新结点,删除结点方法是删除链表中的某个值等于给定值的结点。