赞
踩
将单链表的连接顺序反转过来
输入:1->2->3->4->5
输出:5->4->3->2->1
迭代,即遍历整个链表的节点,在每个节点上进行操作。每个节点之间都需要进行三个步骤:1.保存下一个节点(因为要断开本节点与下个节点的连接,然后去连接上一个节点),2.保存上一个节点,3.本节点指向上一个节点。
代码如下:
/** * 迭代反转链表 * @param head * @return */ public static ListNode iterate(ListNode head){ ListNode node = head; ListNode prev = null,next; while (node!=null){ next = node.next; node.next = prev; prev = node; node = next; } return prev; }
/**
* 递归反转链表
* @param head
* @return
*/
public static ListNode recursion(ListNode head){
if (head == null || head.next == null){
return head;
}
ListNode newHead = recursion(head.next);
head.next.next = head;
head.next = null;
return newHead;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。