栈和队列

 

1.用链表实现栈

class Node<E>{
    Node<E>next=null;
    E data;
    public Node(E data){
        this.data = data;
    }
}    
    
public class MystackList<E>{
    Node<E>top=null;
    public boolean Empty(){
        return top==null;
    }
    public void push(E data){
        Node<E>newNode=new Node<E>(data);
        newNode.next = top;
        top = newNode;
    }
    public E pop(){
        if(this.Empty()){
            return null;
        }
        E data = top.data;
        top = top.next;
        return data;
    }
    public E peek(){
        if(this.Empty()){
            return null;
        }
        return top.data;
    }
    
    public static void main(String[] args){
        MystackList<Integer>s=new MystackList<Integer>();
        s.push(1);
        s.push(2);
        System.out.println("栈顶元素为:"+s.pop());
        System.out.println("栈顶元素为:"+s.pop());
    }
}

 2.用栈实现队列

public class stacktoqueue<E> {
    private Stack<E>s1=new Stack<E>();
    private Stack<E>s2=new Stack<E>();
    public synchronized void put(E e){
        s1.push(e);
    }
    public synchronized E pop(){
        if(s2.isEmpty()){
            while(!s1.isEmpty()){
                s2.push(s1.pop());
            }            
        }
        return s2.pop();
    }
    
    public synchronized Boolean empty(){
        return s1.isEmpty()&&s2.isEmpty();
    }
    
    public static void main(String[] args){
        stacktoqueue<Integer>s=new stacktoqueue<Integer>();
        s.put(1);
        s.put(2);
        s.put(3);
        System.out.println("队列首元素为:"+s.pop());
        System.out.println("队列首元素为:"+s.pop());
    }
}

 

posted @ 2019-07-29 11:08  Jocelyn-D  阅读(96)  评论(0编辑  收藏  举报