用c++语言试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,a3,…….an)逆置为(an,an-1…….a1)
时间: 2024-09-14 13:05:11 浏览: 50
在C++中实现顺序表的就地逆置,可以通过双指针法来完成,这种方法不需要额外的存储空间,直接在原数组上进行操作。具体算法如下:
1. 初始化两个指针变量,一个指向顺序表的第一个元素,另一个指向顺序表的最后一个元素。
2. 交换这两个指针所指向的元素的值。
3. 将第一个指针向后移动一位,将第二个指针向前移动一位。
4. 重复步骤2和3,直到第一个指针大于或等于第二个指针,这时顺序表已经逆置完成。
下面是具体的C++代码实现:
```cpp
#include <iostream>
using namespace std;
// 函数声明
void reverseArray(int arr[], int size);
int main() {
int array[] = {1, 2, 3, 4, 5};
int size = sizeof(array) / sizeof(array[0]);
reverseArray(array, size);
// 输出逆置后的顺序表
for (int i = 0; i < size; ++i) {
cout << array[i] << " ";
}
return 0;
}
// 函数定义
void reverseArray(int arr[], int size) {
int *begin = arr; // 指向顺序表的第一个元素
int *end = arr + size - 1; // 指向顺序表的最后一个元素
while (begin < end) {
// 交换两个指针所指向的元素
int temp = *begin;
*begin = *end;
*end = temp;
// 移动指针
begin++;
end--;
}
}
```
阅读全文