java实现入栈push和出栈pop过程
java实现入栈push和出栈pop
什么叫栈
凡是满足数据先进后出的一种数据结构都叫做栈。
特点
先进后出,后进先出。
数据一般存储在两种数据结构中:1.数组、2.链表
实现入栈出栈可以用链表也可以用数组,数组是最简单的一种方法,我们用数组来实现:
栈的就像杯子一样,模型如下图:

那么我们往栈中放数据时入栈(push)就可以跟数组添加数据一样,假如我们放入数组顺序依次为3,5,7,9,那它在栈中的表现形式如下图,先进入的在栈底,最后进入的在栈顶,当然我们定义的数组会有长度限制,在到达栈顶时我们需要考虑给他扩容

那出栈时我们需要从栈顶开始输出值的大小,再出栈时就要输出栈顶的下一个值,即9出栈后下一个出栈的就是7,如下图:

那我们是需要定义一个指针index,当入栈时我们让index在数组里index++,出栈时,index指向的是栈顶元素上方,所以我们要先输出栈顶元素就要使index-1,再让index--;让下一个元素成为栈顶,如下图:




代码如下
定义一个栈stack类:
public class Stack {
//定义私有数组只能本类方法可以访问
private int[] arr=new int[10];
//定义指针index,来指向栈顶元素上方
private int index;
//入栈方法,通过传参来添加元素
public void push(int val) {
//考虑扩容,如果数组长度不够就先进行扩充
if(index==arr.length) {
int[] brr=new int[arr.length*2];
for(int i=0;i<arr.length;i++) {
brr[i]=arr[i];
}
arr=brr;
}
//index++是先赋值后加一
arr[index++]=val;
}
//出栈方法
public void pop() {
//考虑到达栈底时程序的完整性,防止越界
if(index==0) {
System.out.println("已经到达栈底");
return;
}
//打印出栈顶元素,--index是先减一再赋值
System.out.println(arr[--index]);
}
}通过测试类来测试结果:
public class Test {
public static void main(String[] args) {
Stack stack=new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
stack.push(6);
stack.push(7);
stack.push(8);
stack.pop();
stack.pop();
stack.pop();
stack.pop();
stack.pop();
stack.pop();
stack.pop();
stack.pop();
stack.pop();
}
}结果如下图:

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Springboot3整合Mybatis-plus3.5.3报错问题解决
在日常学习springboot3相关的代码时,在使用 SpringBoot3 整合 MyBatisplus 时出现了一些问题,花了不少时间处理,这篇文章主要介绍了Springboot3整合Mybatis-plus3.5.3报错问题解决,需要的朋友可以参考下2023-11-11
spring mvc中注解@ModelAttribute的妙用分享
这篇文章主要给大家介绍了关于spring mvc中注解@ModelAttribute妙用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Android具有一定的参考学习价值,需要的朋友们下面来一起看看吧。2017-09-09
使用Spring boot + jQuery上传文件(kotlin)功能实例详解
本文通过实例代码给大家介绍了使用Spring boot + jQuery上传文件(kotlin) 功能,需要的朋友可以参考下2017-07-07


最新评论