首页 > 解决方案 > 使用运算符重载 C++ 连接两个链表

问题描述

我想使用运算符重载连接两个链接列表。过去几个小时我一直在尝试,但没有结果。

我正在尝试创建一个单独的函数用于连接,稍后我将在运算符重载中使用它。这是我到目前为止所拥有的。

列表定义

struct Node
{
    int info;
    Node* link;
};

class LinkList
{
public:
    Node* head;
    LinkList()
    {
      head = NULL;
    }
 
    void Append(int num);
    void Insert(int num, int position);
    void Print();
    void Delete(int position);
    void concatenate(LinkList list1, LinkList list2);
};

附加功能

void LinkList::Append(int num) // Creates a new node
{
    Node* newNode = new Node();
      
    newNode->info = num;
    newNode->link = NULL; 
      
    if(head == NULL)
    {
        head = newNode;
    }
        
    else
    {
        Node* temp = head;
        while(temp->link != NULL)
        {
            temp = temp->link;
        }
            
    temp->link = newNode;
    }    
}
 

连接函数

void concatenate(LinkList list1, LinkList list2)
{
    LinkList list3;
    
    Node* ptr1 = list1.head;
    Node* ptr2 = list2.head;
    while(ptr1->link!=NULL)
    {
        list3.Append(ptr1->info);
        ptr1 = ptr1->link;
    }
    while(ptr2->link!=NULL)
    {
        list3.Append(ptr2->info);
        ptr2 = ptr2->link;
    }
    list3.Print();
}

我收到 [Error] id 返回 1 退出状态。你能帮我纠正一下吗?(如果有人可以将它作为运算符重载的一部分直接实现,我将不胜感激)

标签: c++classpointerslinked-listoperator-overloading

解决方案


在连接函数中使用LinkList&而不是LinkList在类中实现复制构造函数


推荐阅读