设计一个算法,将一个顺序表倒置,即如果顺序表各个节点值存储在一维数组a中,倒置的结果是使得数组a中的a[0]等于原来的最后一个元素,a[1]等于原来的倒数第2个元素,......,a的最后一个元素等于原来的第一个元素。
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct
{
int a[MAXSIZE];
int size;
}sequence_list;
void init(sequence_list *slt)
{
slt->size=0;
return ;
}
void append(sequence_list *slt,int x)
{
if(slt->size==MAXSIZE)
{
printf("full\n");
return ;
}
slt->a[slt->size]=x;
slt->size++;
return ;
}
void display(sequence_list slt)
{
int i;
if(!slt.size)
{
printf("none\n");
return ;
}
for(i=0;i<slt.size;i++)
{
printf("%5d",slt.a[i]);
}
printf("\n");
return ;
}
void exchange(sequence_list *slt)
{
int l,i,t;
if(slt->size%2==0)
{
l=(slt->size-1)/2;
}
else
{
l=slt->size/2;
}
for(i=0;i<=l;i++)
{
t=slt->a[i];
slt->a[i]=slt->a[slt->size-i-1];
slt->a[slt->size-i-1]=t;
}
return ;
}
int main ()
{
int i,len;
sequence_list slt;
init(&slt);
scanf("%d",&len);
for(i=1;i<=len;i++)
{
append(&slt,i*i);
}
display(slt);
exchange(&slt);
display(slt);
return 0;
}