zoukankan      html  css  js  c++  java
  • 手写数据结构-基于链表的栈

    1.栈基础

    结构:先进后出

    2.手写基于链表的栈(和基于动态数组的栈对比)
    package com.tc.javabase.datastructure.linklist.stack;
    
    import com.tc.javabase.datastructure.linklist.LinkedList;
    import com.tc.javabase.datastructure.stack.Stack;
    
    /**
     * @Classname LinkedListStack
     * @Description 基于链表实现栈
     *
     * 结构特性:先进后出
     *
     * 时间复杂度分析:
     *      入栈:         O(1)
     *      出栈:         O(1)
     *      查询栈顶元素:  O(1)
     *
     * 综上所述: 基于链表的操作时间复杂度都是O(1)
     *
     * @Date 2020/7/18 17:32
     * @Created by zhangtianci
     */
    public class LinkedListStack<E> implements Stack<E> {
        private LinkedList<E> list;
        private int size;
    
        @Override
        public int getSize() {
            return size;
        }
    
        @Override
        public boolean isEmpty() {
            return size == 0 ? true : false;
        }
    
        /**
         * 入栈
         * 时间复杂度:O(1)
         * @param e
         */
        @Override
        public void push(E e) {
             list.addFirst(e);
        }
    
        /**
         * 出栈
         * 时间复杂度:O(1)
         * @return
         */
        @Override
        public E pop() {
            return list.removeFirst();
        }
    
        /**
         * 瞧一眼栈顶元素
         *
         * 时间复杂度:O(1)
         * @return
         */
        @Override
        public E peek() {
            return list.getFirst();
        }
    
        @Override
        public String toString(){
            StringBuilder res = new StringBuilder();
            res.append("Stack: top ");
            res.append(list);
            return res.toString();
        }
    }
    
  • 相关阅读:
    写在前面
    "路径的形式不合法"解决方案
    ExtJs学习笔记
    javascript实现ListBox左右全选、单选、多选、全请
    面向对象和面向过程的区别
    Div+CSS布局 网站设计的优点!
    libeio异步I/O库初窥
    等待进程结束
    判断Javascript变量是否为空
    后台创建进程和杀掉进程
  • 原文地址:https://www.cnblogs.com/tc971121/p/13443673.html
Copyright © 2011-2022 走看看