栈(Stack)

      栈是一种基于先进后处的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表,按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读取数据时从栈顶开始弹出数据。

1. 栈的API设计

2. 栈的代码实现

public class Stack<T>{
    private Node head;
    private int N;
    private class Node{
        public T item;
        public Node next;
        public Node(T item, Node next) {
            this.item = item;
            this.next = next;
        }
    }
    public Stack() {
        this.head = new Node(null,null);
        this.N = 0;
    }
    //判断栈中元素是否为空
    public boolean isEmpty(){
        return N==0;
    }
    //获取栈中元素的个数
    public int size(){
        return N;
    }
    //把元素压入栈
    public void push(T t){
        //找到首结点指向的第一个节点
        Node oldFirst = head.next;
        //创建新结点
        Node newNode = new Node(t, null);
        //让首结点指向新结点
        head.next = newNode;
        //让新结点指向原来的首结点的第一个节点
        newNode.next = oldFirst;
        N++;
    }
    //弹栈
    public T pop(){
        //找到首结点指向的第一个结点
        Node oldFirst = head.next;
        //让首结点指向下一个结点的下一个结点
        if (oldFirst == null){
            return null;
        }
        head.next = oldFirst.next;
        N--;
        return null;
    }
}
posted @ 2020-07-22 23:12  zuzuzu_code  阅读(165)  评论(0)    收藏  举报