初始化及打印函数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define MaxSize 10//定义最大长度
int InitArr[10] = { 1,2,3,4,5,6,7,8,9,10 };
typedef struct {
int data[MaxSize];//用静态的数据存放数据元素
int length;//顺序表当前长度
}Sqlist;//顺序表的类型定义
void print(Sqlist* L)
{
for (int i = 0;i < L->length;i++)
{
printf("%d ", L->data[i]);
}
}
//初始化一个顺序表
void InitList(Sqlist* L)
{
for (int i = 0;i < MaxSize;i++)
{
L->data[i] = InitArr[i];//将所有数据元素设置为默认初始值
}
L->length = 10;//顺序表初始长度为0
}
//设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)
void reverse(Sqlist* L) {
//将第i位与倒数第i位互换位置即可
int i = 0;//正向
int j = (*L).length - 1;
while (i < j) {
int tmp = (*L).data[j];
(*L).data[j] = (*L).data[i];
(*L).data[i] = tmp;
i++;
j--;
}
}
int main()
{
Sqlist L;
InitList(&L);//初始化一个顺序表:1,2,3,4,5,6,7,8,9,10
printf("初始顺序表为:");
print(&L);
printf("\n");
reverse(&L);
printf("逆置后顺序表为:");
print(&L);
return 0;
}