永发信息网

c++合并两个有序顺序表

答案:3  悬赏:10  手机版
解决时间 2021-03-09 09:20
  • 提问者网友:寂寞梧桐
  • 2021-03-09 05:08
1.用数组做。
2.三个函数:creat,merger,print(有时间的话可以帮忙加个验证函数)

都写在主函数里的我会写,拿出来就不会了。
怎么用一个函数建立多个数组,数组传递这不太懂。
#include

#define X 100
#define Y 100
#define Z 200

void main()
{
int a[X],b[Y],c[Z];
int i,j,k;
int m,n;

//建立顺序表a
cout<<"请输入有序顺序表a长度:";
cin>>m;
cout<<"请输入有序顺序表a,以空格分开:"<la: for(i=0;i cin>>a[i];

//错误判断
for(i=1;i {
if(a[i] {
cout<<"顺序表a输入错误,请重新输入!"< goto la;
}
}

//建立顺序表b
cout<<"请输入有序顺序表b长度:";
cin>>n;
cout<<"请输入有序顺序表b,以空格分开:"<lb: for(j=0;j cin>>b[j];

//错误判断
for(j=1;j {
if(b[j] {
cout<<"顺序表b输入错误,请重新输入!"< goto lb;
}
}

//合并顺序表
i=j=k=0;
while(i {
if(a[i] {
c[k]=a[i];
i++;
k++;
}
else
{
c[k]=b[j];
j++;
k++;
}
}
//插入剩余数
while(i {
c[k]=a[i];
i++;
k++;
}
while(j {
c[k]=b[j];
j++;
k++;
}
cout<
//输出
//输出顺序表a
cout<<"顺序表a为:"< for(i=0;i cout< cout< //输出顺序表b
cout<<"顺序表b为:"< for(j=0;j cout< cout< //输出合并后的新顺序表
cout<<"合并后的顺序表为:"< for(k=0;k cout< cout<}
最佳答案
  • 五星知识达人网友:平生事
  • 2021-03-09 06:42
#include
#include
#include
int main(int argc,char * argv[])
{
srand((unsigned int)(time(0)));
std::list a;
std::list b;
std::list c;

for(int ii=0;ii<100+rand()%100;++ii)
{
a.push_back(rand());
}
for(int ii=0;ii<100+rand()%100;++ii)
{
b.push_back(rand());
}
for(int ii=0;ii<100+rand()%100;++ii)
{
c.push_back(rand());
}
std::list d;
d.splice(d.end(),a);
d.splice(d.end(),b);
d.splice(d.end(),c);
d.sort();
system("pause");
return EXIT_SUCCESS;
}
全部回答
  • 1楼网友:不想翻身的咸鱼
  • 2021-03-09 09:46
输入和输出地方,就不理了,值说你://合并顺序表-->//输出 int MargeArr(int a[], int aLen, int b[], int bLen, int* c, int &cLen) { c[0] = 1; cLen++; c[1] = 2; cLen++; return 0; } 完全可以用这个函数去代替,你把while中的内容整理进来,在外面定义一个int c[1000],传到 int c*上,就ok了,cLen记录你拷贝了多少个元素,也就是你最终的数据长度
  • 2楼网友:醉吻情书
  • 2021-03-09 08:17
你这个合并方法是不正确的,我看你的程序执行的只是比较两个链表对应序号的节点,大的就放到c链表里,两个链表里的很多节点给漏掉了,并没有真正实现两个链表的合并.修改后如下: void chain::merge(chain&a,chain&b,chain&c) { chainnode*p,*q,*t; p=a.first;q=b.first; if(a.first->data>=b.first->data) t=c.first=a.first; else t=c.first=b.first; while(p!=null&&q!=null) { if(p->data>=q->data) { t=p; p=p->link; t=t->link;} else { t=q; q=q->link; t=t->link;} } while(p==null&&q!=null) { t=q; q=q->link; t=t->link; } while(q==null&&p!=null) { t=p; p=p->link; t=t->link; } t->link=null; } 我怎么调试呀,好多东西都没定义,我又不清楚你定义的数据结构.你要不把题目全发给我,我给你看.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯