从尾到头打印链表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从尾到头打印链表相关的知识,希望对你有一定的参考价值。
本题目有两种实现思路,一种采用栈另外一种采用递归的方式进行实现。此题其实考察的目的在于java中链表的实现,此外此题还可以扩展到链表的插入删除,指定位置的插入以及删除,这个点以后再进行补充
package jianzhi_offer; import java.util.Stack; public class PrintListReversingly { public static void PrintListReversingly(ListNode phead){ //此时是按照栈的方式进行打印的,此时熟悉了链表的写法还有链表的构建,另外还可以采用递归的方式进行打印,方法见下面 Stack<ListNode> stack = new Stack(); while(phead!=null){ stack.push(phead); phead=phead.next; } while(!stack.empty()){ System.out.println(stack.pop().value); } } public static void PrintListReversingly2(ListNode phead){ //此时是按照栈的方式进行打印的,此时熟悉了链表的写法还有链表的构建,另外还可以采用递归的方式进行打印,方法见下面 if(phead!=null){ if(phead.next!=null){ PrintListReversingly2(phead.next); System.out.println(phead.value); }else{ System.out.println(phead.value); } } } public static void main(String []args){ ListNode node1=new ListNode(4); ListNode node2=new ListNode(3); ListNode node3=new ListNode(5); node1.next=node2; node2.next=node3; node3.next=null; PrintListReversingly(node1); PrintListReversingly2(node1); } }
package jianzhi_offer; public class ListNode<T> { T value; ListNode next; public ListNode(){ this.value=value; } public ListNode(T value){ this.value=value; } public ListNode(T value, ListNode nextNode) { this.value = value; this.next = nextNode; } public T getData() { return value; } public ListNode getNext() { return next; } public void setData(T data) { this.value = data; } public void setNext(ListNode next) { this.next = next; } }
以上是关于从尾到头打印链表的主要内容,如果未能解决你的问题,请参考以下文章