劍指offer之從尾到頭打印鏈表

在這裏插入圖片描述

	/**
	 * 面試題5:從尾到頭打印鏈表
	 * 思路:
	 * 	1:後進先出,棧
	 * 	2:遞歸,每次打印下一節點,在打印當前節點
	 * 	3:頭插法
	 */
	public class ListNode{
		public int number;
		ListNode next;
	}
	/**
	 * 棧實現
	 * @param node
	 */
	public void PrintListReversingly_Iteratively(ListNode node){
		if(node==null){
			return;
		}
		ListNode tmp = node;
		Stack<ListNode> stack = new Stack<ListNode>();
		while(tmp!=null){
			stack.push(tmp);
			tmp = tmp.next;
		}
		while(!stack.isEmpty()){
			System.out.println(stack.pop().number);
		}
	}
	/**
	 * 遞歸實現
	 */
	public void PrintListReversinglyRecursively(ListNode node){
		if(node == null){
			return;
		}
		PrintListReversinglyRecursively(node.next);
		System.out.println(node.number);
	}
	/**
	 * 頭插法
	 */
	public void PrintListReversinglyHeadly(ListNode node){
		if(node == null){
			return;
		}
		ListNode p = node.next;
		while(p!=null){
			ListNode tmp = p.next;
			p.next = node;
			node = p;
			p = tmp;
		}
		while(node!=null){
			System.out.println(node.number);
			node = node.next;
		}
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章