目錄
題目:
定義一個函數,輸入一個鏈表的頭節點,反轉該鏈表並輸出反轉後鏈表的頭節點。鏈表節點定義如下: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;
}
}