Java数据结构与算法——栈

线性结构之一:栈
栈是一个先入后出的有序列表
栈的元素不能从列表中间增加和删除,
只能从顶端增删数据,称为栈顶;
底端为固定的一端不进行元素的增删,称为栈底

数组模拟栈

栈类MyStackInt :
属性:
	栈大小
	数组模拟栈
	栈顶(top = -1)
方法:
	判断栈是否满:用栈顶的标记值top == 栈大小 - 1
	判断栈是否空:top ==  - 1
	入栈  top ++ 
	出栈  top --
	显示栈所有数据
	显示栈顶元素
构造器:初始化数组大小
package stack;

public class MyStackInt {
	private int maxSize;// 栈大小
	private int[] stack;// 数组栈
	private int top = -1;// 栈顶

	public MyStackInt() {
		super();
		// TODO Auto-generated constructor stub
	}

	public MyStackInt(int maxSize) {
		super();
		this.maxSize = maxSize;
		this.stack = new int[maxSize];
	}

	// 判断栈是否满
	public boolean isFull() {
		// return stack.length == maxSize;
		return top == maxSize - 1;
	}

	// 判断栈是否已经空
	public boolean isEmpty() {
		// return stack.length == 0;
		return top == -1;
	}

	// 入栈
	public void push(int i) {
		// 先判断栈是否已满
		if (isFull()) {
			System.out.println("栈已经满了!");
			return;
		}
		top++;
		stack[top] = i;
		System.out.println("添加成功!");
	}

	// 出栈
	public int pop() {
		if (isEmpty()) {
			// System.out.println("栈已经空了");
			// return -1;
			throw new RuntimeException("栈已经空了");
		}
		int temp = stack[top];
		top--;
		System.out.println("取值成功! " + temp);
		return temp;
	}
	//显示栈顶元素不是取出元素
	public int peek() {
		if (isEmpty()) {
			throw new RuntimeException("栈已经空了");
		}
		return stack[top];

	}

	// 遍历栈的元素(不是取值),先进后出
	public void list() {
		if (isEmpty()) {
			System.out.println("栈已经空了");
			return;
		}

		for (int i = top; i >= 0; i--) {
			System.out.println(stack[i]);
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值