zoukankan      html  css  js  c++  java
  • java数据机构之自定义栈

    一、栈的特点

      1、线性数据结构

      2、后进先出

    二、使用数组来实现栈

    //使用数组来实现栈
    public class MyArrayStack<E> {
        
        //保存数据
        private Object[] items;
        
        //栈的 容量
        private int capacity;
        
        //栈的数据个数
        private int size;
    
        public MyArrayStack(int capacity){
            this.capacity = capacity;
            this.items = new Object[capacity];
        }
        
        //入栈
        public boolean push(E item){
            //栈已经满了
            if(size == capacity){
                return false;
            }
            items[size++] = item; 
            return true;
        }
        
        //出栈
        @SuppressWarnings("unchecked")
        public E pop() {
            if(size == 0){
                return null;
            }
            E e = (E)items[size-1];
            items[--size] = null;
            return e;
        }
        
    
    }

    三、使用链表来实现栈、

    //使用链表创建栈
    public class MyLinkedStack<E> {
    
        //节点存储元素信息
        private static class Node<E>{
            
            E item;
            
            Node<E> next;//下一个节点
            
            Node(E item, Node<E> next){
                this.item = item;
                this.next = next;
            }
        }
    
        
        //栈的 容量
        private int capacity;
        
        //栈的数据个数
        private int size;
        
        //头节点
        private Node<E> head;
        
        public MyLinkedStack(int capacity){
            this.capacity = capacity;
        }
        
        //入栈
        public boolean push(E item){
            //栈已经满了
            if(size == capacity){
                return false;
            }
            //创建新节点,head指向新的节点
            Node<E> node = new Node<>(item,head);
            head = node;
            size++;
            return true;
        }
        
        //出栈
        public E pop() {
            if(size == 0){
                return null;
            }
            E e = head.item;
            head.item = null;//方便GC
            head = head.next;
            size--;
            return e;
        }
    
        
    }
  • 相关阅读:
    常见的分布
    ubuntu16.04获取root权限并用root用户登录
    神经网络与深度学习邱锡鹏学习笔记16多项式回归
    什么是公版显卡,什么是非公版显卡
    高考电子监控揭秘
    买了个2手睡袋
    HTML
    又是一天
    我也想去看珠峰
    Qt 主界面菜单栏和状态栏实现
  • 原文地址:https://www.cnblogs.com/kyleinjava/p/10874566.html
Copyright © 2011-2022 走看看