本程序是利用两个单向队列实现栈(实际中是使用双向队列,但是只用了其单向性质)
import java.util.*;
class StackbyQueue<T>
{
T x=null;
private LinkedList<T> list1;
private LinkedList<T> list2;
private int size;
public StackbyQueue()
{
size =0;
list1 = new LinkedList<T>();
list2 = new LinkedList<T>();
}
public void push(T x)
{
list1.add(x);
size++;
}
public T pop()
{
while(list1.size()>1)
{
list2.add(list1.poll());
}
x = list1.poll();
size--;
while(!list2.isEmpty())
{
list1.add(list2.poll());
}
return x;
}
public String toString()
{
return list1.toString();
}
}
public class scanner{
public static void main(String args[]) {
StackbyQueue<String> stack = new StackbyQueue<String>();
stack.push("1");
stack.push("2");
stack.push("3");
System.out.println(stack.toString());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.toString());
stack.push("4");
System.out.println(stack.toString());
}
}
结果如下:
[1, 2, 3]
3
2
[1]
[1, 4]
4