题目:
设计一个高效算法,将顺序表L的所有元素逆置,要求算法空间复杂度为O(1)。
思路:
只需要将前半部分和后半部分的数据交换就可以了
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxsize 100
struct sqlist{
int data[maxsize]={2,3,4,5,6,7,8,9};
int length=8;
};
void reverse(sqlist &l){
int temp;
for(int 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;
}
}
int main(){
sqlist l;
cout<<"原来的线性表顺序:"<<" ";
for(int i=0;i<l.length;i++) cout<<l.data[i];
cout<<endl;
reverse(l);
cout<<"现在的顺序:"<<" ";
for(int i=0;i<l.length;i++) cout<<l.data[i];
cout<<endl;
return 0;
}