0
点赞
收藏
分享

微信扫一扫

1.栈和队列

椰果玩安卓 2022-01-23 阅读 40

目录

线性表

非线性结构

栈(stack)

入栈(push)

出栈(pop)

返回栈顶元素(peek)

队列(Queue)

栈和队列都是线性表,都是基于List

线性表

数组,链表,字符串,栈,队列

元素按照一条直线排列

非线性结构

树,图

栈(stack)

     一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。后进先出的线性表,入栈(push)、出栈(pop)、返回栈顶元素(peek)

入栈(push)

    /**
     *把val入栈
     * @param val
     */
    public  void push(E val){
        data.add(val);//默认是尾插
        size++;
    }

出栈(pop)

    /**
     *弹出栈顶元素
     * @return
     */
    public E pop() {
        if (isEmpty()) {
            // 栈为空,没有栈顶元素
            throw new NoSuchElementException("栈为空!没有栈顶元素!");
        }
        // 删除栈顶元素
        E val = data.remove(size - 1);
        size --;
        return val;
        // 等同于 return data.remove(--size);
    }

返回栈顶元素(peek)

    /**
     *返回栈顶元素但不出栈
     * @return
     */
    public E peek() {
        if (isEmpty()) {
            throw new NoSuchElementException("栈为空!不能返回栈顶元素!");
        }
        return data.get(size - 1);
    }
   public boolean isEmpty(){
        return size == 0;
    }

队列(Queue)

     队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)

入队列:进行插入操作的一端称为 队尾( Tail/Rear

出队列:进行删除操作的一端称为 队头 Head/Front)

举报

相关推荐

0 条评论