反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
输入参数:public ListNode reverseList(ListNode head)
解决步骤:
1.定义pre为前一个节点(初始值为head),定义cur为当前节点(初始值为head.next)。
2.用一个while循环,直到cur为空,用一个tmp临时变量来保存cur.next(避免链表断裂)。
3.将cur的指针域指向pre,将cur节点变为pre节点,将cur.next节点变为cur节点
4.循环结束后,将head的指针域指向null
代码:
public ListNode reverseList(ListNode head) {
if(head ==null) return null;
ListNode pre = head;
ListNode cur = head.next;
ListNode tmp;
while(cur!=null){
tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
head.next = null;
return pre;
}