02.手写栈源码-stack

127 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

  • 📝 个人主页:程序员阿红🔥
  • 🎉 支持我:点赞👍收藏⭐️留言📝
  • 🍓欢迎大家关注哦,互相学习🍓
  • 🍋欢迎大家访问哦,互相学习🍋
  • 🍑欢迎大家收藏哦,互相学习🍑

02.栈

概念

  • 栈(stack)是一种线性数据结构,栈中的元素只能先入后出(First In Last Out,简称FILO)。
  • 最早进入的元素存放的位置叫作栈底(bottom),最后进入的元素存放的位置叫作栈顶 (top)。
  • 后进先出原则,Last In First Out , LIFO

在这里插入图片描述

操作

  • 入栈(压栈) 入栈操作(push)就是把新元素放入栈中,只允许从栈顶一侧放入元素,新元素的位置将会成为新的栈顶。
  • 出栈(弹栈) 出栈操作(pop)就是把元素从栈中弹出,只有栈顶元素才允许出栈,出栈元素后一个元素将会成为新的栈顶。

在这里插入图片描述

手写stack

package dataStruct.stack;

/**
 * 用链表实现stack
 */
public class ArraryStack<E> {

    int size = 0;
    Node<E> head;
        public static  class Node<E>{
            E element;
            Node<E> next;
            public Node(E element , Node<E> next){
                this.element = element;
                this.next = next;
            }
        }

    /**
     * 入栈操作
     * @param element
     */
    public void push(E element){
        Node node =  new Node<E>(element , head);
        head = node;
        size++;
    }

    /**
     * 出栈操作
     * @return
     */
    public Node<E> pop(){
        if (head == null ){
            return head;
        }
        Node node = head;
        head = head.next;
        size--;
        return node;
    }

    /**
     * 查看栈顶元素
     * @return
     */
    public Node<E> peek(){
        return head;
    }

    /**
     * 查看栈是否为空
     * @return
     */
    public boolean isEmpty(){
        return size == 0;
    }

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
        ArraryStack stack = new ArraryStack();
        System.out.println("栈是否为空:"+stack.isEmpty());
        stack.push("001");
        stack.push("002");
        stack.push("003");
        stack.push("004");
        stack.push("005");
        System.out.println("出栈:"+stack.pop().element);  //005
        System.out.println("栈是否为空:"+stack.isEmpty());
        stack.push("006");//(栈顶)006,004,003,002,001(栈底)
        //查看栈顶元素
        System.out.println("栈顶元素:"+stack.peek().element);   //006
        System.out.println("出栈:"+stack.pop().element);//006
    }
}

测试结果

在这里插入图片描述 💖💖💖 完结撒花

💖💖💖 路漫漫其修远兮,吾将上下而求索

💖💖💖 写作不易,如果您觉得写的不错,欢迎给博主点赞、收藏、评论、收藏来一波~让博主更有动力吧