簡體   English   中英

為什么我的反向 LinkedList 方法不能多次工作?

[英]Why wont my reverse LinkedList method not work more than once?

我有以下方法:

    public static IntNode reverse (IntNode head) {
            IntNode prev = null;
            IntNode curr = head;
            IntNode next = null;
            while(curr!=null) {
                next = curr.link;
                curr.link = prev;
                prev = curr;
                curr = next;
            }
            return prev;
        }

這工作得很好,但是當運行兩次時,它只返回鏈表中的第一個(技術上最后一個)節點,僅此而已,為什么會這樣,你能幫我解決這個問題嗎? 謝謝。

例如:反轉前:10 25 5 14 2 反轉后:2 14 5 25 10 再次輸入反轉后:10

我認為方法是正確的。只要確保每次調用 reverse() 方法時,將 reverse() 方法的結果分配給它的頭部。

head = reverse(head);//correct coz head changes after reversal

當您無法將 reverse() 方法的結果分配給 head 時。

reverse(head)//Wrong coz head won't change after reversal

頭部不會更新,它只會指向鏈表的尾部。希望這會有所幫助。

你的整個清單都是從頭開始的。 切換節點后, head 現在指向最后一個節點(即其 .link 為空)。

您需要將 head 重置為第一個節點才能訪問列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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