JAVA 数据结构之栈实现
来源:互联网 发布:阿里云os3.2 系统优化 编辑:程序博客网 时间:2024/05/01 09:23
1、栈的实现原理
栈用数组来实现相对较为方便,需要一个数组和一个整型变量,整型变量记录数组存入栈的下标位置,数组来顺序存储栈中的所有元素,假定数组元素用stackArray[maxSize]来表示,指示栈顶元素位置的整形变量用top来表示,通常称top为栈顶指针。这些具体的定义形式如下:
final int maxSize=10;//初始化栈的深度为10
private Object[] stackArray[maxSize];//申明一个数组栈
private int top;//申明栈顶指针
在顺序存储的栈中,top的值为-1表示栈空,每次向栈中亚茹一个元素时,首先top++,用以指示新的栈顶的位置,然后再把元素赋值到这个空的位置上,每次从占中删除一个元素时,首先取出栈顶元素,然后top--,整个时间复杂度为O(1)。
在一个顺序存储栈中,如果top已经指向了最后一个下标的位置,则表示栈满,需要重新来生成一个更大的存储区,然后把栈的所有内容拷贝到存储区,以满足继续添加新的元素。相反,如果top的值为-1,则表示栈空,无法进行取栈的内容。
2、栈的实现代码
package sequenceStack;import java.util.*;public class sequencetStack extends Stack{final int maxSize=10;private int top;private Object[] stackArray;public sequencetStack(){top=-1;stackArray=new Object[maxSize];}public sequencetStack(int i) throws Exception{if(i<0){throw new Exception("数组长度太小"); //如果长度太小的话,直接抛出异常.}else{top = -1;stackArray=new Object[i];}}//向栈顶插入元素public Object push(Object obj){//向栈顶插入一个新元素objif(top==stackArray.length-1){Object p[]=new Object[top*2+2];for(int i=0;i<=top;i++){p[i]=stackArray[i];stackArray=p;}}top++;stackArray[top]=obj;return null;}//从堆栈中弹出一个元素public Object pop(){if(top==-1){//throw new Exception("堆栈中已经没有元素了。");System.out.println("堆栈中已经没有元素了。");System.exit(0);}top--;return stackArray[top+1];}//读取栈顶元素的值public Object peek(){if(top==-1){System.out.println("堆栈中已经没有元素了。");System.exit(0);}return stackArray[top];}//判断堆栈是否为空public boolean isEmpty(){return top==-1;}//清空堆栈public void clearStack(){top=-1;}}下面是我的测试使用代码:
package sequenceStack;import java.util.Stack;public class testStack {public static void main(String args[]){Stack sck=new sequencetStack();int a[]={3,8,5,17,9,30,15,22};for(int i=0;i<a.length;i++){sck.push(a[i]);}sck.push(68);System.out.println(sck.peek()+","+sck.pop()+","+sck.pop());while(!sck.isEmpty())System.out.println(sck.pop()+" ");System.out.println();sck.clear();}}输出结果:68,68,22
15
30
9
17
5
8
3
满足栈的先入后出的特性。由于代码相对简单,所以不做累述。
0 0
- JAVA 数据结构之栈实现
- Java数据结构实现之栈
- 【数据结构】之链栈的java实现
- 数据结构之栈的java实现
- 【数据结构】之链栈的java实现
- 数据结构之栈的Java实现
- 【数据结构】之链栈的java实现
- Java 数据结构之栈的基本实现
- 数据结构之-栈(Java实现)
- 数据结构之栈的Java实现
- 数据结构之栈的java实现
- JAVA数据结构之栈的实现
- 数据结构学习之栈的Java实现
- java 数据结构之栈的实现 (四)
- 数据结构 --- Java之栈的实现
- JAVA 之 数据结构:实现单链表
- java 实现数据结构之队列
- java 实现数据结构之队列
- I2C总线协议
- stm32 定时器
- ant标签
- 华为在线练习(1)
- _beginthreadex
- JAVA 数据结构之栈实现
- JSp中 include指令标记与<jsp:include>动作标记的区别
- 自己搭建并维护一个小型网站
- android adb启动失败问题
- 导航栏透明度改变
- 多址技术与复用技术
- SpringMVC非注解的处理器适配器-HandlerAdapter
- C/C++ 文件读写操作总结
- Android Listview滑动及渐变动画