题目:
设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)
算法思想:
扫描顺序表L的前半部分元素L.data[i] (0<=i<L.length/2),将其与后半部分的对应元素L.data[L.length-1-i]进行交换
代码如下:
void Reverse(Sqlist &L){
Elemtype temp; //辅助变量
for(i=0;i<L.length/2;i++){
temp=L.data[i]; //将前半部分元素放入辅助变量
L.data[i]=L.data[L.length-1-i]; //将后半部分元素放在前半部分空间中
L.data[L.length-1-i]=temp; //从辅助变量中取出前半部分元素放入后半部分中
}
}