已知长度为n的线性表A采用顺序存储结构,设计一个算法,使得该线性表中的数据元素按逆序重新排列 (C语言)
时间: 2024-09-30 08:08:14 浏览: 46
在C语言中,可以使用双指针法来实现线性表A中数据元素的逆序排列。这里提供一个简单的递归和迭代两种解决方案:
**递归版本:**
```c
void reverseArrayRecursive(int A[], int start, int end) {
if (start >= end)
return;
// 交换开始和结束位置的元素
int temp = A[start];
A[start] = A[end];
A[end] = temp;
// 递归处理剩余部分
reverseArrayRecursive(A, start + 1, end - 1);
}
// 调用函数
void reverseSequentialArray(int A[], int n) {
reverseArrayRecursive(A, 0, n - 1);
}
```
**迭代版本:**
```c
void reverseArrayIterative(int A[], int n) {
int start = 0, end = n - 1;
while (start < end) {
// 交换开始和结束位置的元素
int temp = A[start];
A[start] = A[end];
A[end] = temp;
// 移动指针
start++;
end--;
}
}
```
在这两个函数中,`reverseArrayRecursive` 和 `reverseArrayIterative` 分别实现了递归和迭代的方式来对数组进行逆序。`reverseSequentialArray` 函数则作为主入口,接收输入数组A和其长度n。
阅读全文