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