题目: 设顺序表中的数据元素是按值非递减有序排列的,试编写一算法,将x插入到顺序表的适当位置上,以保持顺序表的有序性。 函数接口定义: void ListInsertSort(SqList *L, DataType x); 其中 L 和 x 都是用户传入的参数。 L 表示顺序表, x 是要插入的元素。 裁判测试程序样例: #include"stdio.h" #define LISTSIZE 100 typedef int DataType; typedef struct{ DataType items[LISTSIZE]; int length; }SqList; int InitList(SqList *L); /* 细节在此不表 */ int ListInsert(SqList *L, int pos, DataType item); /* 细节在此不表 */ int TraverseList(SqList L); /* 细节在此不表 */ void ListInsertSort(SqList *L, DataType x); /* 本题要求补充函数 */ void main() { int i,input,x; SqList L1; //定义顺序表 InitList(&L1); //初始化建空表 for(i=0;;i++) { scanf("%d",&input); if(input==-1)break; ListInsert(&L1, i+1, input); //插入数据 } scanf("%d",&x); ListInsertSort(&L1, x); // 本题要求函数在主函数中的调用 TraverseList(L1); //遍历 } /* 请在这里填写答案 */ 输入样例: 在这里给出一组输入。例如: 1 3 6 7 8 9 -1 3 输出样例: 在这里给出相应的输出。例如: 1 3 3 6 7 8 9 答案: void ListInsertSort(SqList *L, DataType x) { int i; int pos=1; for(i=0;L->items[i]<x;i++) { pos++; } for(i=L->length-1;i>=pos-1;i--) { L->items[i+1]= L->items[i]; } L->items[pos-1]=x; L->length++; return 1; }