c++之有序顺序表中插入x

img

img

# include 

# include 

# define initsize 20  //初始分配量

# define LISTINCREMENT 5  //分配增量

typedef int ElemType;

typedef struct        //结构体定义

{

ElemType * elem;

int length;

int listsize;

}SqList;

void IntiList(SqList &L, int n)
{
    L.elem = new int[initsize];
    if (!L.elem)
        exit(0);
    L.length = n;
}

int ListInsert(SqList &L, int i, ElemType e) 
{ 
    if ((i < 1) || (i > L.length + 1))
        return 0; 
    if (L.length >= initsize)
        return 0;
    for (int j = L.length-1; j >= i-1 ; j--)
        L.elem[j+1]=L.elem[j];  
    L.elem[i+1]=e;; 
    L.length++;
    return 1;
}


int main()

{

    int n, j = 0;

    ElemType x;

    SqList L;

// 建立一个表长为n的顺序表
    scanf("%d", &n);

    IntiList(L, n); // 初始化顺序表函数,需自行实现

    for (int i = 0; i < n; i++)

        scanf("%d", &L.elem[i]);


    // 输入插入的数字x,并找到x应该插入的位置j
    scanf("%d", &x);

    for (int i = 0; i < n && L.elem[i] < x; i++)
        j = i;
    
    ListInsert(L, j, x); // 插入顺序表函数,需自行实现



    // 输出顺序表
    for (int k = 0; k < L.length; k++)

        printf("%d ", L.elem[k]);

    return 0;

}

怀疑是插入那部分错了,但我想不明白。测试数据1:不明白为什么会出现两个15.测试数据2:当插入最前端时的时候,运行结果没插入。按我的设想应该能正常运行的。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^