什么是栈?什么是队列?栈与队列的特点
栈
栈(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.栈底指针始终指向栈底,栈顶指针始终指向最上面的那个元素。
队列
和栈相反,队列是一种 先进先出 的线性表。它值允许在表的一端进行插入,而在另一端进行删除元素。
和我们平时排队一样,第一个到的排在第一位,第一位也是最先输出的,即最早进入队列的最早离开。
在队列中,允许插入的一端称为队尾,允许输出的一段称为队首。
队首元素始终指向最前面的元素,队尾元素始终指向最后到来的元素。
从数据结构的角度来看:
栈和队列都是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集。所以,他们是操作受限的线性表。因此可称为限定性的数据结构。
从数据类型的角度来看:
他们是和线性表大不相同的两类重要的抽象数据类型。
什么是栈?什么是队列?栈与队列的特点相关推荐
- c++数据结构队列栈尸体_一本正经的聊数据结构(3):栈和队列
前文传送门: 「一本正经的聊数据结构(1):时间复杂度」 「一本正经的聊数据结构(2):数组与向量」 引言 前一篇内容我们介绍了数组和向量,虽然说向量是数组的一个升级版,但是在另一个维度上,他们都属于 ...
- 简单数据结构(队列 栈 树 堆 )
基础知识 基本概念 程序 = 算法 + 数据结构数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存 ...
- 用栈来表示队列,用队列来表示栈
这个问题总的栈和队列,没有自己手写,自己手写太浪费了,于是就用的java中的集合框架list下面的LinkedList 其实LinkedList既可以当做栈用,也可以当做队列来使用. 作为栈的时候,L ...
- YTU 3004: 栈的基本运算(栈和队列)
3004: 栈的基本运算(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 32 解决: 10 题目描述 编写一个程序,实现顺序栈的各种基本运算,主函数已给出,请补充每一种方法 ...
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...
- 用栈实现队列和用队列实现栈
首先需要使用上篇文章(用数组实现栈和队列)中的栈和队列两个类 1.栈实现队列:思路是有两个栈,一个用来放数据(数据栈),一个用来辅助(辅助栈).数据添加时,会依次压人栈,取数据时肯定会取栈顶元素,但我 ...
- 数据结构与算法(C语言) | 栈和队列——栈(自己做过测试)
栈是一种重要的线性结构,通常称,栈和队列是限定插入和删除只能在表的"端点"进行的线性表.(后进先出) –栈的元素必须"后进先出". –栈的操作只能在这个线性表的 ...
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; public class Solution { ...
- 算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...
算法:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.<剑指offer> 利用栈来进行操作,代码注释写的比较清楚:首先判断两个栈是否是空的:其次当栈二 ...
- java 栈 队列 接口_Java队列接口
java 栈 队列 接口 介绍: 队列是FIFO(先进先出)抽象数据类型(ADT). 换句话说,按插入顺序将元素删除. java.util.Queue是Java 中的接口,并且从java.util.C ...
最新文章
- PCL_common模块api代码解析
- codevs——2894 Txx考试(背包)
- 大厂前实习生被威胁,“关闭开源项目,不然就告你”
- 程序员必练六大项目:从数据结构到操作系统,计算机教授为你画重点
- NND年年回家这么难买火车票
- html5后代选择符,css选择符有哪些?哪些属性可以继承?
- 使用a标签调用手机系统的一些小技巧(打电话、发短信)
- vue学习笔记-02-前端的发展历史浅谈mmvm设计理念
- canvas的getImageData和putImageDataAPI
- 如何在SQL Server中创建视图
- java虚拟机学习笔记 【3】
- C#事件-什么是事件
- 1114 Family Property (25 分)
- 【WPA TSP】基于matlab狼群算法求解旅行商问题【含Matlab源码 211期】
- 盘点论文免费下载的国内外网站
- 单链表的结构体定义与声明
- 用C语言编程取出八个球,带你解决C语言编程问题~之口袋放球取法
- Mezzanine Markdown的问题
- 个税局端服务器处理结果查询不到三方协议,「实用」电子税务局中三方协议验证失败如何处理?来看攻略啦!...
- 【FPGA基础篇】底层结构组成
热门文章
- 【xshell7免费下载安装】
- 分享一个电气仿真软件
- 黄淮学院计算机专业录取分数线2019,2018年黄淮学院艺术类本科专业录取分数线...
- 基于FPGA的FM信号解调
- 迅雷VIP尊享版系列
- 谷歌翻译停服后,chrome无法自动翻译?解决办法来了~ (最新)
- vb获取服务器文件路径,vb打开ftp服务器文件路径
- 计算机网络操作试题2级,计算机网络管理员操作模拟试题-二级.pdf
- 如何在零件层隐藏/显示SOLIDWORKS尺寸?
- JAVA计算机毕业设计智慧社区信息管理系统开发Mybatis+源码+数据库+lw文档+系统+调试部署