队—栈转换器探究和实现

队—栈转换器探究和实现

ID:6052880

大小:27.50 KB

页数:6页

时间:2018-01-01

队—栈转换器探究和实现_第1页
队—栈转换器探究和实现_第2页
队—栈转换器探究和实现_第3页
队—栈转换器探究和实现_第4页
队—栈转换器探究和实现_第5页
资源描述:

《队—栈转换器探究和实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、队—栈转换器探究和实现  摘要:队-栈转换器体现了栈和队列的两个重要线性结构的各种优点。队-栈转换器与队列和栈的入对栈相同,都是在一端进入,而出对栈不但可以在对栈顶(top)、对栈底(bottom)出对栈,还可以在对栈的任意位置出对栈,所以中间要加一个中间对栈指针(mid)。关键词:线性结构;队列;栈;对栈中图分类号:TP303文献标识码:A文章编号:1672-7800(2012)010-0017-02基金项目:西华师范大学校基金项目(10A009)作者简介:王天良(1986-),男,西华师范大学计算机学院硕士研究生,研

2、究方向为数据结构、网络安全;陈亚军(1965-),男,博士,西华师范大学物理与电子信息学院教授、硕士生导师,研究方向为电子信息技术、计算机应用技术、人工神经网络及应用。0引言6队列和栈是两个重要的线性结构。从数据结构的角度来看,队列和栈也是线性表,它们的特殊性在于队列和栈的基本操作是线性表操作的子集,它们是操作受限的线性表,因此可称为限定性的数据结构。但从数据类型角度看,它们是和线性表大不相同的两个重要抽象数据类型。由于它们广泛应用地各个软件系统中,因此在面向对象的程序设计中,它们是多型数据类型。1对栈转化器的概念为满足

3、系统功能需求,数据结构的算法也在不断地优化、发展,队列和栈的功能也出现了局限性,队列和栈的相互转换需要复杂的算法建立联系。可以在队列或栈前添加一个状态位(对栈转换器),方便地实现对栈的相互转换,提高算法的效率以及减少算法的时间复杂度。增加中间指针(mid),可以在指定位置添加或删除元素,具有一般线性表的特点,更加方便、灵活。队-栈不像队列和栈对插入、删除等操作的位置有严格的限定,但是也不像一般线性表对任意元素随意操作,它对数据的插入删除有严格的规定限制。对于对栈来说,表尾端称为对栈顶(top),相应地,对栈首称为对栈底(

4、bottom),对栈中间位置称为对栈间(mid)。假设对栈S=(a1,a2,…,an),则称a1为对栈顶元素。对栈中的元素按a1,a2,…,an的次序进对栈,还可以是a1和an中间的任意一个元素。这个特性可以用图1表示。2对栈的表示和实现对栈和其它线性表一样有两种存储方式:顺序对栈和链式对栈。2.1顺序对栈6顺序对栈占用一片连续的存储空间,它是利用一组地址连续的储存单元一次存放从对栈底到顶的所有元素。对栈顶用指针top指向的位置,指针bottom指向对栈底,mid指向对栈中间的任意位置,最初指向的元素与top一样,指向对

5、栈顶元素。2.1.1对栈的入对栈实现元素可以在对栈顶、对栈间、对栈底插入,在插入相应元素前先修改相应的top、mid、Bottom的值,再将元素插入。(1)对栈顶插入元素。对栈顶插入元素时,执行top=top+1后,将要插入的元素赋值给top所知的存储空间,同时,将top的值赋值给mid,保证在初始状态下top与mid保持一致,则对栈顶插入元素完成。(2)对栈底部插入元素。对栈底插入元素是对栈间插入元素的一个特殊位置,下面将会介绍。(3)对栈间插入元素。对栈间插入元素较为复杂,在每一次插入都要移动前面元素的位置,并且执行

6、完后再将top的值赋值给mid,保证它们在初始状态下保持一致。具体操作如下:执行mid=mid+i(i为状态值,插入元素的位置);将前i-1项元素依次向前移动一个存储空间,将要出入的元素赋值给mid指向的存储单元,最后执行mid=top,保证mid与top指向对栈顶元素,则操作完成。62.1.2对栈的删除实现删除对栈中的元素有三种方式:对栈顶删除、对栈底删除和对栈间删除。(1)对栈顶删除元素。对栈顶删除元素时对栈顶元素输出后将top减1。但是,由于对栈间指针bottom一开始和top指针同时指向对栈顶元素,所以在top减

7、1之前将bottom指针减1,保证mid与top同时指向对栈顶元素。(2)对栈底部删除元素。对栈底删除元素和队列删除元素一样都是将对栈底元素输出后将bottom加1。(3)对栈间删除元素。对栈间删除元素较为复杂,在每一次删除或入对栈过程完成后,mid都将回归到对栈顶元素处,即和top指针相同。如果将要把第i个元素删除,则执行mid=mid+i,使mid指向要删除元素的地址空间。再对mid指向的元素进行相应的操作。这时候就应该将第i个元素后面的元素依次向前提一个位置,保证对栈占用的是一片连续的存储空间。执行完后判断是否继续

8、执行,如果本次操作执行完后将mid重新指向对栈第一个元素,即mid=top,所以,每次操作完后,mid最终都要指向对栈顶元素。2.2链式对栈6链式对栈相对于顺序存储对栈对存储空间的连续性没有严格的要求,它的每一个元素前后都加了一个地址空间,元素前面一个指针域指向这个元素的前一个元素的地址,称为这个元素的直接前趋。元素

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。