栈的数组实现方式

一,栈ADT(抽象数据类型)

栈是限制插入和删除只能在一个为位置上进行的表,该位置是表的末端,叫做栈的顶(top)

对栈的基本操作有Push(进栈) 和 Pop(出栈),前者相当插入,后者相当删除最后插入的元素

二,  用一个数组实现栈是很简单的。每一个栈都有一个TopOfStack,对于空栈它是-1(这是空栈的初始化)

为了将某个元素X压入该栈,我们将TopOfStack加1,然后置stack[TopOfStack] =X,其stack是代表具体的栈的数据

为了弹出栈元素,我们置返回值为stack[TopOfStack] ,然后 TopOfStack减1.

栈的声明--数据实现

public class StackRecord {

   int capacity;//栈的容量
   int TopOfStack;//栈顶元素
   int[] array;//数组
}

栈的创建

 public static int EmptyTOs=-1;
    public static int MaxStackSize=5;
    
    public StackRecord CreateStack(int MaxStackSize){
    	StackRecord s;
    	
    	if(MaxStackSize <  MaxStackSize){
    		System.out.println(" stack size is too small");
    	}
    	s = new  StackRecord();
    	if(s==null){
    		System.out.println("create fail");
    	}
    	s.array=new int[MaxStackSize];
    	s.capacity=MaxStackSize;
    	MakeEmpty(s);
    	return s;
    }

创建一个空栈

 public void MakeEmpty(StackRecord s){
    	s.TopOfStack=EmptyTOs;
    }

元素进栈

    public void Push(int x, StackRecord s){
    	if(s == null){
    		System.out.println("full empty");
    	}else{
    		s.array[ ++s.TopOfStack ]=x;
    	}
    }

给出栈顶元素并从栈弹出

  public int TopAndPop(StackRecord s){
        if(!ISEmpty(s)){
            return s.array[s.TopOfStack--];
        }
        System.out.println("Empty stack");
        return 0;
    }

判断栈为空

 public  Boolean  ISEmpty(StackRecord s){
    	return s.TopOfStack == EmptyTOs;
    }

为释放栈,先释放栈结构,在释放数组

    public void disposeStack(StackRecord s){
    	if(s!=null){
    		s.array=null;
    		System.gc();
    	}
    }

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值