echo_hao 2017-11-11 07:15 采纳率: 0%
浏览 891

线性表的合并,运算符重载有问题,求各位大神解答

#include
#include
using namespace std;
#define max 10010;
template
class list;

template
class list
{
private:
type *data;
int size;

public:
list()
{
data = new type[max];
size = 0;
}
~list() { delete[] data; }
/*list(const list &other)
{
size = other.size;
data = new type[max];
for (int i = 0; i < size; i++)
data[i] = other.data[i];
}*/
friend list &operator+(const list& x, const list& y)
{

    list<type> tmp;

    for (int i = 0; i < x.length(); i++)
        tmp.push_pack(x.visit(i));

    for (int i = x.length(); i < x.length() + y.length(); i++)
        tmp.push_pack(y.visit(i - x.length()));

    return tmp;
}
int length() { return size; }
void insert(int i, const type &x);
void push_pack(const type &x);
type visit(int i);

};

template
void list::insert(int i, const type &x)
{
if (isize) return false;
for (int j = size; j > i; j--) data[j] = data[j - 1];
data[i] = x;
++size;
}
template
void list::push_pack(const type &x)
{
data[size] = x;
++size;
}
template
type list::visit(int i)
{
if (isize) return false;
return data[i];
}

char str[10];
int n, m;
int main()
{

while (cin>>str)
{
    cin >> n >> m;
    if (str == "int")
    {
        list<int> l1;
        list<int> l2;
        int a, b;
        for (int i = 0; i < n; i++)
        {
            cin >> a;
            l1.push_pack(a);
        }
        for (int i = 0; i < m; i++)
        {
            cin >> b;
            l2.push_pack(b);
        }
        list<int> l3;
        l3 = l1 + l2;
        for (int i = 0; i < l3.length(); i++)
            cout << l3.visit(i) << ' ';
    }
    else if (str == "char")
    {
        list<char> l1;
        list<char> l2;
        char a, b;
        for (int i = 0; i < n; i++)
        {
            cin >> a;
            l1.push_pack(a);
        }
        for (int i = 0; i < m; i++)
        {
            cin >> b;
            l2.push_pack(b);
        }
        list<char> l3;
        l3 = l1 + l2;
        for (int i = 0; i < l3.length(); i++)
            cout << l3.visit(i) << ' ';
    }
    else if (str == "double")
    {
        list<double> l1;
        list<double> l2;
        double a, b;
        for (int i = 0; i < n; i++)
        {
            cin >> a;
            l1.push_pack(a);
        }
        for (int i = 0; i < m; i++)
        {
            cin >> b;
            l2.push_pack(b);
        }
        list<double> l3;
        l3 = l1 + l2;
        for (int i = 0; i < l3.length(); i++)
            cout << l3.visit(i) << ' ';
    }   
}
return 0;

}

  • 写回答

1条回答

  • threenewbee 2017-11-12 03:57
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大