实现在顺序存储结构下将线性表逆转的算法,用c++,线性表数据未知
时间: 2024-09-29 19:02:02 浏览: 71
在顺序存储结构下,如数组,反转线性表的一种常见算法可以使用双指针法,即两个指向元素的指针,一个从头开始,一个从尾开始,逐步交换它们指向的元素直到相遇。以下是使用C++实现的简单版本:
```cpp
#include <iostream>
// 线性表的节点结构
struct Node {
int data; // 数据域
Node* next; // 指向下一个节点的指针
};
// 反转线性表函数
Node* reverseList(Node* head) {
Node* prev = nullptr;
Node* current = head;
Node* nextTemp;
while (current != nullptr) {
// 保存当前节点的下一个节点
nextTemp = current->next;
// 将当前节点连接到前驱节点
current->next = prev;
// 更新前驱和当前节点
prev = current;
current = nextTemp;
}
return prev; // 返回新的头节点
}
int main() {
// 示例:假设这里有一个动态创建的线性表,这里省略实际创建过程
Node* list = ...;
// 反转列表
list = reverseList(list);
// 打印反转后的列表(此处仅作示例)
while (list != nullptr) {
std::cout << list->data << " ";
list = list->next;
}
return 0;
}
```
阅读全文