题目描述:
设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1)
算法思想:
算法思想:
1.从两端(i=0,j=L.length)开始交换。i<j时交换。
交换的两个元素为L.data[i]和L.data[j]2.或者for循环的结束条件改为i<L.length/2。 交换的两个元素则是L.data[i]和L.data[L.length-1-i]
核心代码:
int ReverseList_1(SqList &L)
{
for(int i=0,j=L.length-1;i<j;i++,j--)//j应该是等于L.length-1,刚开始写错了。
{
int temp;
temp=L.data[i];
L.data[i]=L.data[j];
L.data[j]=temp;
}
return 0;
}
int ReverseList_2(SqList &L)
{
for(int i=0;i<L.length/2;i++)//j应该是等于L.length-1,刚开始写错了。
{
int temp;
temp=L.data[i];
L.data[i]=L.data[L.length-1-i];
L.data[L.length-1-i]=temp;
}
return 0;
}
完整代码:
#include <stdio.