从尾到头打印链表,由于单链表只有一个指针,而且是单向的访问。所以要用栈或者递归来实现从尾到头打印单链表。
用栈和递归实现如下所示:
package cn.edu.nwu.structs.linklist;
import java.util.ArrayList;
import java.util.Stack;
/**
* @author jcm
*
*时间 2016年8月22日
*/
public class PrintListFromTailToHead {
/**
* @author jcm
* 从尾到头打印单链表
* @param head 头指针
*/
public static void printListFromTailToHead(Node head){
if(head == null){
return ;
}
Node currentNode = head;
//创建一个栈
Stack<Node> stack = new Stack<Node>();
while(currentNode != null){
//结点进栈
stack.push(currentNode);
currentNode = currentNode.next;
}
while(!stack.isEmpty()){
//结点出栈
System.out.print(stack.pop().data+" ");
}
}
/**
* 递归实现单链表打印
* @param head
* @return
*/
public static ArrayList<Integer> printListFromTailToHead2(Node head) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(head != null){
if(head.next != null){
list = printListFromTailToHead2(head.next);
list.add((int)head.data);
}
}
return list;
}
}