数据结构之一:栈的实现
来源:互联网 发布:专业淘宝拍摄 编辑:程序博客网 时间:2024/05/01 16:52
基本介绍
栈 (Stack)是一种后进先出(last in first off,LIFO)的数据结构。
栈的实现
栈是一种后进先出的数据结构,对于Stack 我们希望至少要对外提供以下几个方法:
Stack<T>(); //创建一个空的栈void Push(T s); //往栈中添加一个新的元素T Pop(); //移除并返回最近添加的元素boolean IsEmpty(); //栈是否为空int Size(); //栈中元素的个数
具体实现有两种方式:基于数组的实现与基于链表的实现。
基于数组的实现
import java.util.Arrays;public class StackImplementByArrays<T>{ Object[] item; static final int DEFAULT_CAPACITY=10; int CAPACITY; int size; static final float Max_SIZE_RATIO=(float) 0.75; static final float Min_SIZE_RATIO=(float) 0.25; public StackImplementByArrays() { size=0; item=new Object[DEFAULT_CAPACITY]; CAPACITY=DEFAULT_CAPACITY; } public StackImplementByArrays(int capacity) { super(); size=0; item=new Object[10]; CAPACITY=capacity; } public void resize(int re_size) { Object[] tem=new Object[re_size]; for(int i=0;i<size;i++) { tem[i]=item[i]; } item=tem; } public void push(T ele) { if(size>=CAPACITY*Max_SIZE_RATIO) { CAPACITY=CAPACITY<<2; resize(CAPACITY); } item[this.size]=ele; this.size++; } public T pop() { if(!isEmpty()) { if(size<=CAPACITY*Min_SIZE_RATIO) { CAPACITY=CAPACITY>>2; resize(CAPACITY); } T tem = (T) item[this.size-1]; this.size--; return tem; } else { throw new ExceptionInInitializerError("The stack is Empty"); } } public boolean isEmpty() { if(0==this.size) { return true; } else { return false; } } public int size() { return this.size; }}
分析:
1. Pop和Push操作在最坏的情况下与元素个数成比例的N的时间,时间主要花费在扩大或者缩小数组的个数时,数组拷贝上。
2. 元素在内存中分布紧凑,密度高,便于利用内存的时间和空间局部性,便于CPU进行缓存,较LinkList内存占用小,效率高。
0 0
- 数据结构之一:栈的实现
- 数据结构的选用之一
- 数据结构 线性表实现之一
- 数据结构重现之一 ----------栈
- 数据结构 --栈的实现
- 数据结构:栈的实现
- 数据结构-----栈的实现
- 数据结构-----栈的实现
- 【数据结构】栈的实现
- 数据结构-栈的实现
- TREE RCU实现之一 —— 数据结构
- 数据结构:栈的典型应用之一:行编辑(C++)
- 表达式求值(数据结构书上栈的应用之一)
- 数据结构之一
- 数据结构之一
- 数据结构,关于栈的实现
- Java 数据结构----栈的实现
- 数据结构中栈的实现
- 最长回文串
- Android应用程序内换肤解决方案(二)之测试Demo
- hdu---2529Shot
- hdu---2058The sum problem
- hdu---1719Friend
- 数据结构之一:栈的实现
- hdu---1577WisKey的眼神
- hdu---1591Encoded Love-letter
- Maximum Subarray
- hdu---1098Ignatius's puzzle
- Android中关于内部存储的一些重要函数
- Word中页眉、页脚、页码设置
- hdu---1084What Is Your Grade?
- hdu---1058Humble Numbers