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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?