顺序堆栈

堆栈存储结构示意图

42c4b8c6-f428-468d-b5aa-2cf9f4ae86e2


堆栈进出原则

先进后出

数据集合

堆栈的数据集合的元素可以表示为任意的类类型。

操作集合

(1)入栈push(obj):把数据元素obj插入堆栈;

(2)出栈pop():出栈,删除的数据元素由函数返回;

(3)取栈顶元素getTop():取当前栈顶的数据元素并有函数返回;

(4)notEmpty():若栈非空则返回true,否则返回false.

Stack接口设计

Stack.java

package 堆栈;
public interface Stack {
//入栈
public void push(Object obj)throws Exception;
//出栈
public Object pop() throws Exception;
//获取栈顶元素
public Object getTop()throws Exception;
//判断栈不为空
public boolean notEmpty();
}

顺序堆栈设计

SeqStack.java

package 堆栈;

public class SeqStack implements Stack{
final int defaultSize=10;
int top;
Object []stack;
int maxStackSize;

public SeqStack(){
initiate(defaultSize);
}
public SeqStack(int sz){
initiate(sz);
}
public void initiate(int sz){
maxStackSize=sz;
top=0;
stack=new Object[sz];
}
public void push(Object obj)throws Exception{
if(top==maxStackSize){
throw new Exception("堆栈已满!");
}
stack[top]=obj;
top++;
}
public Object pop()throws Exception{
if(top==0){
throw new Exception("堆栈已空!");
}
top--;
return stack[top];
}
public Object getTop()throws Exception{
if(top==0){
throw new Exception("堆栈已空!");
}
return stack[top-1];
}
public boolean notEmpty(){
return (top>0);
}

}


顺序堆栈类的测试

SeqStackTest.java

package 堆栈;
public class SeqStackTest  {
public static void main(String[] args) {
SeqStack mystack=new SeqStack();

int test[]={1,3,5,7,9,11};
int n=6;


try{
for(int i=0;i<n;i++)
{
mystack.push(new Integer(test[i]));
}

System.out.println("当前栈顶元素为:"+mystack.getTop());

System.out.println("出栈元素序列为:");
while(mystack.notEmpty()){
System.out.println(mystack.pop());
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值