数据结构12:栈(01)

81 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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;
}

到此各位读者应该也看出来了,栈底的作用是用于标识栈的起点,但具体的作用将在之后的篇章中为大家解答。

小结

本篇中我们开始为大家介绍新的数据结构——栈,它是一种和队列很相似的线性表。

天天学习,加速成长!

希望与各位一起变得越来越强!