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是线程安全,因此访问相比较而言会慢些;

  • 相关阅读:
    利用知名站点欺骗挂马
    海量数据库解决方案
    利用第三方浏览器漏洞钓鱼
    WCF的用户名+密码认证方式
    启用 Master Data Services 的 Web Service
    ExtJS 4.1有什么值得期待?
    [笔记]软件框架设计的艺术
    Master Data Server API 更新 Member 内置字段(Code、Name)
    Master Data Service调用API创建Model
    Silverlight传值
  • 原文地址:https://www.cnblogs.com/clovejava/p/7496727.html
Copyright © 2011-2022 走看看