Java用简单数组实现栈

栈的操作

以栈存储的数据是char类型为例:

  • void push(char)/boolean push(char) //压入一个数据
  • char pop() //删除并返回栈顶的元素
  • char top() //返回栈顶元素
  • int size() //返回数据个数
  • boolean isEmpty() //判断栈是否为空
  • boolean isStackFull() //判断栈是否已满

用简单数组实现栈类

package stack;

public class ArrayStack {
    private char[] array;
    private int top;//最上面数据的下标
    private int size;//可存储数据的数量
    
    public ArrayStack(int size){
    	this.size=size;
    	array=new char[size];
    	top=-1;
    }//初始化
    public boolean push(char data){
    	if(top+1==size){
    		return false;
    	}
    	else{
    		top++;
    		array[top]=data;
    		return true;
    	}
    }//满了以后放入失败 返回false
    public char pop(){
    	if(top==-1){
    		return '*';
    	}
    	else{
    		top--;
    		return array[top+1];//不能先返回再变top
    	}
    }//为空则取出失败 返回*
    public char top(){
    	if(top!=-1)
    	return array[top];
    	else
    		return '*';
    }
    public int size(){
    	return top+1;
    }
    public boolean isEmpty(){
    	return (top==-1);
    }
    public boolean isStackFull(){
    	return (top+1==size);
    }
}

简单测试

package stack;

public class TestArrayStack {
    public static void main(String[] args){
    	ArrayStack as=new ArrayStack(4);
    	//System.out.println("已有元素数量:"+as.size());
    	System.out.println("是否为空:"+as.isEmpty());
    	System.out.println("是否已满:"+as.isStackFull());
    	System.out.println("第一个数据为:"+as.top());
    	as.push('a');
    	as.push('b');
    	System.out.println("已有元素数量:"+as.size());
    	System.out.println("是否为空:"+as.isEmpty());
    	System.out.println("是否已满:"+as.isStackFull());
    	System.out.println("第一个数据为:"+as.top());
    	as.push('c');
    	as.push('d');
    	as.push('e');
    	System.out.println("已有元素数量:"+as.size());
    	System.out.println("是否为空:"+as.isEmpty());
    	System.out.println("是否已满:"+as.isStackFull());
    	System.out.println("第一个数据为:"+as.top());
    	
    	System.out.println("所有元素依次取出:");
    	for(int i=1;i<5;i++){
    		System.out.print(as.pop()+" ");
    	}
    }
}

输出结果如下:

是否为空:true
是否已满:false
第一个数据为:
所有元素依次取出:
已有元素数量:2
是否为空:false
是否已满:false
第一个数据为:b
所有元素依次取出:
已有元素数量:4
是否为空:false
是否已满:true
第一个数据为:d
所有元素依次取出:
d c b a

发布了14 篇原创文章 · 获赞 0 · 访问量 305

猜你喜欢

转载自blog.csdn.net/zmx1952822326/article/details/100751899