数据结构 顺序表 将顺序表以a1为界重新排列 前面比a1小,后面比a大

    题目:     

    将顺序表(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;
}

猜你喜欢

转载自blog.csdn.net/qq_40452317/article/details/82707866