王道 数据结构 p17 第2题
设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)
#include<iostream>
#define InitSize 100
#define arrLen 5
using namespace std;
typedef struct { //声明一个动态分配内存的顺序表
int *data;
int len,MaxSize;
}SeqList;
void init(SeqList &L){ //初始化顺序表
L.data=new int[InitSize];
L.len=0;
if(L.data!=NULL)
cout<<"success!" <<endl;
else
cout<<"faild"<<endl;
}
void input(SeqList &L){ //给顺序表输入数值
for(int i=0;i<arrLen;i++)
{
cout<<"请输入第"<<i+1<<"个数字:";
cin>>L.data[i];
L.len++;
}
}
void output(SeqList &L) //输出顺序表
{
for(int i=0;i<L.len;i++)
{
cout<<L.data[i]<<" ";
}
cout<<endl;
}
void reverse(SeqList &L){
int temp=0;
for(int i=0;i<L.len/2;i++)
{
temp=L.data[L.len-1-i];
L.data[L.len-1-i]=L.data[i];
L.data[i]=temp;
}
}
int main(){
SeqList L;
init(L);
input(L);
cout<<"逆置前:" ;
output(L);
reverse(L);
cout<<endl<<"逆置后:" ;
output(L);
return 0;
}