【发布时间】:2021-09-04 09:58:13
【问题描述】:
我想使用运算符重载连接两个链接列表。过去几个小时我一直在尝试,但没有结果。
我正在尝试创建一个单独的函数用于连接,稍后我将在运算符重载中使用它。这是我目前所拥有的。
列表定义
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();
}
我收到 [错误] id 返回 1 个退出状态。你能帮我纠正一下吗? (如果有人可以将它作为运算符重载的一部分直接实现,我将不胜感激)
【问题讨论】:
-
请将错误信息添加到您的帖子中。
-
concatenate(LinkList list1, LinkList list2);这个操作真的需要三个链表吗? -
您遇到的至少一个问题是
while条件。使用while (ptr1)和while(ptr2)而不是你写的。 -
void LinkList::Appendvoid concatenate其中一个与另一个不同。
标签: c++ class pointers linked-list operator-overloading