您的位置:首页 > 理论基础 > 数据结构算法

-2 有序顺序表的插入(10 分)

2017-12-18 08:52 323 查看

本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。 比如:原数据有:2 5,要插入一个元素3,那么插入后顺序表为2 3 5。 要考虑扩容的问题。

函数接口定义:

Status ListInsert_SortedSq(SqList &L, ElemType e);

裁判测试程序样例:

//库函数头文件包含#include<stdio.h>#include<malloc.h>#include<stdlib.h>//函数状态码定义#define TRUE        1#define FALSE       0#define OK          1#define ERROR       0#define INFEASIBLE -1#define OVERFLOW   -2typedef int  Status;//顺序表的存储结构定义#define LIST_INIT_SIZE  100#define LISTINCREMENT   10typedef int ElemType;  //假设线性表中的元素均为整型typedef struct{ElemType* elem;   //存储空间基地址int length;       //表中元素的个数int listsize;     //表容量大小}SqList;    //顺序表类型定义//函数声明Status ListInsert_SortedSq(SqList &L, ElemType e);//顺序表初始化函数Status InitList_Sq(SqList &L){//开辟一段空间L.elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));//检测开辟是否成功if(!L.elem){exit(OVERFLOW);}//赋值L.length = 0;L.listsize = LIST_INIT_SIZE;return OK;}//顺序表输出函数void ListPrint_Sq(SqList L){ElemType *p = L.elem;//遍历元素用的指针for(int i = 0; i < L.length; ++i){if(i == L.length - 1){printf("%d", *(p+i));}else{printf("%d ", *(p+i));}}}int main(){//声明一个顺序表SqList L;//初始化顺序表InitList_Sq(L);int number = 0;ElemType e;scanf("%d", &number);//插入数据的个数for(int i = 0; i < number; ++i){scanf("%d", &e);//输入数据ListInsert_SortedSq(L, e);}ListPrint_Sq(L);return  0;}/* 请在这里填写答案 */
输入格式: 第一行输入接下来要插入的数字的个数 第二行输入数字 输出格式: 输出插入之后的数字

输入样例:

5
2 3 9 8 4

输出样例:

2 3 4 8 9
Status ListInsert_SortedSq(SqList &L, ElemType e){    ElemType *p;    if(L.length >= L.listsize)    {        p = (ElemType*)realloc(L.elem, (L.listsize + LISTINCREMENT) * sizeof(ElemType));        if(p == NULL)            return ERROR;        else        {            L.listsize += LISTINCREMENT;            L.elem = p;        }    }    int i;    for(i = 0; i < L.length&& *(L.elem + i) <= e; i ++)    {    }    int m, j;    for(m = i, j = 0; m < L.length; m ++, j ++)    {       L.elem[L.length - j] = L.elem[L.length - 1 - j];       //*(L.elem + L.length - j) = *(L.elem + L.length - j- 1);    }    L.elem[i] = e;    //*(L.elem + i) = e;    L.length ++;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 函数
相关文章推荐