美文网首页数据结构
数据结构——栈与队列

数据结构——栈与队列

作者: zgwyvd | 来源:发表于2018-12-11 16:19 被阅读32次

一、栈

1.栈的定义

栈是一种特殊的线性表,只能在表的一端进行插入删除元素操作。允许操作的一端称为栈顶,另一端称为栈底。处在栈顶位置的元素称为栈顶元素,如果栈中没有元素称为空栈。
栈的操作原则是先进后出(First In Last Out,FILO)或者后进先出(Last In First Out,LIFO)。
可以将栈想象成一个死胡同(死胡同的入口就是栈顶,另一端就是栈底;第五户人家在胡同口,就是栈顶;五户人家都开车出去了,胡同里没有车,此时就是空栈)。里面住了五户人家,每户有一辆车,第三户人家要开车出去购物。
(1)打电话给第五家,我要出去了,把车挪一下
(2)打电话给第四家,我要出去了,把车挪一下
(3)第三辆车出去了
(4)第四辆车挪回去
(5)第五辆车挪回去


栈.png

2.栈的基本操作

(1)初始化一个空栈
(2)判断是否为空栈
(3)入栈,在栈顶插入一个新的元素
(4)出栈,从栈顶删除一个元素
(5)取栈顶元素
(6)将非空栈清空
(7)求栈中元素个数
(8)销毁栈

3.栈的存储结构

如定义上说的,栈是一种特殊的线性表(可以看数据结构——线性表)。也就是说,栈也有两种存储结构,一种顺序表结构(简称为顺序栈),一种链表结构(简称为链表栈)。
(1)顺序栈
栈的顺序存储结构,利用一组连续的地址依次存放自栈底到栈顶的数据元素,同时设指针top指向栈顶元素的当前位置。通常用一维数组来实现栈,当top = 0时为空栈,当数据元素不断进栈,栈顶指针top不断加一,top达到数组最大下标时为栈满。

(2)链表栈
使用链表存储结构实现的栈称为链表栈,此时的栈顶指针top用于存放首节点的指针。栈顶指针top->next = NULL时为空栈。


链表栈.png

4.栈的应用

上面的例子介绍栈的操作,这么麻烦,栈具体的使用场景是上面呢?

二、队列

相关文章

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 文章列表

    基本数据结构 栈 队列 双端队列 无序链表 有序链表 递归 递归 搜索与排序 搜索

  • Axure的另类学习法(一)——队列与栈

    在学习数据结构时,书中提到了两种最基本的数据结构“队列”与“栈”。 于是,想用Axure来实现下队列和栈的两种基本...

  • 集合相关数据结构与算法

    队列 栈数据结构 比较算法 Collections Collection与Collections的区别?Colle...

  • 队列

    队列,是一个先进先出的数据结构,与栈一样,队列也是一种数组与链表的一种的受限操作所形成的特殊数据结构。 相比于栈...

  • 数组队列如何手撕?解密ArrayBlockingQueue的实现

    队列 聊起队列,你一定会联想到一个与队列相似的数据结构:栈。 为了更好的理解什么是队列,我们将它和栈来比较一下: ...

  • 【JS基础进阶】(五)JavaScript栈内存与堆内存

    (一)堆(heap),栈(stack)与队列(queue) 栈数据结构 JavaScript中并没有严格意义上区分...

  • 栈和队列—什么是栈

    栈和队列是两种重要的数据结构 从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子...

  • 栈和队列—什么是队列

    栈和队列是两种重要的数据结构 从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子...

  • 泡杯茶,我们坐下聊聊javascript事件环

    栈和队列 在计算机内存中存取数据,基本的数据结构分为栈和队列。 栈(Stack)是一种后进先出的数据结构,注意,有...

网友评论

    本文标题:数据结构——栈与队列

    本文链接:https://www.haomeiwen.com/subject/lbrehqtx.html