遍历循环双向链表

时间:2016-09-21 02:33:37

标签: c++

所以我想从标题中返回索引i处的元素。 此双向链表中没有预告片节点 - 最后一个节点与标头节点连接。

例如,请考虑这个循环双向链表:

index:.......[0].........[1].........[2].........[3]

Header <=> [a|543] <=> [b|234] <=> [c|876] <=> [d|456]
  ^ ==============================================^
  • 如果我想在索引i = 2处检索元素,结果将是876
  • 如果我想在索引i = 4处检索元素,结果将是543(列表循环播放,但会跳过标题)。

我已经发展了这个逻辑:

Elem&
CircleList::operator [] (int i) const{
    CNode* temp; // Creating temporary node for traversal purposes
    temp->next = header; // Setting it equal to the header
    for (int j = 0; j < i; j++) { // Traverses up to i'th node
        if (temp->next == header) {
            temp = temp->next->next; // Skips the header
        }
        else {
            temp = temp->next; // Iterates to the next node
        }
    }
    return temp->elem; // Returns the element within that node
}

我创建了一个新节点并将其设置为等于标头。然后我试图使用for循环遍历。但是,我完全不确定这种方法是否可行,因为我还没有办法测试它。

  • 我是在正确的轨道上还是这只是错误的?

0 个答案:

没有答案