2012-10-19 57 views
0

說我有下面的代碼:如何將最近彈出的元素從一個堆棧推送到另一個堆棧?

public Stack s1; 
public Stack s2; 

//I want to take the top element from s1 and push it onto s2 

s1.pop(); 

//Gather recently popped element and assign it a name. 

s2.push(recentlyPopped); 

上我將如何做到這一點任何想法?謝謝。

+0

注意['Deque'](http://docs.oracle.com/javase /7/docs/api/java/util/Deque.html)類似'LinkedList'的實現優於Java的'Stack',它擴展了同步的'Vector'。 –

+0

@PaulBellora OP不顯示爲什麼使用'Stack'。也許這是爲了河內塔的實施或其他功課。 –

+0

@LuiggiMendoza這只是一個供參考。 –

回答

3

的基本形式是

s2.push(s1.pop()); 

如果需要從第1棧處理數據befor /在第二疊推後,您可以使用

YourClass yourClass = s1.pop(); 
//process yourClass variable... 
s2.push(yourClass); 
//more process to yourClass variable... 

記住要檢查在使用pop方法之前,s1不是空的,否則可能會發生EmptyStackException。

if (!s1.isEmpty()) { 
    s2.push(s1.pop()); 
} 
+0

+1很好的解釋。 –

0

除非你有哪些是沒有問題的規定的其他限制。一種方法是:

YourElementType elem = s1.pop(); 

s2.push(elem); 
1

嘗試

String[] inputs = { "A", "B", "C", "D", "E" }; 
Stack<String> stack1 = new Stack<String>(); 
Stack<String> stack2 = new Stack<String>(); 
for (String input : inputs) { 
    stack1.push(input); 
} 
System.out.println("stack1: " + stack1); 
System.out.println("stack2: " + stack2); 
stack2.push(stack1.pop()); 
System.out.println("stack1: " + stack1); 
System.out.println("stack2: " + stack2); 

輸出將是:

stack1: [A, B, C, D, E] 
stack2: [] 
stack1: [A, B, C, D] 
stack2: [E] 
相關問題