摘要:?jiǎn)栴}描述輸入一個(gè)鏈表,反轉(zhuǎn)鏈表后,輸出新鏈表的表頭。通過循環(huán)遍歷當(dāng)前鏈表,在遍歷過程中反轉(zhuǎn)鏈表,當(dāng)前節(jié)點(diǎn)遍歷到最后為時(shí),循環(huán)停止,此時(shí)當(dāng)前節(jié)點(diǎn)為,所以它的前一個(gè)節(jié)點(diǎn)就是新鏈表的第一個(gè)節(jié)點(diǎn)。
1.問題描述
輸入一個(gè)鏈表,反轉(zhuǎn)鏈表后,輸出新鏈表的表頭。
2.思路首先要判斷給出的頭節(jié)點(diǎn)是否為空,如果為空直接返回,如果不為空才可以進(jìn)行反轉(zhuǎn)。
因?yàn)槊總€(gè)節(jié)點(diǎn)只有一個(gè)next指針記錄它的下一個(gè)節(jié)點(diǎn)的地址,所以應(yīng)該需要兩個(gè)變量分別記錄當(dāng)前節(jié)點(diǎn)左右兩邊的節(jié)點(diǎn),否則反轉(zhuǎn)鏈表之后就沒辦法連上后面的節(jié)點(diǎn)了。
通過循環(huán)遍歷當(dāng)前鏈表,在遍歷過程中反轉(zhuǎn)鏈表,當(dāng)前節(jié)點(diǎn)遍歷到最后為null時(shí),循環(huán)停止,此時(shí)當(dāng)前節(jié)點(diǎn)為null,所以它的前一個(gè)節(jié)點(diǎn)就是新鏈表的第一個(gè)節(jié)點(diǎn)。
注意:當(dāng)前節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)是從null開始的,當(dāng)前節(jié)點(diǎn)一定要放在中間,記錄它的前后各一個(gè)節(jié)點(diǎn),否則循環(huán)過程易錯(cuò)。
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode ReverseList(ListNode head) { if(head == null) return head; //head為null直接返回。 ListNode pNode = head; //表示當(dāng)前節(jié)點(diǎn) ListNode pre = null; //當(dāng)前節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn) ListNode next = null; //當(dāng)前節(jié)點(diǎn)的后一個(gè)節(jié)點(diǎn) while(pNode != null){ next = pNode.next; //記錄下當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn) pNode.next = pre; //反轉(zhuǎn)鏈表 pre = pNode; //讓prej和pNode都向后移動(dòng)一位,next不用變了,因?yàn)樯厦鏁?huì)自動(dòng)根據(jù)pNode獲取next節(jié)點(diǎn)。 pNode = next; } return pre; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75507.html
摘要:假設(shè)反轉(zhuǎn)對(duì)象節(jié)點(diǎn)為,反轉(zhuǎn)指向的結(jié)點(diǎn)為,反轉(zhuǎn)后指向的結(jié)點(diǎn)為首結(jié)點(diǎn)。當(dāng)然也可以根據(jù)棧先進(jìn)后出的特點(diǎn),使用棧反轉(zhuǎn)鏈表。 ??前面的話?? 大家好!博主開辟了一個(gè)新的專欄—...
摘要:導(dǎo)航小助手劍指從尾到頭打印鏈表題目詳情解題思路源代碼總結(jié)劍指從尾到頭打印鏈表題目詳情輸入一個(gè)鏈表的頭節(jié)點(diǎn),從尾到頭反過來返回每個(gè)節(jié)點(diǎn)的值用數(shù)組返回。時(shí)間復(fù)雜度方法先反轉(zhuǎn)鏈表并求長(zhǎng)度,在將反轉(zhuǎn)后的鏈表數(shù)據(jù)拷貝至數(shù)組中。 ...
摘要:有效三角形的個(gè)數(shù)雙指針最暴力的方法應(yīng)該是三重循環(huán)枚舉三個(gè)數(shù)字??偨Y(jié)本題和三數(shù)之和很像,都是三個(gè)數(shù)加和為某一個(gè)值。所以我們可以使用歸并排序來解決這個(gè)問題。注意因?yàn)闅w并排序需要遞歸,所以空間復(fù)雜度為 ...
摘要:?jiǎn)栴}描述輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。 1.問題描述 輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。 2.思路 方法1:非遞歸方法 根據(jù)題目這個(gè)很類似排序中的外排過程,兩個(gè)數(shù)組分別排好序,然后再把他們整體進(jìn)行排序.所以這道題思想很簡(jiǎn)單,就是用兩個(gè)變量分別遍歷兩個(gè)鏈表.比較遍歷到...
閱讀 1297·2021-11-23 09:51
閱讀 2693·2021-09-03 10:47
閱讀 2272·2019-08-30 15:53
閱讀 2458·2019-08-30 15:44
閱讀 1405·2019-08-30 15:44
閱讀 1228·2019-08-30 10:57
閱讀 1956·2019-08-29 12:25
閱讀 1119·2019-08-26 11:57