[LeetCode训练营]栈

一、栈的介绍

栈(Stack):也称为堆栈。一种线性表数据结构,是一种只允许在表的一端进行插入和删除操作的线性表
在这里插入图片描述
我们把栈中允许插入和删除的一端称为「栈顶(top)」;另一端则称为「栈底(bottom)」。当表中没有任何数据元素时,称之为「空栈」。
堆栈有两种基本操作:「插入操作」和「删除操作」

  • 栈的插入操作又称为「入栈」或者「进栈」
  • 栈的删除操作又称为「出栈」或者「退栈」

二、栈的定义

  • 线性表
    栈中元素按照 a1, a2, ···, an 的次序依次进栈。栈顶元素为 an。
  • 后进先出原则
    每次删除的总是堆栈中当前的栈顶元素,即最后进入堆栈的元素。
    而在进栈时,最先进入堆栈的元素一定在栈底,最后进入堆栈的元素一定在栈顶。

三、栈的存储

  • 顺序栈(使用列表)
    利用一组地址连续的存储单元依次存放自栈底到栈顶的元素,同时使用指针 top 指示栈顶元素在顺序栈中的位置。
  • 链式栈(使用单链表)
    利用单链表的方式来实现堆栈。栈中元素按照插入顺序依次插入到链表的第一个节点之前,并使用栈顶指针 top 指示栈顶元素,top 永远指向链表的头节点位置。

本文章主要内容摘自阿里云天池leetcode训练营,主要当作笔记记录,如有错误的地方或者有没写完的地方,请见谅。

猜你喜欢

转载自blog.csdn.net/qq_45415920/article/details/123023553