簡體   English   中英

反轉循環雙向鏈表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM