使用一维数组,模拟栈数据结构

MyStack.java

/*
编写程序,使用一维数组,模拟栈数据结构。
要求:
	1. 这个栈可以存储java中的任何引用类型的数据。
	2. 在栈中提供push方法模拟压栈。(栈满了,要有提示信息)
	3. 在栈中提供pop方法模拟弹栈。 (栈空了,要有提示信息)
	4. 编写测试程序,new栈对象,调用push pop方法来模拟压栈弹栈的动作。
	5. 假设栈的默认初始化容量是10。
*/

public class MyStack
{
	//存储元素
	private Object[] elements;
	//栈帧 永远指向栈顶部元素
	private int index;

	public MyStack(){
		this.elements = new Object[10];
		//给index初始化
		this.index = -1;
	}

	/**
		* 压栈的方法
		* @param obj 被压入的元素
		*/
	public void push(Object obj){
		if (index >= elements.length - 1)
		{
			System.out.println("压栈失败 栈已满");
			return ;
		}

		index ++;
		elements[index] = obj;
		System.out.println("压栈元素" + obj + "成功, 栈帧指向" + index);
	}

	/**
		* 弹栈的方法
		* @return	
	*/
	public void pop(){
		if (index < 0)
		{
			System.out.println("弹栈失败,栈已空");
			return;
		}

		System.out.println("弹栈" + elements[index] + "元素成功");
		index --;
		System.out.println("栈帧指向" + index);
	}
	
	public Object[] getElements(){
		return elements;
	}

	public void setElements(Object[] elements){
		this.elements = elements;
	}

	public int getIndex(){
		return index;
	}
	
	public void setIndex(int index){
		this.index = index;
	}
}

MyStackTest.java

public class MyStackTest
{
	public static void main(String[] args) {

		//创建一个栈对象 初始容量是10
		MyStack stack = new MyStack();

		//调用方法压栈
		stack.push(new Object());
		stack.push(new Object());

		stack.pop();
		stack.pop();
	}
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页