码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构与算法的学习-栈

时间:2017-09-08 23:54:29      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:失败   lin   span   oid   bool   判断   内存   pop   存储   

栈的学习

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

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

数据结构与算法的学习-栈

标签:失败   lin   span   oid   bool   判断   内存   pop   存储   

原文地址:http://www.cnblogs.com/clovejava/p/7496727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!