Java 单向链表翻转

Posted 郭梧悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 单向链表翻转相关的知识,希望对你有一定的参考价值。

链表翻转的思路有很多,再此做个记录。
思路一:最简单的思路就是先遍历链表,逐一将链表里的节点放入到栈里面;然后在遍历栈,将栈里的元素在逐一出栈形成新的链表。主要是利用了栈的后进先出的特点。

思路二:
遍历链表,然后修改head.next的指向。每一次遍历都需要不断移动head指针 ,然后将新的head的next指向已经遍历过得节点就可以了:

	 /**
	  * 链表翻转
	  * @param node
	  */
	 public ListNode reverseListNode(ListNode node) 
		 //新链表的头部节点,刚开始肯定是null
		 ListNode newHead = null;
		 ListNode head=node;
         while (head != null) 
             //当前需要处理的链表
             ListNode oldHead= head;     
             //移动head,head.next指的是链表中未处理的部分
             head = head.next;
             //让链表的第一个元素指向已经翻转的链表
             oldHead.next = newHead;
             //将oldHead作为newhead的头部
             newHead= oldHead;
             
         
         //输出已完成翻转的链表
         return newHead;
	 

未完待续

以上是关于Java 单向链表翻转的主要内容,如果未能解决你的问题,请参考以下文章

单向链表的构建以及翻转算法_图文详解

单向链表翻转

翻转单向链表

翻转单向链表

剑指 Offer 06. 从尾到头打印链表难度:简单(链表翻转)

链表常见的题型(java实现)