栈和队列的思想应用
来源:互联网 发布:php 代理教程 编辑:程序博客网 时间:2024/05/20 18:52
栈和队列的应用
在日常生活中,很多问题可以归结到栈和队列的应用问题。例如,排队购物的现象就可以看做是队列。在计算机学科的应用中,栈和队列的应用就更多了,例如,编译系统、消息队列等。
栈的应用
栈具有相当广泛的实际应用,例如,可以颠倒数据串的次序、为回溯算法提供支持、实现自动机等。
1.编译应用
栈可以应用于括号匹配、行编辑器、表达式求值、算法优先文法等编译程序中。例如,在表达式中,一般存在大、中、小三种括号,分别定义为“{}”、“[]”和“()”,要求其只能自我匹配,不能交互匹配,比如“{[()]}”、“[()()()]”等均为正确匹配,而“({]”、“(])[”、“)(]}”等均为错误匹配。使用栈检测括号是否匹配的算法描述如下:
2.转置应用
一串数据全部进入栈后再全部出栈,将得到一个次序完全相反的数据串,这是栈的特性之一。因此,栈可以应用于转置操作,例如,数的进制转换等。
例子:已知线性链表L,请按从表尾到表头的顺序输出元素。
【解析】从头到尾遍历链表,同时将链表元素入栈,再依次出栈,并打印元素信息即可。其算法描述如下:
3.迷宫问题
迷宫问题是指在迷宫中从入口寻找出口的问题。此类问题的本质是将迷宫建模成图,将迷宫中的点建模为图中的点,将迷宫中相连并且相通的两点建模为图中的一条边,一般采用矩阵方式存储图,这样迷宫求解就转化为图的遍历,采用回溯法穷举所有从入口点到出口点之间的路径即可。
迷宫问题求解算法中一般使用一个栈来存储访问过的顶点信息,栈中元素(即顶点信息)由顶点位置和搜索方向两部分组成,前者记载该顶点在迷宫中的位置,后者记载下一个顶点的访问方向,例如,右、下、左、上四个相连的方向,编程时可分别使用枚举类型enum表示。
队列的应用
队列是一种相当实用的数据结构,可应用于生产、生活的各个方面,例如,共享打印机、消息队列和广度优先搜索等。
1.共享打印机
目前,打印机提供的网络共享打印功能采用了缓冲池技术,队列就是实现这个缓冲技术的数据结构支持。每台打印机具有一个队列(缓冲池),用户提交打印请求被写入到队列尾,当打印机空闲时,系统读取队列中第一个请求,打印并删除之。这样,利用队列的先进先出特性,就可完成打印机网络共享的先来先服务功能。
2.消息队列
操作系统中的消息队列也是队列的应用之一,消息队列遵循先进先出的原则,如图2-5所示,发送进程将消息写入队列尾,接收进程则从队列头读取消息。
- 栈和队列的思想应用
- 栈和队列的应用
- 算法小菜鸟之队列和栈的入门思想,
- 栈和队列应用
- 栈和队列的应用-魔王语言
- 数据结构----栈和队列的综合应用
- 数据结构 栈和队列的一些应用
- 实验二 栈和队列的应用
- 表达式求值-栈和队列的应用
- 栈和队列的实际应用
- c#栈队列的实现和应用
- 队列和栈的应用 ------ 停车场
- 双向队列 和 栈的应用
- 栈和队列的基本应用
- 栈和队列的简单应用
- 数据结构----栈和队列的综合应用
- 栈和队列的简单应用
- 栈和队列的应用:迷宫问题
- OCP-1Z0-052-V8.02-101题
- 使用AbsListView OnScrollListener简单实现android ListView的分页
- java.lang.ClassCastException: android.app.Application cannot be cast to serialport_api.sample.App问题
- ICCV2013 录用论文(目标跟踪相关部分)
- DC/DC和LDO的区别
- 栈和队列的思想应用
- eric4中出现Could not start Qt-Designer. Ensure that it is available as designer.
- 求长方体面积和周长
- cvpr13 运动估计
- 联合体
- jquery ias插件详解
- 第8周项目1-求简分段函数的值
- Unity3d 固定一段时间进入某个方法
- Android4.2模拟器kernel下载及编译-linux kernel3.4.0