设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)

初始化及打印函数

#define _CRT_SECURE_NO_WARNINGS
#include
#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;
}

设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)_第1张图片

你可能感兴趣的:(数据结构专栏,算法)