本文共 719 字,大约阅读时间需要 2 分钟。
思路:不断从原来链表中取出结点,头插到一个新的链表上
分析: 1)新定义一个新链表,而且是空链表 Node result = null;//result新链表的第一个结点的引用 2)遍历原来的链表 Node cur = head; while(cur!=null){ cur=cur.next } 3)把每个遍历的结点(cur),头插到新链表(result)中 cur.next=result; result=cur;class Solution { public ListNode reverseList(ListNode head) { ListNode result = null; //新链表result ListNode cur = head; while (cur != null) { ListNode next = cur.next; cur.next = result; //头插 result = cur; cur = next; } return result; }}
代码中之所以没有直接使用cur=cur.next;而是使用Node next=cur.next; cur=next;是因为如果直接使用cur=cur.next,此时cur指向新链表的结点上,导致cur.next已经不再指向原链表的结点了,所以需要先保存cur.next再使cur=next。
转载地址:http://vrjwi.baihongyu.com/