首页 > 解决方案 > 在c ++中按组件添加相同大小的链表元素

问题描述

我需要为链表定义一个类,在该类中我需要支持使用符号 + 以组件方式添加相同大小的链表元素。我在类中定义了一个运算符,它对列表中的元素进行基于 0 的索引。这是索引运算符的定义。

 int operator[](int index)
{
 node* current = head;
 
    int count = 0;
    while (current != NULL) {
    
        if (count == index)
           
             return (current->val);
        count++;
        current = current->next;}
        
    return -1;
 
}

然后我尝试使用这个索引来获得总和。

List operator+(List l)
{List res;
for(int i=0;i<length();i++)// length() gives length of List, I have already defined it in my code//
{res[i] = (don't know what to put) + l[i];

return res;
}

我不知道我正在尝试做的任何事情是否正确。另外我不知道如何将元素的值放在我的主列表的索引 i 处。

请提出一种方法。

编辑1:我做了索引,因为它也是我作业的一部分,因为我已经需要做索引,这就是为什么我想在我的加法运算符中使用它。

标签: c++linked-list

解决方案


res[i] = (*this)[i] + l[i];将工作。

但是您正试图撤消链接列表的链接部分,并将它们添加的复杂性从 O(N) 增加到 O(N 2 )。如果这是一项任务,则该解决方案很可能不会被接受,或者至少不应该被接受。

只需以与您相同的方式遍历两个列表operator[]并即时创建第三个列表。


推荐阅读