写一程序,实现顺序表的就地逆置,c语言
时间: 2023-09-16 12:01:56 浏览: 159
下面是用C语言实现顺序表就地逆置的程序:
```c
#include <stdio.h>
#define MAX_SIZE 100
// 定义顺序表结构体
typedef struct {
int data[MAX_SIZE]; // 顺序表数据部分
int length; // 顺序表长度
} SeqList;
// 就地逆置函数
void reverse(SeqList *list) {
int i, temp;
for (i = 0; i < list->length / 2; i++) {
temp = list->data[i];
list->data[i] = list->data[list->length - 1 - i];
list->data[list->length - 1 - i] = temp;
}
}
int main() {
int i;
SeqList list;
// 初始化顺序表
list.length = 10;
for (i = 0; i < list.length; i++) {
list.data[i] = i + 1;
}
// 输出原顺序表
printf("原顺序表:");
for (i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
// 调用就地逆置函数
reverse(&list);
// 输出逆置后的顺序表
printf("逆置后的顺序表:");
for (i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
return 0;
}
```
以上程序首先定义了一个顺序表的结构体,并且实现了一个就地逆置的函数。然后在`main()`函数中,初始化了一个长度为10的顺序表,并将其元素设置为1到10。接着输出原顺序表的元素,然后调用`reverse()`函数将顺序表逆置。最后再次输出逆置后的顺序表的元素。运行程序后,可以看到原顺序表为1 2 3 4 5 6 7 8 9 10,逆置后的顺序表为10 9 8 7 6 5 4 3 2 1。
阅读全文