所以我想从标题中返回索引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循环遍历。但是,我完全不确定这种方法是否可行,因为我还没有办法测试它。