已知长度为n 的线性表A采用顺序存储结构,设计一个算法,使得该线性表中的数据元素按逆序重新排列。使用C语言
时间: 2024-09-26 09:15:46 浏览: 45
线性表的链式存储结构..
5星 · 资源好评率100%
在C语言中,我们可以使用两个指针,一个指向数组的开始(rear),另一个指向数组的结束(front),然后交换这两个指针所指向的元素,并将front向前移动一位,直到它们相遇。这是一个简单的冒泡排序的思想,不过因为只需要一次遍历就能完成逆序,所以时间复杂度是O(n)。
下面是C语言实现这个算法的基本步骤:
```c
#include <stdio.h>
// 交换两个整数的位置
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 将线性表A逆序排列
void reverseArray(int arr[], int n) {
int front = 0; // 指向数组的开始
int rear = n - 1; // 指向数组的结束
while (front < rear) {
swap(&arr[front], &arr[rear]);
front++; // 前指针向前移动
rear--; // 后指针向后移动
}
}
int main() {
int A[] = {1, 2, 3, 4, 5};
int n = sizeof(A) / sizeof(A[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", A[i]);
}
reverseArray(A, n);
printf("\nReversed array: ");
for (int i = 0; i < n; i++) {
printf("%d ", A[i]);
}
return 0;
}
```
阅读全文