持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情。
本篇开始,将为大家介绍新的数据结构——栈。
什么是栈
栈和队列很相似,都是操作受限的线性表
。与队列所要求的 “先进先出,后进后出” 的存取模式不同,栈的存取结构是:只允许在一端进行插入或删除操作。这样的存取结构也就使得栈在存取元素时,采取的是 “先进后出,后进先出” 的规律。
和队列相同,栈的添加元素操作被称之为“入栈”
,删除元素的操作则称之为“出栈”
。
所有的栈都包含以下几个基本属性:
- 栈底 bottom
- 栈顶 top
栈的所有存取操作都必须在栈顶
进行操作,添加如此删除亦是如此。
与在队列篇相同,栈篇同样会为大家分别用顺序表
和链表
进行设计。主要要实现栈的以下几种方法:
public class Stack{
Object top;
Object bottom;
public void push(); // 入栈操作 给栈中添加元素
public int pop(); // 出栈操作 从栈中取出元素
}
基于顺序表的栈实现
要想使用顺序表实现栈,首先就需要依照顺序表的特点来构建栈。
public class arrStack{
int top;
int bottom;
int[] arr;
public void push(); // 入栈操作 给栈中添加元素
public int pop(); // 出栈操作 从栈中取出元素
}
因为在顺序表中主要存储体为数组,所以我们的栈顶
、栈底
存储的都是元素下标
。所以我们设置栈底默认初始化为0
,而栈顶则因0
下标能存储元素则初始化为-1
。
public arrStack(int length)
{
this.arr = new int[length];
this.top = -1;
this.bottom = 0;
}
到此各位读者应该也看出来了,栈底的作用是用于标识栈的起点,但具体的作用将在之后的篇章中为大家解答。
小结
本篇中我们开始为大家介绍新的数据结构——栈,它是一种和队列很相似的线性表。
天天学习,加速成长!
希望与各位一起变得越来越强!