面试题24:反转链表 题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点
package jianZhiOffer;
public class Demo24 {
private static int ReverseList1(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.val;
}
public static int ReverseList2(ListNode node) {
ListNode pre = null;
if(node.next == null) {
node.next = pre;
return node.val;
}else {
int re = ReverseList2(node.next);
node.next = pre;
return re;
}
}
public static void main(String[] args) {
int[] num = {1,2,3,4,5,6};
ListNode head = new ListNode();
ListNode pre = head;
for(int i=0;i<num.length;i++) {
ListNode node = new ListNode(num[i]);
pre.next = node;
pre = node;
}
System.out.println(ReverseList1(head));
}
}