[英]Doubly Linked List
我一直在試圖弄清楚如何反轉雙向鏈接列表的順序。我最近在hackerrank上建立了帳戶,這是我的第十個問題。 我花了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;
}
我不確定您使用的是哪種語言,但是簡單地說,要反轉雙向鏈表,您想為每個節點交換下一個和上一個節點。 這可以很快完成,偽代碼如下:
while(currNode != tail){
currNode.nextNode = tempNode
currNode.nextNode = currNode.prevNode
currNode.prevNode = tempNode
currNode = currNode.prevNode
}
請注意,我們將下一個節點設置為作為上一個節點進行迭代,因為在進行切換后,上一個節點實際上指向下一個節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.