请调整顺序表的数据,使得左边为奇数,右边为偶数,要求时间复杂度为O(n)。
【样例输入】25 34 57 50 16 48 9 62 0
【样例输出】25 9 57 50 16 48 34 62
【注意】0代表输入的结束
#include<stdio.h>
#define MAXSIZE 100
typedef int Elemtype;
typedef struct
{
Elemtype elem[MAXSIZE];
int last;
}Seqlist;
void init(Seqlist*L)
{
L->last=-1;
}
void Adjust(Seqlist*L)
{
int leftPosition=0,rightPosition=L->last;
int a,b;
while(leftPosition<rightPosition)
{
a=L->elem[leftPosition];
b=L->elem[rightPosition];
if(a%2==1) leftPosition++;
else if(b%2==0) rightPosition--;
else{
L->elem[leftPosition]=b;
L->elem[rightPosition]=a;
leftPosition++;
rightPosition--;
}
}
}
void Input(Seqlist*L)
{
int c;
int flag=1;
while(flag)
{
scanf("%d",&c);
if(c!=0)
{
L->elem[++L->last]=c;
}
else
flag=0;
}
}
void showL(Seqlist*L)
{
int i;
for(i=0;i<=L->last;i++)
printf("%d ",L->elem[i]);
}
int main()
{
Seqlist L;
init(&L);
Input(&L);
Adjust(&L);
showL(&L);
}