【发布时间】:2021-02-22 22:22:51
【问题描述】:
我正在为 C++ 中的双链表编写代码。但是,我有一个问题,我不知道如何在其他节点之前添加节点。 我有这些。
template<class T>
void LinkedListD<T>::addNodeBeforeTo(Node<T> *before, T info) {
Node<T>* newNode = new Node<T>( info );
if ( isEmpty() ){
head = newNode;
last = newNode;
} else{
if ( before == head ){
newNode->next = head;
head = newNode;
} if ( before == last ){
newNode->previous = last;
last = newNode;
}
else{
Node<T>* act = head;
Node<T>* past = last;
while ( act->next != before && past->previous != before){
act = act->next;
past = past->previous;
}
newNode->previous = past->previous;
newNode->next = act->next;
act->next = newNode;
past->previous = newNode;
}
}
}
示例是 10、15、20、12 在 20:30 之前添加节点 完成输出 10、15、30、20、12 谢谢
【问题讨论】:
-
您有一个 while 循环,似乎正在搜索前节点……您为什么要这样做?您已经有一个指向前节点的指针,并且因为这是一个双向链表,所以前节点知道前一个节点和下一个节点。这就是您需要的所有信息。代码中不应有循环。因为这似乎是一个家庭作业问题,所以我不打算直接发布代码。
-
对不起,如果我使用了while,但我依赖于一个简单的链表。使用双重列表,无需遍历节点
标签: c++ pointers doubly-linked-list