用C语言分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1,a2,…,an)逆置为(an, an-1,…,a1)。 (1)以一维数组作存储结构,设线性表存于a[1..MAXNUM]的前elemnum个分量中
时间: 2024-11-30 19:18:37 浏览: 23
在C语言中,我们可以使用一维数组作为线性表的存储结构,并通过数组索引来实现就地逆置。这里是一个简单的就地逆置线性表的算法示例:
```c
#include <stdio.h>
#define MAXNUM 100
#define elemnum 5
void reverse_in_place(int a[], int n) {
int temp;
for (int i = 0; i < n / 2; i++) { // 遍历数组的一半
temp = a[i]; // 临时保存当前元素
a[i] = a[n - i - 1]; // 将当前位置的元素与倒数第i+1位置交换
a[n - i - 1] = temp; // 将临时变量的值放到新的位置
}
}
// 测试函数
int main() {
int a[MAXNUM] = {1, 2, 3, 4, 5}; // 初始化线性表
printf("Original array: ");
for (int i = 0; i < elemnum; i++) {
printf("%d ", a[i]);
}
reverse_in_place(a, elemnum); // 调用逆置函数
printf("\nReversed array: ");
for (int i = 0; i < elemnum; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
这个程序首先定义了一个`reverse_in_place`函数,它接受一个整型数组和元素数量,然后通过遍历数组的一半并逐个交换元素的位置来完成逆置。在`main`函数中,我们创建了一个数组并调用了逆置函数,最后打印出逆置前后的结果。
阅读全文