题目:
将顺序表(a1,a2,…,an)重新排列以a1为界的两部分:a1前面的值均比a1小,a1后面的值均比a1大(这里假设数据元素的类型具有可比性,不妨设为整型)
代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct
{
datatype a[MAXSIZE];
int size;
}sequence_list;
int function(sequence_list *L)
{
int i,j;
datatype x,y;
x=L->a[0];
for(i=1;i<L->size;i++)
{
if(x>L->a[i])
{
y=L->a[i];
for(j=i;j>0;j--)
L->a[j]=L->a[j-1];
L->a[0]=y;
}
}
}
int main()
{
int i;
int a;
sequence_list L;
printf("输入线性表(以0结束):");
L.size=0;
for(i=0;i<MAXSIZE;i++)
{
scanf("%d",&a);
if(a==0)
break;
L.a[i]=a;
L.size++;
}
printf("重新排列后的线性表:\n");
function(&L);
for(i=0;i<L.size;i++)
{
printf("%d ",L.a[i]);
}
return 0;
}