如何在c++中使用类(Class)封装单链表的基本操作?
时间: 2024-11-03 17:23:59 浏览: 22
在 C++ 中,我们可以使用类(Class)来封装单链表的基本操作,比如插入节点、删除节点以及遍历列表等。下面是一个简单的例子,展示了如何创建一个 `Node` 类作为链表节点,以及一个 `LinkedList` 类来管理整个链表:
```cpp
#include <iostream>
// 定义 Node 类
class Node {
public:
int data;
Node* next;
// 构造函数
Node(int value) : data(value), next(nullptr) {}
// 显示节点数据
void display() const {
std::cout << "Data: " << data << ", Next: ";
if (next != nullptr)
next->display();
else
std::cout << "nullptr\n";
}
};
// LinkedList 类
class LinkedList {
private:
Node* head; // 链表头节点
public:
// 构造函数,初始化空链表
LinkedList() : head(nullptr) {}
// 插入新节点
void insert(int value) {
Node* newNode = new Node(value);
if (!head)
head = newNode;
else {
Node* current = head;
while (current->next)
current = current->next;
current->next = newNode;
}
}
// 删除节点(这里仅示例删除头部节点)
void removeFirst() {
if (head) {
Node* temp = head;
head = head->next;
delete temp;
} else {
std::cerr << "List is empty.\n";
}
}
// 遍历并显示链表
void traverse() const {
if (head) {
Node* current = head;
while (current) {
current->display();
current = current->next;
}
} else {
std::cerr << "List is empty.\n";
}
}
};
// 示例使用
int main() {
LinkedList list;
list.insert(1);
list.insert(2);
list.insert(3);
std::cout << "Initial list:\n";
list.traverse();
list.removeFirst();
std::cout << "\nAfter removing first element:\n";
list.traverse();
return 0;
}
```
在这个例子中,我们首先定义了一个 `Node` 类来表示链表中的每个元素,包含一个值和指向下一个节点的指针。然后,`LinkedList` 类包含了对链表的操作,如添加节点、删除节点(这里只演示了删除头部),以及遍历打印链表。
阅读全文