从线性表谈到栈与队列_第1页
从线性表谈到栈与队列_第2页
从线性表谈到栈与队列_第3页
从线性表谈到栈与队列_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、从线性表谈到栈与行列摘要:数据布局是盘算机中一个非常紧张的分支,它是实际天下数据与盘算机天下数据毗连的关键,它重要涵盖两方面的内容:逻辑层面的数据布局及盘算机存储数据物理层的数据布局。关于数据布局中的线性表、栈、行列,文章将上述两方面的内容举行先容,举行横向的比力,从而更明晰地看到它们之间的接洽与区别。并阐发它们在实际盘算中的应用。关键词:线性表;堆栈;行列中图分类号:tp311.12文献标识码:a文章编号:1006-8937202217-0081-021逻辑干系线性表。线性表是有限元素a1,a2,a3,an有序序列的聚集,a1,a2,an都是完全雷同布局的数据范例,同时它们之间的摆列严酷有序

2、,此中任何元素都对应唯一的前驱以及唯一的后继。如许一个序列可以有查询、删除、插入行列任何位置的数据操纵。堆栈。堆栈也是一个有序序列的聚集,布局上与线性表划定一样。但它的运算受到严酷的限定故也叫限定性线性表。这个序列中我们只能从一端取出放入数据,即压入栈和弹出栈,以是它的挨次是“先辈先出,如图1所示。行列。行列与栈雷同,属于限定性线性表,它的操纵差异的地方是两头存、取数据,且仅仅是一端取队头一端队尾,以是它的数据是“先入先出。2物理布局2.1挨次布局1线性表。用必然巨细的数据来存放线性表,数组长度代表线性表的长度,元素在数组的位置代表元素在线性表的位置。但对数组中元素不克不及跳跃插入,由于线性表

3、中元素是挨次且毗连着的,不像数组中心可以空元素。同时删除元素时,必需大量挪动剩下的元素,由于必需实现其一连性。插入元素同样必要大量挪动数据。因此如许存储的运行服从并不敷高。以是对付有着频仍插入和删除运算的线性表,是不得当接纳挨次存储的。2堆栈。雷同于线性表,利用数组存储,只从这个数组的一端插入和删除数据,不存在从中心“挖数据,故不存在大量数据挪动的题目,唯一不敷的是数组巨细是有限的,会存在栈满的征象。假设数组巨细界说过大,那么又有大量存储空间没有被利用,会有资源白费。3行列。初始存储雷同于线性表,但由于只能从一边进入另一边出,以是数据会随着数据操纵而不竭“进步,使行列像一条“蠕虫一样逐步“爬过

4、行列界说的全部空间,而且“爬过的空间就无法再次得到运用。“蠕虫爬到数组止境之后那么无法进步,而此时很大概数组前端尚有大量的数据未得到利用。因此我们将一个数组看作是“相连的,马上整个数组看做一个环形,而行列“蠕虫那么会在这个环形轨道中一连“爬动,直到数据装满整个数据空间。但这里尚有第二个题目,如许的界说之后行列空与满,指向队头的frnt与指向队尾的rear所处的相对位置是完全一样的,如图2、图3所示。如许一个雷同于“活塞的东西,它总是紧邻行列中第一个数据元素,是可以挪动的,但它自己不存放任何数据。同时将队头指针指向这个“活塞,那么队空与队满的辩论环境就得以制止,如图4、图5所示。2.2链式由于数

5、组的静态分派、不易扩大、插入删除会有大量数据挪动等种种范围性,我们引入链式存储方法。通过动态分派存储空间,最有用地利用空间。线性表:通过动态分派,分派物理上不必然相邻的存储单位。为表现他们的一连性毗连性,再在分派这个存储单位时,附加一部门存储单位指针域也叫链接域来指出这个元素的后继元素的存储地点。如许前面出现的删除时间庞大度高算法服从低的题目就得到了办理。但凡事都有两面性,插入删除操纵固然高效,但它在查寻上的服从却不如数组方法,它无法拜候恣意位置的元素,也无法根据如今所处的位置urrent指针处去拜候它前面的数据。对付这些不敷,我们也提出一些办理方案,通过循环链表将尾部的链接指向线性表的头部或

6、通过双向链表元素中增长指针,指针指向直接前驱元素。如许的链式存储多节流了操纵的时间,但必要更多的存储空间。堆栈:雷同于线性表的链式存储,而且它的操纵更为简朴。这种存储相对付挨次存储,链式的堆栈根本上没有栈满的环境,存储如图6所示。栈头是末了进入的数据,栈尾是先辈入的数据。行列:与前面雷同,详细存储如图7所示。3应用举例线性表。一个数据表利用事后,大概下次还会再次被利用。好比输入某汉字,首屏一样平常是常用汉字,那么就必要通过翻屏寻到用户必要的汉字,一样平常利用过一次后,接下来很大几率再次利用它。汉字可以以链表中结点存储,而第一屏仅表现链表前面多少汉字,故要将之前利用过的汉字挪动到第一结点的位置,

7、进步汉字录入服从。这是根据结点的利用埋伏概率来决定存放的位置,假设不克不及获得每个结点的埋伏利用概率,可以接纳前移一个位置的要领,利用越多,前移越多。堆栈。起首是背包题目,假设有一个能包容总体积为t的背包,尚有n个别积别离是1,2n个物品,现要在这几件物品中选出多少件物品恰恰装满背包,求满意条件的全部解。然后接纳实验回逆法,从0号物品开始挨次拔取物品,假设可以装入背包装入后不满,那么将该物品的编号进栈。假设当前选定的物品k装不进去装入后体积大于t选择下一个物品k+1实验装入。假设尚未求得解,又已无物品可选,那么说明上一个装入的物品不符合,将堆栈退出一个背包编号,再从这个退出的编号的下一个编号物

8、品实验。每求出一组解,输出效果,再退出栈顶数据,再从当前退出的编号的下一个标号物品实验,直到堆栈为空无退栈数据且到达最大编号行列。以列车重排举行阐发,一列货运列车共有n节车厢,每节车厢将停放在差异的车站。假定n个车站的编号别离为1n,即货运列车根据第n站至第1站的序次颠末这些车站。为了便于从列车上卸掉相应的车厢,车厢的编号应与车站的编号雷同,如许,在每个车站只需卸掉末了一节车厢。以是,给定恣意序次的车厢,必需重新摆列他们。假定重排n个车厢,可利用k个缓冲轨,将每个缓冲轨当作是一个行列,用nut表现下一个输出至出轨的车厢编号。火车车厢重排的算法用伪代码形貌如下:别离对k个行列初始化;初始化下一个有爱输出的车厢编号nut=1;依次取入轨中的每一个车厢编号。假设入轨中的车厢编号即是nut,那么输出该车厢:nut+。不然,思量每一个缓冲轨行列:frj=1;j=k;j+,取行列j的仇家元素。假设=nut,那么将行列j的仇家元素出队并输出:nut+。假设入轨和缓冲轨的仇家元素没有编号为nut的车厢,那么求小雨入轨中第一个车厢编号的最大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论