c语言实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,…..an),逆置为( an,an-1, …….a2,a1)。
时间: 2024-05-09 16:21:15 浏览: 88
```
#include <stdio.h>
#define MAXSIZE 100 // 定义最大长度
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 当前长度
} SqList;
void InitList(SqList *L) { // 初始化
L->length = 0;
}
void CreateList(SqList *L, int n) { // 创建线性表
int i;
printf("请输入 %d 个元素:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
void PrintList(SqList L) { // 打印线性表
int i;
printf("当前线性表为:");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void ReverseList(SqList *L) { // 就地逆置
int i, temp;
for (i = 0; i < L->length / 2; i++) {
temp = L->data[i];
L->data[i] = L->data[L->length - i - 1];
L->data[L->length - i - 1] = temp;
}
}
int main() {
SqList L;
int n;
printf("请输入线性表长度:");
scanf("%d", &n);
CreateList(&L, n);
PrintList(L);
ReverseList(&L);
printf("逆置后的线性表为:");
PrintList(L);
return 0;
}
```
阅读全文