剑指offer_链表逆置

/*
反转链表并输出反转后链表的头结点
与从尾到头打印链表还不一样,打印不需要改变链表结构
初步思路:重建链表,与原来的反向,可行吗?将节点从头到尾记录在数组或栈中,从尾到头连接起来,但是这样就成了双向链表

剑指offer:在原链表上进行指针操作即可
*/

class ReverseList 
{	
	public static void reverseList(ListNode head)
	{
		ListNode reverseHead=null;//反转后的头结点
		ListNode node=head;//当前要反转的结点
		ListNode prev=null;//当前结点的前驱

		while (node!=null)
		{
			ListNode next=node.next;//记录后继结点,便于循环

			//若当前结点是尾结点,则将其作为reverseHead返回
			if (next==null)
			{
				reverseHead=node;
			}

			//反转
			node.next=prev;

			//后移,以便进行下一个节点的反转
			prev=node;
			node=next;
		}

		return reverseHead;
		
	}

	public static void main(String[] args) 
	{
		System.out.println("Hello World!");
	}
}

点赞