[英]Reversing a circular doubly linked list
我正在嘗試在循環雙向鏈表上實現 reverse() 函數。
這是我的代碼:
public void reverseCDLL() {
if (head != null) {
Node current = head, next, temp;
do{
next = current.getNextNode();
temp = current.getPrevNode();
current.setPrevNode(current.getNextNode());
current.setNextNode(temp);
current = next;
}while(current != head);
}
}
輸入: 1 2 3 4
輸出: 1 4 3 2
預期產出: 4 3 2 1
我非常接近完成這件事,但有一件小事是錯誤的,我無法確定它是什么。
任何幫助/提示將不勝感激。
該算法工作正常,您只需要將頭指針更改為正確的值。 當你反轉一個鏈表時,頭部指向最后一個節點,同樣在這種情況下頭部也應該指向最后一個節點。
public void reverseCDLL() {
if (head != null) {
Node current = head, next, temp;
do{
next = current.getNextNode();
temp = current.getPrevNode();
current.setPrevNode(current.getNextNode());
current.setNextNode(temp);
current = next;
}while(current != head);
head = head.getNextNode();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.