基础数据结构之栈(用Java语言实现)
2022/1/25 22:34:18
本文主要是介绍基础数据结构之栈(用Java语言实现),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
栈
栈又叫做堆栈;是允许在同一端进行插入与删除操作的特殊线性表。其中执行插入删除操作的一段叫栈顶(Top),另一端为栈底(Bottom)。栈底固定,栈顶浮动。当栈内没有元素时,该栈叫做空栈。
插入过程叫做进栈(Push);
删除过程叫做出栈(Pop);
栈遵循FILO(First in Last Out),先入后出的原则。
示意图如下:
方法 | 功能描述 |
---|---|
push() | 向栈内压入一个数据,在栈的最下面 |
pop() | 弹出栈顶元素,出栈 |
peek() | 返回当前栈顶数据 |
首先定义栈的基本数据结构:
public class Stack<E>{ private Object[] data=null; private int maxSize; private int top=-1; Stack(){ this(10) } Stack(int initalSize){ if(initalSize>=0){ this.maxSize=initalSize; data=new Object(initalSize); top=-1; }else{ throw new RuntimeException("初始化大小不能小于0"+initalSize); } } }
该段代码定义了一个栈类,‘定义了一个数组data,用于存储数据;定义了一个maxSize,用于规定栈的最大容量;
定义了栈顶指针为-1;同时无参构造函数中,栈的默认大小为10,当然也提供了有参的构造方法,帮助其规定其他容量的栈。
//进栈,第一个元素top=0 public boolean push(E e){ if(top==maxSize-1){ throw new RuntimeException("栈已满,无法再继续入栈") }else{ data[++top]=e; return true; } }
进栈前首先要判断是否栈已经满了,要是满了,则压不了栈;注意top指针是从-1开始的,因此top==maxSize-1的时候就是栈已经满了;入栈就是data[++top]=e,(指针不断上移)然后返回true(因为该函数返回值是布尔值)。
出栈,从栈顶移除数据
public E pop(){ if(top==-1){ throw new RuntimeException("栈为空") }else{ return (E)data[top--]; } }
上面方法定义了pop(),注意这里是data[top–],先把数据移除去,再top减一
仔细推向一下,一开始top=-1;压入一个,top就是0了,也就是top要比maxSize小一个。
public E peek(){ if(top==-1){ throw new RuntimeException("栈为空") }else{ return (E)data[top]; } }
这个和pop()差不多
这篇关于基础数据结构之栈(用Java语言实现)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南