将两个有序顺序表合并成一个新的有序顺序表问题,输出结果不对,求大神赐教

#include<stdio.h>#include<stdlib.h>#include<malloc.h>#defineMaxSize100//合并两个递增的有序线性表成... #include <stdio.h>#include <stdlib.h>#include <malloc.h>#define MaxSize 100//合并两个递增的有序线性表成为一个 //未解决 using namespace std;struct Sqlist { int *elem; int length; int listsize;};void initSqlist(Sqlist &l){ l.elem = (int*)malloc(MaxSize*sizeof(int)); if(!l.elem) exit(0); l.length = 0; l.listsize = MaxSize;}void Merge(Sqlist la, Sqlist lb, Sqlist &lc){ int i = 0, j = 0, p = 0; while(i < la.length && j < lb.length){ if(la.elem[i] <= lb.elem[j]){ lc.elem[p++] = la.elem[i++]; } else{ lc.elem[p++] = la.elem[j++]; } } while(i < la.length){ lc.elem[p++] = la.elem[i++]; } while(j < lb.length){ lc.elem[p++] = lb.elem[j++]; } lc.length = p;}int main(){ Sqlist la, lb, lc; initSqlist(la); initSqlist(lb); initSqlist(lc); printf("请输入la线性表的长度:"); scanf("%d", &la.length); printf("请输入线性表的内容:\n"); for(int i = 0; i < la.length; i++){ scanf("%d", &la.elem[i]);// 不能scanf("%d\n", &la.elem[i]);空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。只有输入一个非空白符的时候才能终止scanf的输入。 } printf("请输入lb线性表的长度:"); scanf("%d", &lb.length); printf("请输入线性表的内容:\n"); for(int i = 0; i < lb.length; i++){ scanf("%d", &lb.elem[i]);// 不能scanf("%d\n", &la.elem[i]);空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。只有输入一个非空白符的时候才能终止scanf的输入。 } printf("线性表la的内容为:\n"); for(int i = 0; i < la.length; i++){ printf("%d\n", la.elem[i]); } printf("线性表lb的内容为:\n"); for(int i = 0; i < lb.length; i++){ printf("%d\n", lb.elem[i]); } Merge(la, lb, lc); printf("线性表lc的内容为:\n"); for(int i = 0; i < lc.length; i++){ printf("%d\n", lc.elem[i]); }} 展开
 我来答
outspaceman19
2017-05-28 · TA获得超过1080个赞
知道小有建树答主
回答量:749
采纳率:100%
帮助的人:409万
展开全部

Merge的函数里面出错了

	while(i < la.length && j < lb.length){	
if(la.elem[i] <= lb.elem[j]){
lc.elem[p++] = la.elem[i++];
} else{
//lc.elem[p++] = la.elem[j++];
lc.elem[p++] = lb.elem[j++];
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式