栈原理及其代码实现
程序员文章站
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