栈原理及其代码实现


一、栈的用法以及本质

在Java内存中,栈用于存储基本类型数据,以及各种引用的值(其实为创建出的对象在堆内存中的地址),在数据结构中为一个线性表,将一端称为栈顶,另外一段称为栈底,向栈里添加一个元素则称为进栈,删除栈内一个元素称为出栈。在执行进栈操作的时候,新元素压在之前的元素上,称为栈顶元素,对栈的操作可以归纳为:先进后出

二、图示

1.进栈操作

在这里插入图片描述

2.出栈操作

在这里插入图片描述

基本算法

一. 进栈算法

1.设立指针top指向栈顶,
2.在进栈前检查top>栈长,则出现异常
3.赋值给top指向的地方
4.top+1

二. 出栈算法

1.检查top<0,若满足则出现错误
2.将栈顶元素赋值给X(退栈的元素赋值给X),然后归空
3.top-1

代码实现

/**
 * 
 * @author 豪可爱
 * 模拟栈的运行
 * 先进先出,后进后出
 *
 */
public class Test20 {
	static Object [] elementDate=new Object[5];//对象数组 可以存储任意数据类型的值
	static int top=0;//栈指针
	static int size=0;//实际存储元素个数
	/**
	 * 入栈
	 * 1.先检查栈是否满了,满了则弹出异常
	 * 2.
	 */
	public static void push(Object obj) {
		if(top>=elementDate.length) {
			//模拟程序意外中止(超出数组长度)
			throw new IllegalArgumentException("满栈溢出");
		}
		//top作为数组下标
		elementDate[top++]=obj;//elementDate[top]=obj;top++;
		size++;
	}
	
	/**
	 * 出栈:
	 */
		
	public static Object pop() {
		if(top<0) {
			throw new IllegalArgumentException("空栈,溢出。。。。");
		}
		//获取栈顶元素的值
		Object obj=elementDate[--top];
		//把对应位置赋值null
		elementDate[top]=null;
		//实际元素个数-1
		size--;
		return obj;
	}
	/**
	 * 实际元素个数
	 * 
	 */
	public static int getsize() {
		return size;
	}
//查看栈顶元素
public Object peek(){
	//将栈顶元素值获取到,栈顶元素不发生改变
	if(top<0) {
	//先判断栈是否为空
			throw new IllegalArgumentException("空栈,溢出。。。。");
		}
	int top2=top-1;
	return elementDate[top2];

}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值