zoukankan      html  css  js  c++  java
  • 泛型自定义栈

    前言

    栈(Stack)是一种用于存储数据的简单数据结构,是一种特殊的线性表,是一种后入先出的数据结构,其插入和删除操作只允许在线性表的一端进行,一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底(Bottom),同时把插入元素的操作称为入栈(Push),删除元素的操作称为出栈(Pop),若栈中没有任何元素,则称为空栈。


    具体实现

    • 接口
    public interface Stack<T> {
    
        /**
         * 添加元素
         * @param t
         */
        void push (T t);
    
        /**
         * 元素出栈
         * @return
         */
        T pop();
    
        /**
         * 查看栈顶元素
         * @return
         */
        T peek();
    
        /**
         * 获取大小
         * @return
         */
        int getSize();
    
        /**
         * 是否为空
         * @return
         */
        boolean isEmpty();
    
    }
    
    • 实现类
    public class ArrayStack<T> implements Stack<T> {
    
        Array<T> data;
    
        public ArrayStack (int capacity) {
            data = new Array<>(capacity);
        }
    
        public ArrayStack () {
            data = new Array<>();
        }
    
        /**
         * 获取容量
         * @return
         */
        public int getCapacity () {
            return data.getCapacity();
        }
    
        /**
         * 添加元素
         * @param t
         */
        @Override
        public void push(T t) {
            data.addLast(t);
        }
    
        /**
         * 元素出栈
         * @return
         */
        @Override
        public T pop() {
            return data.removeLast();
        }
    
        /**
         * 获取栈顶元素
         * @return
         */
        @Override
        public T peek() {
            return data.getLast();
        }
    
        /**
         * 获取大小
         * @return
         */
        @Override
        public int getSize() {
            return data.getSize();
        }
    
        /**
         * 是否为空
         * @return
         */
        @Override
        public boolean isEmpty() {
            return data.isEmpty();
        }
    
        /**
         * 重写toString方法
         * @return
         */
        @Override
        public String toString () {
            StringBuilder resp = new StringBuilder();
            resp.append("Stack: [");
            for (int i = 0; i < data.getSize(); i ++) {
                resp.append(data.get(i));
    
                if (i != data.getSize() - 1) {
                    resp.append(",");
                }
    
            }
    
            resp.append("] top");
    
            return resp.toString();
        }
    
        public static void main(String[] args) {
            ArrayStack<Integer> arrayStack = new ArrayStack<>();
            for (int i = 0; i < 5; i++) {
                arrayStack.push(i);
                System.out.println(arrayStack);
            }
    
            arrayStack.pop();
            System.out.println(arrayStack);
        }
    
    }
    
    - End -
    一个努力中的公众号
    关注一下吧
    以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
    作者:95.8℃
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    简单工厂笔记
    P3369 【模板】普通平衡树 Treap树堆学习笔记
    tp5阿里云短信验证码
    centos 安装php
    tp6.0.2开启多应用模式
    linux navicat最新版过期
    git commit之后 取消commit
    服务器重置之后ssh root@报错
    git pull push 每次都需要输入账号和密码
    跨域问题 php
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/14874688.html
Copyright © 2011-2022 走看看