翻转链表有很多方法:在翻转时1.采用头插法,2.尾插法,3.递归翻转法
翻转时头插法:
public ListNode reverseList(ListNode head) {
if (head.next == null || head == null) {
return head;
}
ListNode ret = null;// 结果链表头结点
ListNode cur = head;// 遍历
while (cur != null) {
if (ret == null) {
ListNode tmp = cur.next;// 原链表摘下来的节点
cur.next = null;
ret = cur;
cur = tmp;
} else {
ListNode tmp = cur.next;
cur.next = ret;
ret = cur;
cur = tmp;
}
}
return ret;
}