#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
////////////////////////////////////////////////
typedef struct
{
int *element;
int length;
int listsize;
}SeqList;
////////////////////////////////////////////////
int InitSeqList(SeqList &S)
{
S.element=(int *)malloc(sizeof(int)*100);
S.length=0;
S.listsize=100;
return 0;
}
///////////////////////////////////////////////////
int insert(SeqList &S,int x,int i)
{
if(i>S.listsize)
printf(" 插入有误!!\n");
if(S.listsize==i)//(int)S.length
{
S.element=(int *)realloc(S.element,(S.listsize+12)*sizeof(int));
S.listsize=S.listsize+12;
S.element[i]=x;
S.length++;
}
else
{
if(i==S.length)
{
S.element[S.length]=x;
S.length++;
}
else
{
for(int k=S.length;k>=i;k--)
{
S.element[k+1]=S.element[k];
}
S.element[k]=x;
S.length++;
}
}
return 1;
}
////////////////////////////////////////////////////
void display(SeqList &S,int i)
{
if(i>S.length)
{
printf("display is eror!");
return ;
}
printf(" %d ",S.element[i]);
}
////////////////////////////////////////////////
int DuiC(SeqList &S)
{
int i;
int j=0;
for(i=0;i<=S.length/2;i++)
{
if(S.element[i]!=S.element[S.length-i-1])
return 0;
}
return 1;
}
///////////////////////////////////////////////////////////////
void Paixun(SeqList &S)
{
int i,j=0,k=0,t,p;
for(i=0;i<S.length-1;i++)
{
if(S.element[i]%2==0)
{
for(p=i+1;p<S.length;p++)
{
if(S.element[p]%2==1)
{
j=p;
t=S.element[j];
for(k=j-1;k>=i;k--)
{
S.element[k+1]=S.element[k];
}
S.element[i]=t;
break;
}
}
}
}
}
////////////////////////////////////////////
void Free(SeqList &S)
{
free(S.element);
}
/////////////////////////////////////////////////////
int main()
{
SeqList s;
InitSeqList(s);
int k=rand();
for(int i=0;i<20;i++)
{ k=rand();
insert(s,k,i);
}
//insert(s,200,100);
for(i=0;i<20;i++)
{
display(s,i);
}
if(!DuiC(s))
printf("\n it is not 对称!!\n");
else
printf("\n it is 对称!!\n");
Paixun(s);
for(i=0;i<20;i++)
{
display(s,i);
}
printf("\n");
return 0;
}