顺序表
#include <iostream>
#include <cstdlib>
using namespace std;
typedef struct
{
int data[1005];
int length;
}SqList;
void input(SqList *p)
{
int x;
cin>>x;
int i=0;
p->length=0;
while(x!=-1)
{
p->data[i++]=x;
(p->length)++;
cin>>x;
}
}
void print(SqList *p)
{
for(int i=0;i<p->length;i++)
{
cout << p->data[i] << ' ';
}
cout << endl;
}
void inser(SqList *L,int pos,int e)
{
int k;
for(k=L->length-1;k>=pos-1;k--)
L->data[k+1]=L->data[k];
L->data[pos-1]=e;
L->length++;
}
void dele(SqList *L,int pos)
{
int k;
for(k=pos;k<L->length;k++)
L->data[k-1]=L->data[k];
L->length--;
}
void merg(SqList *h1,SqList *h2,SqList *h3)
{
int i,j,k;
i=j=k=0;
while(i<h1->length&&j<h2->length)
{
if(h1->data[i]<h2->data[j])
{
h3->data[k++]=h1->data[i];
i++;
}
else
{
h3->data[k++]=h2->data[j];
j++;
}
}
while(i<h1->length)
{
h3->data[k++]=h1->data[i];
i++;
}
while(j<h2->length)
{
h3->data[k++]=h2->data[j];
j++;
}
h3->length=k;
}
void shxinsert(SqList *L,int e)
{
int i;
for(i=L->length-1;i>=0&&e<L->data[i];i--)
{
L->data[i+1]=L->data[i];
}
L->data[i+1]=e;
L->length++;
}
void shxdelete(SqList *L,int e)
{
int i;
for(i=0;i<L->length&&e!=L->data[i];i++)
{
}
if(i>=L->length)
return ;
else
{
for(int j=i+1;j<=L->length;j++)
{
L->data[j-1]=L->data[j];
}
L->length--;
}
}
void changejo(SqList *L)
{
int i,j,t;
i=0;j=L->length-1;
while(i<j)
{
while(i<j&&L->data[i]%2==1)
i++;
while(i<j&&L->data[j]%2==0)
j--;
if(i<j)
{
t=L->data[i];
L->data[i]=L->data[j];
L->data[j]=t;
}
}
}
void deleteodd(SqList *L)
{
int i,tail;
i=0;tail=0;
while(i<L->length)
{
if(L->data[i]%2==1)
{
i++;
}
else
{
L->data[tail]=L->data[i];
i++;
tail++;
}
}
L->length=tail;
}
int main()
{
SqList lb;
SqList h1,h2,h3;
input(&lb);
changejo(&lb);
deleteodd(&lb);
print(&lb);
return 0;
}