面試題五 從頭到尾打印單鏈表

題目:

輸入一個單鏈表,從尾部到頭部打印單鏈表的每個值

輸入:

由於我的單鏈表是使用頭插法的,所以當你輸入4321的時候,節點從頭部到尾部的順序是1234,所以,當我們輸入4321的時候,只要保證輸入和輸出一樣就完全正確。

輸出:

跟輸入一樣。。

實現思路:

在不修改數據結構的前提下,有兩種方式,一種是利用棧,因爲棧後進先出的緣故,我們可以把單鏈表掃一遍,然後存入棧後依次出棧,第二個可以用遞歸,遞歸的本質也是棧。

Java代碼實現:

public class Linked {
		
		public  Node header;
		
		
		public  void insertFirst(Node newNode){
		
			if(header==null){
				header=newNode;
			}else{
				newNode.next=header;
				header=newNode;
			}
			
		}
		
		
		
		
		//利用遞歸
		public  void display(Node newNode){
			if(newNode!=null){
			
			if(newNode.next!=null){
				display(newNode.next);
				
				

			}
			}
			
			newNode.displayLink();
		}
		
		//利用鏈表
		public static void PrintListRevesingly_Iteratively(Node header){
			Stack<Node> nodes=new Stack<Node>();
			Node newNode=header;
			while(newNode!=null){
				nodes.push(newNode);
				newNode=newNode.next;
			}
			
			while(!nodes.empty()){
				newNode=nodes.pop();
				System.out.print(newNode.data+" ");
			}
			
			
		}
		public static void main(String[] args) {
			Linked linked=new Linked();
			linked.insertFirst(1);
			linked.insertFirst(2);
			linked.insertFirst(3);
			linked.insertFirst(4);
			linked.display(linked.header);
			System.out.println("利用棧");
			linked.PrintListRevesingly_Iteratively(linked.header);
		}
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章