反转链表(剑指offer)

反转链表

头插法

思路:

  1. 建立一个头结点newList
  2. 临时节点next保存原头节点head的下一个节点(保存其位置,为了使原头结点指向newList的第一个节点,并且不丢失原头结点head的下一个节点位置的信息)
  3. 断开newList与其下一个节点连接,中间插入原头结点(如此往复,可使新链表为原链表的倒序排列)
  4. 将next保存的信息赋值到head中,以便下次循环使用
  5. 当head为null,原链表遍历结束,退出

图解:

反转链表(剑指offer)

代码实现

public ListNode ReverseList(ListNode head){
    ListNode newList = new ListNode(-1);
    ListNode next;
    
    while(head!=null){
        next = head.next;
        head.next = newList.next;
        newList.next = head;
        head = next;
    }
    return  newList.next;
}
上一篇:iTunes Converter for mac(音频格式转换工具)


下一篇:使用Github的PageHelper对list进行手动分页