从尾到头打印链表

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;
    }

}

 

以上是关于从尾到头打印链表的主要内容,如果未能解决你的问题,请参考以下文章

从尾到头打印链表-剑指Offer

从尾到头打印链表

《剑指Offer—— 06. 从尾到头打印链表》代码

从尾到头打印链表

从尾到头打印链表

[编程题] 从尾到头打印链表