C++ c++;重载[]以打印链接列表的第n项

C++ c++;重载[]以打印链接列表的第n项,c++,list,overloading,operator-keyword,C++,List,Overloading,Operator Keyword,我有一个作业涉及不同的链表操作。其中之一涉及重载方括号操作符,以便能够打印链表的第i个元素。我已经做了所有其他的事情,但我真的很迷茫。这就是我正在处理的问题。列表类如下所示: class List { public: // Creates a default empty list List(); // Simple destructor ~List(); // Insert "data" at the very end of the list void AddToFront(int data

我有一个作业涉及不同的链表操作。其中之一涉及重载方括号操作符,以便能够打印链表的第i个元素。我已经做了所有其他的事情,但我真的很迷茫。这就是我正在处理的问题。列表类如下所示:

class List {
public:
// Creates a default empty list
List();

// Simple destructor
~List();

// Insert "data" at the very end of the list
void AddToFront(int data);

// Remove and return the first data item from the list.
int deleteFront();

// Prints the list
void Print() ;

// Returns the size of the list
unsigned int Size() const;


//overloaded assignment operator
Node operator[](unsigned int i) ;



private:

Node *m_head;

};
另外,这里是我的节点类:

class Node {
public:
    Node();
    ~Node();
    Node(int data);

    int m_data;
    Node *m_next;
};
如果您对重载[]运算符有任何帮助,我们将不胜感激

Node* operator [] (int value) {
    Node *temp = this->m_head;
    for(int i = 0; i < value && temp!=NULL; i++) {
        temp = temp->m_next;
    }
    return temp;
}

这将在大型列表的情况下得到更优化,这将避免浪费执行
for
循环

对于第i个
节点
,返回
m_数据
更有意义,但变化不大。回答得很好。除了
temp,你可能还应该做些别的事情=也为空。例如,
if(size\u of_list
@erip True,但我认为OP不想在
list
类中保留额外的变量,而且我打算检查返回的内容,如果我从代码中返回<代码> null >代码>函数,它将意味着<代码> siZeIO.OpList<值>代码>,我一直对<代码>有更多的热爱。此外,您可以考虑使用CurrnEngCy节点节点与CurrnEdvices一起进行列表,因为随后,CurrutsQuultUSER7OP有一个<代码>大小<代码>方法,这意味着他在<代码>列表类中有一个size属性。如果
size
,当前实现将返回最后一个元素,因此如果列表[1,2,3]且
value
为100,则返回
3
,这是意外的。您将如何编写正常函数来返回第i个节点?
if(value >= size_of_list) // equal to sign is put, considering your `size_of_list` starts from 1
    return NULL;