JAVA 数据结构之栈实现
Posted xxniuren
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 数据结构之栈实现相关的知识,希望对你有一定的参考价值。
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)
//向栈顶插入一个新元素obj
if(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
满足栈的先入后出的特性。由于代码相对简单,所以不做累述。
以上是关于JAVA 数据结构之栈实现的主要内容,如果未能解决你的问题,请参考以下文章