2.2.3_2.2
设计一个高效的算法,将顺序表L的所有元素逆置, 要求算法的空间复杂度为O(1)
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int length;
}SqList;
bool InitList(SqList &L){
int i=0;
for(i=0;i<MaxSize;i++){
L.data[i] = 0;
}
L.length = 0;
return true;
}
//指定位序插入
bool InsertList(SqList &L,int i,int e){
if(i<1||i>L.length+1){
return false;
}
if(L.length>=MaxSize){
return false;
}
int j=0;
for(j=L.length;j>i-1;j--){
L.data[j] =L.data[j-1];
}
L.data[j] = e;
L.length++;
return false;
}
//设计一个高效的算法,将顺序表L的所有元素逆置,
//要求算法的空间复杂度为O(1)
bool ReSqList(SqList &L){
//bool ReSqList(SqList &L1,SqList &L2){
//目前没有找到错在哪
// int i=0;
// int temp=0;
// int j=L2.length-1;
// for(i=0,j=L2.length-1;i<L2.length-1&&j>0;i++,j--){
// temp = L1.data[j];
// L2.data[i] = temp;
// L2.length++;
// }
int temp=0,i=0;
for(i=0;i<L.length/2;i++){
temp = L.data[i];
L.data[i] = L.data[L.length-i-1];
L.data[L.length-i-1] = temp;
}
return true;
}
void display(SqList L){
int i=0;
for(i=0;i<L.length;i++){
printf("%d ",L.data[i]);
}
printf("\n");
}
int main(){
SqList L1,L2;
InitList(L1);
InitList(L2);
int i=0;
for(i=1;i<10;i++){
InsertList(L1,i,i);
}
display(L1);
ReSqList(L1);
display(L1);
return 0;
}