1. 程式人生 > >輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭

輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭

因為這道題花了自己的一些時間,所以還是想寫一篇部落格紀念一下。

程式碼如下

package dai.List;
/**
 *  輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。
 * @author 18491
 *
 */
public class ReverseList02 {
	public ListNode02 reverseList(ListNode02 head) {
		if(head == null) {
			return null;
		}
		//最終需要實現的是 將列表1 -> 2 -> 3 -> 4 轉換為1 <- 2 <-3 <- 4
		//為了能夠快速反轉列表,需要定義節點tem來儲存當前節點的next值,定義pre來儲存節點的上一個值
		ListNode02 tem = null;
		ListNode02 pre = null;
		while(head != null) {
			//儲存當前節點的下一個節點,防止出現斷列
			tem = head.next;
			//儲存好之後,則將當前節點指向pre
			//例如,當前是第一次迴圈,則1 -> 2 轉變為  null <- 1;方向發生改變,程式碼實現如下
			head.next = pre;
			//記住當前每個節點的狀態,我們將節點都向後移一步
			pre = head;
			head = tem;
		}
		return pre;
	}
}
class ListNode02 {
	int val;
	ListNode02 next;
	public ListNode02(int val){
		this.val = val;
	}
}