设有一个线性表(a0,a1,…,an-1),存放在一个一维数组中,编写函数将这个线性表原地逆置,输出逆置后的结果。要求:该逆置函数不属于类的成员函数,定义一个独立的函数,通过使用顺序表的成员函数实现逆置。
时间: 2024-09-14 21:05:24 浏览: 39
有一个线性表(a1,a2,...,an),它存储在有附加表头结点的单链表中,写一个算法,求出该线性表中值为x的元素的序号。如果x
5星 · 资源好评率100%
要实现一个线性表的原地逆置,你可以创建一个非成员函数,接收一个指向一维数组的指针以及数组的长度作为参数。然后,遍历数组的一半,同时交换第一个元素和最后一个元素,第二个元素和倒数第二个元素,以此类推。下面是C++代码实现:
```cpp
#include <iostream>
// 非成员函数,用于原地逆置线性表
void reverseArray(int* arr, int size) {
if (size <= 1) return; // 如果数组长度为1或0,无需操作
for (int i = 0; i < size / 2; ++i) { // 遍历数组一半
std::swap(arr[i], arr[size - i - 1]); // 交换对应的元素
}
}
// 示例:显示数组前5个元素
void printArray(int* arr, int size) {
for (int i = 0; i < size; ++i) {
std::cout << arr[i] << " ";
}
std::cout << "\n";
}
int main() {
int a[] = {1, 2, 3, 4, 5};
int n = sizeof(a) / sizeof(a[0]);
std::cout << "Original array: ";
printArray(a, n);
reverseArray(a, n); // 逆置数组
std::cout << "Reversed array: ";
printArray(a, n);
return 0;
}
```
运行这段代码后,你将看到原始数组被成功逆置了。
阅读全文