将两个有序顺序表合并成一个新的有序顺序表问题,输出结果不对,求大神赐教
#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]); }}
展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询