c++合并两个有序顺序表
解决时间 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;
}
我怎么调试呀,好多东西都没定义,我又不清楚你定义的数据结构.你要不把题目全发给我,我给你看.
我要举报
大家都在看
推荐资讯