试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a.,322。 笔记 此处输入笔记 算法作业 .a,)逆置为(a,a ....а,)c++
时间: 2024-09-09 09:16:16 浏览: 48
要实现顺序表的就地逆置,我们可以使用双指针方法。具体步骤如下:
1. 初始化两个指针,一个指向顺序表的开始位置(left),另一个指向顺序表的结束位置(right)。
2. 在不越界的情况下,交换left和right指向的元素。
3. 将left指针向右移动一位,right指针向左移动一位。
4. 重复步骤2和3,直到left和right指针相遇或者交错。
下面是一个C++实现的示例代码:
```cpp
#include <iostream>
using namespace std;
void reverseArray(int arr[], int size) {
int left = 0;
int right = size - 1;
while (left < right) {
// 交换左右指针指向的元素
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
// 移动指针
left++;
right--;
}
}
int main() {
int size = 5; // 假设数组大小为5
int arr[size] = {1, 2, 3, 4, 5}; // 示例数组
reverseArray(arr, size); // 调用逆置函数
// 输出逆置后的数组
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
这段代码定义了一个`reverseArray`函数,该函数接受一个整数数组`arr`和数组的大小`size`作为参数,然后就地逆置数组中的元素。`main`函数中创建了一个示例数组并调用了`reverseArray`函数,最后打印出逆置后的数组。
阅读全文