注册 登录
编程论坛 C语言论坛

合并顺序表问题 求指导

c小白2333 发布于 2019-07-12 16:57, 1378 次点击
运行结果为顺序表为空
什么原因 自己看不出来
谢谢各位大佬了!!

int main(void)
{
    int value = 0;
    SqList L;
    init_SqList(&L, 6);
    SqList L1;
    init_SqList(&L1, 6);
    SqList L2;
    init_SqList(&L2, 20);

    append_SqList(&L, 1);
    append_SqList(&L, 3);
    append_SqList(&L, 3);
    append_SqList(&L, 4);
    append_SqList(&L, 7);

    append_SqList(&L1, 2);
    append_SqList(&L1, 4);
    append_SqList(&L1, 5);
    append_SqList(&L1, 8);
    append_SqList(&L1, 9);

    comb_SqList(L, L1, &L2);
    show_SqList(&L2);
    return 0;
}

void comb_SqList(SqList L, SqList L1, SqList * L2)
{   
    int k = 0;
    for (int i = 0; i < i++)
    {
        for (int j = 0; j < j++)
        {
            if (L.data[i] < L1.data[j])
            {
                L2->data[k] = L.data[i];
                k++;
            }
            else
            {
                L2->data[k] = L1.data[j];
                k++;
            }
        }
    }
    return ;
}
2 回复
#2
c小白23332019-07-14 15:22
求解决啊   自己百思不得其解  
头发都要挠没了
#3
c小白23332019-07-18 22:04
正解程序
void comb_SqList(SqList L, SqList L1, SqList * L2)
{

    int i = 0, j = 0, k = 0;
    while (i < && j < )
    {
        if (L.data[i] <= L1.data[j])
            L2->data[k++] = L.data[i++];
        else
            L2->data[k++] = L1.data[j++];
    }
    while (i < )
        L2->data[k++] = L.data[i++];
    while (j < )
        L2->data[k++] = L1.data[j++];
    L2->cnt = k;
}
上面错误原因
不能用两个for循环嵌套
应是两个两个一次增加这个比较
不能一次比较所以 思维有问题
1