用基础的C语言或C++语言实现,写出在顺序存储结构下将线性表逆转的算法,要求使用最少的附加空间
时间: 2024-09-30 21:06:19 浏览: 71
数据结构与算法基础课程 C语言C++程序语言设计教程 2_2线性表-顺序表 共12页.pptx
在C语言或C++中,反转顺序存储的线性表(数组)可以使用迭代的方式实现,不需要额外的附加空间,只需要原地交换数组元素的位置。以下是C++的一个简单示例:
```cpp
#include <iostream>
void reverseArray(int arr[], int size) {
int start = 0; // 指向开始位置
int end = size - 1; // 指向结束位置
while (start < end) {
// 交换开始位置和结束位置的元素
std::swap(arr[start], arr[end]);
// 移动指针
start++;
end--;
}
}
int main() {
int array[] = {1, 2, 3, 4, 5};
int n = sizeof(array) / sizeof(array[0]);
std::cout << "Original array: ";
for (int i = 0; i < n; i++) {
std::cout << array[i] << " ";
}
reverseArray(array, n);
std::cout << "\nReversed array: ";
for (int i = 0; i < n; i++) {
std::cout << array[i] << " ";
}
return 0;
}
```
在这个`reverseArray`函数中,我们从两端开始,每次循环都将当前的起始元素与对应的结束元素交换,然后向中间移动指针。当起始位置大于或等于结束位置时,整个数组就被完全反转了。
阅读全文