已知一个顺序表A,其中的元素按值递减有序排列,编写一个函数插入一个元素X后保持该顺序表仍按递减排列

1个回答

  • #include

    #include

    #define Max 100// 定义数组的最大长度

    typedef int Datatype; // 定义数组元素的数据类型

    typedef struct {

    x09Datatype data[Max]; // data数组用于开辟一段连续的存储空间

    x09int length;// 当前长度

    }SqList;

    bool InsertList(SqList *L,Datatype x) {

    x09int i,j;

    x09if (L->length >= Max) {

    x09x09printf("overflow!");

    x09x09return false;

    x09}

    x09for (i = 0;i < L->length;i++) {

    x09x09if(x >= L->data[i]) {

    x09x09x09for(j = L->length;j >= i;j--) L->data[j + 1] = L->data[j]; // 结点后移

    x09x09x09L->data[i] = x;

    x09x09x09L->length++;

    x09x09x09return true;

    x09x09}

    x09}

    x09L->data[L->length++] = x;

    x09return true;

    }

    void main() {

    x09SqList L;

    x09Datatype x;

    x09int i,n = 10;

    x09for(i = 0;i < n;i++) L.data[i] = 2*(n - i);

    x09L.length = n;

    x09printf("原线性表为:n");

    x09for(i = 0;i < L.length;i++) printf("%d ",L.data[i]);

    x09printf("n线性表长度为:%dnn",L.length);

    x09printf("输入插入数据x:");

    x09scanf("%d",&x);

    x09InsertList(&L,x);

    x09printf("n插入后的线性表值为:");

    x09for(i = 0;i < L.length;i++) printf("%d ",L.data[i]);

    x09printf("n插入后的线性表长度为:%dnn",L.length);

    }