如何在C++中实现一个简单的链表数据结构?

在C++中,实现一个简单的链表数据结构涉及定义链表节点和链表本身。以下是实现一个基本单向链表的步骤及代码说明:

1. 定义链表节点结构体或类。每个节点包含数据和指向下一个节点的指针。

```cpp
struct Node {
int data; // 存储数据
Node* next; // 指向下一个节点的指针

Node(int val) : data(val), next(nullptr) {} // 构造函数初始化节点
};
```

2. 实现链表类,提供基本操作如添加、删除和遍历等。

```cpp
class LinkedList {
private:
Node* head; // 指向链表的头节点

public:
LinkedList() : head(nullptr) {} // 构造函数初始化链表为空

// 添加新节点到链表的末尾
void append(int val) {
Node* newNode = new Node(val);
if (head == nullptr) {
head = newNode; // 如果链表为空,新的节点就是头节点
} else {
Node* temp = head;
while (temp->next != nullptr) {
temp = temp->next; // 找到最后一个节点
}
temp->next = newNode; // 将新节点连接到链表末尾
}
}

// 删除值为val的节点
void remove(int val) {
if (head == nullptr) return;

if (head->data == val) {
Node* temp = head;
head = head->next;
delete temp;
return;
}

Node* current = head;
Node* previous = nullptr;

while (current != nullptr && current->data != val) {
previous = current;
current = current->next;
}

if (current != nullptr) {
previous->next = current->next;
delete current;
}
}

// 遍历链表并打印数据
void display() const {
Node* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << std::endl;
}

// 析构函数,删除所有节点以防止内存泄漏
~LinkedList() {
Node* temp;
while (head != nullptr) {
temp = head;
head = head->next;
delete temp;
}
}
};
```

3. 使用链表类进行操作。

```cpp
int main() {
LinkedList list;
list.append(10);
list.append(20);
list.append(30);
list.display(); // 输出:10 20 30

list.remove(20);
list.display(); // 输出:10 30

return 0;
}
```

以上代码展示了如何创建一个简单的链表,支持添加、删除和显示节点的基本功能。同时也注意在析构函数中释放内存,防止内存泄漏。

若文章对您有帮助,帮忙点个赞!

0
0
发布时间 2025-04-03 12:21:11

内容投诉xiaolong889900@qq.com

0 条回复(回复会通过微信通知作者)
登录 后再进行评论
(微信扫码即可登录,无需注册)