1:棧和隊列的轉換:
(1):兩個棧是實現一個隊列:
思路:
package lls.jianzhioffer_three;
import java.util.Stack;
/**
* 棧和隊列的相互轉換
* @author teacher
*
*/
public class ConvertStackToQuen {
ConvertStackToQuen(){
};
Stack s_push=new Stack();
Stack s_out=new Stack();
public void push(Object o){
s_push.push(o);
}
public Object getEle(){
if(! s_out.empty()){
return s_out.pop();
}else{
while(!s_push.empty()){
s_out.push(s_push.pop());
}
if(! s_out.empty()){
return s_out.pop();
}else{
return null;
}
}
}
public boolean empty(){
if(s_out.empty() & s_push.empty()){
return true;
}else{
return false;
}
}
}
(2):
package lls.jianzhioffer_three;
import java.util.LinkedList;
import java.util.Queue;
/**
* 兩個隊列實現
* @author teacher
*
*/
public class ConvertQuenToStack {
Queue q1=new LinkedList();
Queue q2=new LinkedList();
public void push(Object o){
if(q1.size()!=0 || (q1.size()==0& q2.size()==0)){
q1.add(o);
}else{
q2.add(o);
}
}
public Object getE(){
if(q1.size()!=0){
while(q1.size()!=1){
q2.add(q1.peek());
q1.remove();
}
Object re= q1.peek();
q1.remove();
return re;
}else{
while(q2.size()!=1){
q1.add(q2.peek());
q2.remove();
}
Object re= q2.peek();
q2.remove();
return re;
}
}
public boolean empty(){
if(q1.size()==0 & q2.size()==0){
return true;
}else{
return false;
}
}
}