C++在类里添加成员函数,实现对线性表的就地逆置
时间: 2024-10-18 22:06:56 浏览: 25
线性表的就地逆置
在C++中,为了实现线性表的就地逆置(In-place reversal),通常会在类中定义一个成员函数。这种方法不需要额外的数据结构来存储中间结果,直接在线性表本身的操作空间内完成逆置。以下是一个简单的示例,假设我们有一个`ListNode`类表示单链表节点:
```cpp
class ListNode {
public:
int data;
ListNode* next;
// 构造函数、析构函数等...
};
// 类定义中添加成员函数来就地逆置链表
class LinkedList {
private:
ListNode* head; // 链表头指针
public:
void reverse() {
if (head == nullptr || head->next == nullptr) { // 如果链表为空或只有一个元素,无需操作
return;
}
ListNode* prev = nullptr; // 初始化前驱节点为NULL
ListNode* current = head; // 初始化当前节点为头节点
while (current != nullptr) { // 当前节点不为空
ListNode* next_temp = current->next; // 保存下一个节点
current->next = prev; // 将当前节点的next指向prev
prev = current; // 更新prev为当前节点
current = next_temp; // 更新current为下一个节点
}
// 最后将链表头设置为原尾部
head = prev;
}
// 其他链表操作...
};
```
在这个例子中,`reverse()`函数通过三个指针`prev`, `current` 和 `next_temp`,逐步改变每个节点的`next`指针,实现了链表的逆置。
阅读全文