我一直试图弄清楚如何扭转双重关联的顺序 我最近在hackerrank上创建了一个帐户,这是我的第10个问题。 我花了1个小时才弄清楚解决方案(我用笔和纸试过 很多次)最后它传递正确。 在那之后,我看到了一些其他人提交的答案。他们的代码是 与我相比,它的长度非常小,或者您认为我的答案也没问题。 我没有人要求所以我来到这里...... 当我看到它时,我感到愚蠢。我可以在将来改进吗? (请原谅我,如果你认为这是一个愚蠢的话 问题)
Node Reverse(Node head) {
Node prevNode = null;
Node NextNode = null;
Node m = head;
Node upComingNode = null;
Node temp = head;
if(head == null){
return head;
}
else{
while(temp!=null){
NextNode = temp.next;
temp.next = prevNode;
m.prev = upComingNode;
prevNode = temp;
upComingNode = prevNode.next;
m = temp;
temp = NextNode;
}
head = prevNode;
}
return head;
}
答案 0 :(得分:0)
我不确定您使用的是哪种语言,但要反转双向链接列表,简而言之,您希望为每个节点交换下一个和上一个节点。这可以很快完成,伪代码如下:
while(currNode != tail){
currNode.nextNode = tempNode
currNode.nextNode = currNode.prevNode
currNode.prevNode = tempNode
currNode = currNode.prevNode
}
请注意,我们将下一个节点设置为以上一个节点进行迭代,因为前一个节点实际上指向我们进行切换的下一个节点。