目录
题目:
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。链表节点定义如下: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;
}
}