实现栈

栈的特点是先进后出(FILO),我们之前实现了数组,具体在

https://www.cnblogs.com/skychmz/p/11968449.html

现在我们可以利用这个数组类来实现栈。

首先我们新建一个栈的原型,具有基本的方法和变量

public class ArrayStack<E> {

    private Array<E> array;

    public ArrayStack(int capacity){
        array = new Array<>(capacity);
    }

    public ArrayStack(){
        array = new Array<>();
    }

    public int getSize(){
        return array.getSize();
    }

    public boolean isEmpty(){
        return array.isEmpty();
    }

    public int getCapacity(){
        return array.getCapacity();
    }

   
}

然后我们实现操作栈元素的方法

  由于栈先进后出的特性,我们只能往栈顶(数组尾部)加入元素,也就是push方法,通过数组的addLast方法实现

public void push(E e){
        array.addLast(e);
    }

  取元素也一样,只能从栈顶(数组尾部)取出元素,也就是pop方法,通过数组的removeLast方法实现

public E pop(){
        return array.removeLast();
    }

  最后实现查看栈顶元素的方法

public E peek(){
        return array.get(getSize() - 1);
    }

 

用链表实现栈

  在https://www.cnblogs.com/skychmz/p/11979346.html中我们实现了链表结构,我们可以用链表来实现栈,只需要简单的复用即可实现

public class LinkedListStack<E>{

    private LinkedList<E> list;

    public LinkedListStack(){
        list = new LinkedList<>();
    }

 
    public int getSize(){
        return list.getSize();
    }


    public boolean isEmpty(){
        return list.isEmpty();
    }


    public void push(E e){
        list.addFirst(e);
    }


    public E pop(){
        return list.removeFirst();
    }


    public E peek(){
        return list.getFirst();
    }


  
}

 

posted @ 2019-12-02 18:19  skychmz  阅读(133)  评论(0编辑  收藏  举报