欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

栈原理及其代码实现

程序员文章站 2022-06-28 16:48:49
文章目录一、栈的用法以及本质二、图示1.进栈操作2.出栈操作基本算法一. 进栈算法二. 出栈算法代码实现一、栈的用法以及本质在Java内存中,栈用于存储基本类型数据,以及各种引用的值(其实为创建出的对象在堆内存中的地址),在数据结构中为一个线性表,将一端称为栈顶,另外一段称为栈底,向栈里添加一个元素则称为进栈,删除栈内一个元素称为出栈。在执行进栈操作的时候,新元素压在之前的元素上,称为栈顶元素,对栈的操作可以归纳为:先进后出二、图示1.进栈操作2.出栈操作基本算法一. 进栈算法1.设立...


一、栈的用法以及本质

在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;
	}
}

本文地址:https://blog.csdn.net/weixin_46452990/article/details/109100347