高手请进!C++数据被覆盖问题!

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:36:52
本程序用原表(即表A和表B)的结点空间存放表C(本程序中先用表A,再用表B);可是这样表A的数据可能被覆盖,如:
输入表A:1 2 3 4 5
输入表B:4 5 6 7
预期结果为:1 2 3 4 4 5 5 6 7
而实际结果为:1 2 3 4 4 4 5 6 7

显然A中的5在未被使用前就被4给覆盖了
各位大侠,有什么办法解决这个“数据被覆盖”的问题呢?
(若能给出通过测试的正确代码,感激不尽)

/*本程序实现:
假设有两个按元素值非递减有序排列的线性表A和B,均以单链表作存储结构,
请编写程序将表A和表B归并成一个按元素非递减有序(允许值相
同)排列的线性表C,并要求利用原表(即表A和表B)的结点空间存放表C。*/

#include <iostream>
#include <list>
#include <iterator>
#include <string>
using namespace std;

class k
{
public:
list <int> A;
list <int> B;
void a_input();
void b_input();
void combi(list <int> &a,list <int> &b);
void output();
};

void k::a_input()
{
puts("请按非递减顺序输入链表A的元素,以quit结束输入:");
string line;
while(cin>>line)
{
if(line=="quit")
break;
int i=atoi(line.c_str()); <

代码已更改:
#include <iostream>
#include <algorithm>
#include <list>
#include <iterator>
using namespace std;

class k
{
public:
void a_input();
void b_input();
void combi();
void output() const;
private:
list<int> A;
list<int> B;
};

void k::a_input()
{
cout<<"input the elements, -1 is the end!"<<endl;
int in;
while(cin>>in,in!=-1)
A.push_back(in);
}

void k::b_input()
{
cout<<"input the elements, -1 is the end!"<<endl;
int in;
while(cin>>in,in!=-1)
B.push_back(in);
}

void k::combi() //交换,使A中的任意比B中的小
{
list<int>::iterator it_b=B.begin();
list<int>::iterator it_a=A.begin();
for(it_a=A.begin();it_a!=A.end();it_a++)
{
for(it_b=B.begi