zoukankan      html  css  js  c++  java
  • 数据结构与算法的学习-栈

    栈的学习

    栈存储数据是先进后出的形式

    java语言来实现的话如下

    package com.example;

     

    import java.util.Stack;

     

    /**

     * @author ChenLang 模拟栈的先进后出等

     */

    public class StackDemo {

             int[] stack;

             int top;//表示栈顶

     

             public StackDemo() {

                       stack = new int[10];

                       top = -1;

             }

     

             public StackDemo(int element) {

                       stack = new int[element];

                       top = -1;

             }

             //压栈

             public void push(int value) {

                       stack[++top] = value;

             }

             //出栈

             public int pop() {

                       return stack[top--];

             }

             //判断是否为空

             public boolean isEmpty() {

                       if (top >= 0) {

                                return true;

                       }

                       return false;

             }

             //判断是否满了

             public boolean isFull() {

                       if (stack.length-1 == top) {

                                return true;

                       }

                       return false;

             }

    }

     

    java实现后开始看jdk提供的stack的源码,并改造原先的代码

    stack继承了vector类,该类可实现自动增长的对象数组。

    vector的学习:

    源码中有三个构造方法:

    一:public Vector(int initialCapacity, int capacityIncrement) {

            super();

            if (initialCapacity < 0)

                throw new IllegalArgumentException("Illegal Capacity: "+

                                                   initialCapacity);

            this.elementData = new Object[initialCapacity];

            this.capacityIncrement = capacityIncrement;

        }

    二:

    public Vector(int initialCapacity) {

            this(initialCapacity, 0);

    }

     

    三:public Vector() {

            this(10);

        }

    其中:initialCapacity设定向量对象初始容量,当真正存放的数据超过容量时,系统会扩充向量对象的存储容量

                       capacityIncrement这个参数给定的是每次扩充容量的值。如果这个数是0则每次扩充一倍,利用这个方法可以优化存储,减少内存泄露

    缺点:数据太大时,vector就会消耗很多额外的资源,使应用程序的性能下降,(有可能是数据太多了导致vector分配内存失败,因为vector是用数组存放的,需要连续的存储空间)同时vector一旦插入或者删除数据之后,迭代器就失效了

    同时vector是线程安全,因此访问相比较而言会慢些;

  • 相关阅读:
    20155305 2016-2017-2 《Java程序设计》实验二 Java面向对象程序设计
    20155305乔磊2016-2017-2《Java程序设计》第八周学习总结
    20155305 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉(macOS + IDEA)
    20155305乔磊2016-2017-2《Java程序设计》第七周学习总结
    20155305乔磊2016-2017-2《Java程序设计》第六周学习总结
    2017-2018-1 20155302 《信息安全系统设计基础》第3周学习总结
    20155302 第二周课堂实践
    2017-2018-1 20155302 《信息安全系统设计基础》第1周学习总结
    20155302杨效宸《Java程序设计》课程总结
    20155302实验五 网络编程与安全
  • 原文地址:https://www.cnblogs.com/clovejava/p/7496727.html
Copyright © 2011-2022 走看看