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

写出该提的算法

#include <stdio.h>

#include <stdlib.h>

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

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

typedef struct {

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

int length;         // 当前长度

}SqList;

bool InsertList(SqList *L,Datatype x) {

int i,j;

if (L->length >= Max) { 

printf("overflow!");

return false;

}

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

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

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

L->data[i] = x;

L->length++;

return true;

}

}

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

return true;

}

void main() {

SqList L;

Datatype x;

int i,n = 10;

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

L.length = n;

printf("原线性表为:\n");

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

printf("\n线性表长度为:%d\n\n",L.length);

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

scanf("%d",&x);

InsertList(&L,x);

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

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

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

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-26
这还不简单,一个循环就搞定了。

没有数据结构不知道怎么写。