《劍指Offer》第二版之反轉鏈表(十一)

目錄


題目:
定義一個函數,輸入一個鏈表的頭節點,反轉該鏈表並輸出反轉後鏈表的頭節點。鏈表節點定義如下:
struct ListNode
{
	int value;
	ListNode next;
}

思路
我們需要定義3個指針,分別指向當前遍歷到的節點、它的前一個節點及後一個節點。
步驟:

代碼:
package test;

public class ReverseList {

	public static void main(String[] args) {
		ListNode ln1 = new ListNode();
		ListNode ln2 = new ListNode();
		ListNode ln3 = new ListNode();
		ln1.value = 1;
		ln1.next = ln2;
		ln2.value = 2;
		ln2.next = ln3;
		ln3.value = 3;
		ln3.next = null;
		
		System.out.println(reverseList(ln1).value);
	}
	
	public static ListNode reverseList (ListNode pHead) {
		ListNode pReversedHead = null;
		ListNode pNode = pHead;
		ListNode pPrev = null;
		while(pNode != null) {
			ListNode pNext = pNode.next;
			if(pNext == null)
				pReversedHead = pNode;
			pNode.next = pPrev;
			pPrev = pNode;
			pNode = pNext;
		}
		return pReversedHead;
	}
	
	static class ListNode {
		int value;
		ListNode next;
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章