栈(Stack)是限定在仅在表尾插入的线性表。
因此对于栈来说,表尾具有特殊的含义。我们把表尾称作栈顶(top),把表头称作栈底(bottom)。不含元素的栈称为空栈。

想象一下进栈的顺序:
1.a1进,进到栈底
2.a2进,进到a1的下一个,栈顶指针指向a2
3.a3进,进到a2的下一个,栈顶指针指向a3
4.a4进,进到a3的下一个,栈顶指针指向a4

想象一下出栈的顺序:
1.a4第一个输出,栈顶指针指向a3
2.a3第二个输出,栈顶指针指向a2
3.a2第三个输出,栈顶指针指向a1
4.a1第四个输出,此时栈顶指针==栈底指针

由此我们可以知道:
1.在栈中,栈的修改按照 先进后出 的原则进行。
2.栈底指针始终指向栈底,栈顶指针始终指向最上面的那个元素。

队列

和栈相反,队列是一种 先进先出 的线性表。它值允许在表的一端进行插入,而在另一端进行删除元素。

和我们平时排队一样,第一个到的排在第一位,第一位也是最先输出的,即最早进入队列的最早离开。
在队列中,允许插入的一端称为队尾,允许输出的一段称为队首。
队首元素始终指向最前面的元素,队尾元素始终指向最后到来的元素。

从数据结构的角度来看:

栈和队列都是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集。所以,他们是操作受限的线性表。因此可称为限定性的数据结构。

从数据类型的角度来看:

他们是和线性表大不相同的两类重要的抽象数据类型。

什么是栈?什么是队列?栈与队列的特点相关推荐

  1. c++数据结构队列栈尸体_一本正经的聊数据结构(3):栈和队列

    前文传送门: 「一本正经的聊数据结构(1):时间复杂度」 「一本正经的聊数据结构(2):数组与向量」 引言 前一篇内容我们介绍了数组和向量,虽然说向量是数组的一个升级版,但是在另一个维度上,他们都属于 ...

  2. 简单数据结构(队列 栈 树 堆 )

    基础知识 基本概念 程序 = 算法 + 数据结构数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存 ...

  3. 用栈来表示队列,用队列来表示栈

    这个问题总的栈和队列,没有自己手写,自己手写太浪费了,于是就用的java中的集合框架list下面的LinkedList 其实LinkedList既可以当做栈用,也可以当做队列来使用. 作为栈的时候,L ...

  4. YTU 3004: 栈的基本运算(栈和队列)

    3004: 栈的基本运算(栈和队列) 时间限制: 1 Sec  内存限制: 128 MB 提交: 32  解决: 10 题目描述 编写一个程序,实现顺序栈的各种基本运算,主函数已给出,请补充每一种方法 ...

  5. JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)

    最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...

  6. 用栈实现队列和用队列实现栈

    首先需要使用上篇文章(用数组实现栈和队列)中的栈和队列两个类 1.栈实现队列:思路是有两个栈,一个用来放数据(数据栈),一个用来辅助(辅助栈).数据添加时,会依次压人栈,取数据时肯定会取栈顶元素,但我 ...

  7. 数据结构与算法(C语言) | 栈和队列——栈(自己做过测试)

    栈是一种重要的线性结构,通常称,栈和队列是限定插入和删除只能在表的"端点"进行的线性表.(后进先出) –栈的元素必须"后进先出". –栈的操作只能在这个线性表的 ...

  8. 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; public class Solution {      ...

  9. 算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...

    算法:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.<剑指offer> 利用栈来进行操作,代码注释写的比较清楚:首先判断两个栈是否是空的:其次当栈二 ...

  10. java 栈 队列 接口_Java队列接口

    java 栈 队列 接口 介绍: 队列是FIFO(先进先出)抽象数据类型(ADT). 换句话说,按插入顺序将元素删除. java.util.Queue是Java 中的接口,并且从java.util.C ...

最新文章

  1. PCL_common模块api代码解析
  2. codevs——2894 Txx考试(背包)
  3. 大厂前实习生被威胁,“关闭开源项目,不然就告你”
  4. 程序员必练六大项目:从数据结构到操作系统,计算机教授为你画重点
  5. NND年年回家这么难买火车票
  6. html5后代选择符,css选择符有哪些?哪些属性可以继承?
  7. 使用a标签调用手机系统的一些小技巧(打电话、发短信)
  8. vue学习笔记-02-前端的发展历史浅谈mmvm设计理念
  9. canvas的getImageData和putImageDataAPI
  10. 如何在SQL Server中创建视图
  11. java虚拟机学习笔记 【3】
  12. C#事件-什么是事件
  13. 1114 Family Property (25 分)
  14. 【WPA TSP】基于matlab狼群算法求解旅行商问题【含Matlab源码 211期】
  15. 盘点论文免费下载的国内外网站
  16. 单链表的结构体定义与声明
  17. 用C语言编程取出八个球,带你解决C语言编程问题~之口袋放球取法
  18. Mezzanine Markdown的问题
  19. 个税局端服务器处理结果查询不到三方协议,「实用」电子税务局中三方协议验证失败如何处理?来看攻略啦!...
  20. 【FPGA基础篇】底层结构组成

热门文章

  1. 【xshell7免费下载安装】
  2. 分享一个电气仿真软件
  3. 黄淮学院计算机专业录取分数线2019,2018年黄淮学院艺术类本科专业录取分数线...
  4. 基于FPGA的FM信号解调
  5. 迅雷VIP尊享版系列
  6. 谷歌翻译停服后,chrome无法自动翻译?解决办法来了~ (最新)
  7. vb获取服务器文件路径,vb打开ftp服务器文件路径
  8. 计算机网络操作试题2级,计算机网络管理员操作模拟试题-二级.pdf
  9. 如何在零件层隐藏/显示SOLIDWORKS尺寸?
  10. JAVA计算机毕业设计智慧社区信息管理系统开发Mybatis+源码+数据库+lw文档+系统+调试部署