輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。
分析://1->2->3->4->5
//1<-2<-3<-4<-5
而且這個題難在沒有頭節點
//第一種方法是:非遞迴方法
/*struct listnode
};*/
class solution
return preversehead;
}} //第二種方法是:遞迴方法 /*
struct listnode
};*/
class solution
};
遞迴的方法其實是非常巧的,它利用遞迴走到鍊錶的末端,然後再更新每乙個node的next 值 ,實現鍊錶的反轉。而newhead 的值沒有發生改變,為該鍊錶的最後乙個結點,所以,反轉後,我們可以得到新鍊錶的head。
注意關於鍊錶問題的常見注意點的思考:
1、如果輸入的頭結點是 null,或者整個鍊錶只有乙個結點的時候
2、鍊錶斷裂的考慮
還有頭插法,每次從原來的鍊錶的頭拆下乙個結點,插入新鍊錶的頭。
/*
struct listnode
};*/
class solution
return h;
}};
15 反轉鍊錶(劍指offer)
15.反轉鍊錶 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。1.思路 這裡可以採用輔助指標的方式來進行歷求解,以下面的鍊錶為例具體分析如下 1 首先我們需要定義三個指標,分別指向當前結點 cur 前一結點 prev 後一節點 next 2 然後開始從前往後進行遍歷,在遍歷的過程中對指標進行反轉 第...
劍指offer 15 反轉鍊錶
輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。反轉鍊錶只需改變鏈結方向,改變方向時需要將原本指向後乙個結點的鏈結方向指向前乙個結點,因此需要記錄下三個結點。include using namespace std struct listnode class solution listnode fron...
劍指Offer 15 反轉鍊錶
輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。coding utf 8 class listnode def init self,x self.val x self.next none class solution 返回listnode def reverselist self,phead writ...