*
* 1->2->3
* a-->b--c-->d? d-->c--b-->a
*/
這個題的解題思路應該是設立一個prevNode, 一個curNode.?
while(cur != null)
{
...
}
讓curNode一個一個的移動续徽,每次移動調(diào)整一下prevNode指向上一次的curNode澳盐,這樣下一層curNode就可以指向prev募舟。 唯一要注意的兩個問題就是While loop的condition媒吗, 什么時候應該停止.
可以通過嘗試的辦法梭伐,假設cur == null的話會發(fā)生什么情況暇昂? cur沒法進入loop搭盾,也沒辦法設置prev祷蝌。那么return回去的只會是一個null的cur次伶。所以cur是不能等于Null的痴昧。
還有一個問題,因為循環(huán)的時候每一輪cur = nextNode. 萬一nextNode是一個null冠王,cur 等于了nextNode 因此沒辦法pass while的condition赶撰。因此我們在while內(nèi)部要做一個if的判斷 nextNode的值。
這個題還是比較考驗題感的,做題的時候一下子推理出這么多東西還是有一點點難度豪娜。
對于這種題餐胀,可以想象list為電影院的一排座位。reverse list就好像讓本身從左往右的隊伍變成從右往左瘤载。 隊伍的頭是隊長否灾。 cur Node可以當做隊伍的隊長。
在process的過程中鸣奔,隊長的職位從最左端一直往右移動墨技。 condition的判斷很明顯,隊長必須是有人當挎狸,所以cur != null. 在cur 等于最后一個非NUll值的時候就該return了扣汪。
怎么知道是最后一個非Null的人?當NextNode為空的時候锨匆,隊長就是電影院一排最后一個了崭别。
這道題是很有戰(zhàn)略意義的。 可以當做一個拼圖恐锣,很多的list題會需要reverse 一個list的某個部分茅主。比如reverse second half linkedlist. 如果這個拼圖會熟練,做升級版的題的時候想的東西就不用太多土榴。