任务描述
本关任务:编写顺序表的逆置操作函数。
相关知识
关于逆置,有一种非常暴力的解决方法,就是单独开辟一个同等大小的顺序表,然后新表从前往后遍历,同时原表从后往前遍历,依次赋值,最后得到的就是逆置后的顺序表。但这种方法的空间复杂度为O(n),所以并不能这么做。
顺序表的就地逆置,只需让顺序表中的数据元素头尾依次交换即可,即交换第一个元素和最后一个元素,第二个和倒数第二个,依此类推,这种方法的空间复杂度为O(1)。
编程要求
根据提示,在右侧编辑器 Begin-End 区间补充代码,完成顺序表的逆置操作函数的定义:
void reverse(SqList &A); //将顺序表就地逆置
测试说明
平台会对你编写的代码进行测试:
测试输入: 10
12 47 5 8 6 92 45 63 75 38
预期输出: 逆置顺序表:
38 75 63 45 92 6 8 5 47 12
输入说明 第一行输入顺序表的长度M; 第二行输入顺序表的M个整数;
输出说明 第一行输出提示信息; 第二行输出逆置后的顺序表。
开始你的任务吧,祝你成功!
/********** 定义 void reverse(SqList &A)函数**********/
void reverse(SqList &A)
{
/********** Begin **********/
int i,t=0;
int c=A.length/2;
for(i=0;i<c;i++){
t=A.elem[i];
A.elem[i]=A.elem[A.length-1-i];
A.elem[A.length-1-i]=t;
}
/********** End **********/
}