栈只能顺序存储,这句话不对。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom)。
一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈也称为后进先出表。线性表可以顺序存储,也可以链式存储,因此栈也可以采用链式存储结构。
扩展资料:
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。在i386机器中,栈顶由称为esp的寄存器进行定位。压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。
栈在程序的运行中有着举足轻重的作用。最重要的是栈保存了一个函数调用时所需要的维护信息,这常常称之为堆栈帧或者活动记录。堆栈帧一般包含如下几方面的信息:
1、函数的返回地址和参数。
2、临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临时变量。
链式存储结构的特点:
1、比顺序存储结构的存储密度小(链式存储结构中每个结点都由数据域与指针域两部分组成,相比顺序存储结构增加了存储空间)。
2、逻辑上相邻的节点物理上不必相邻。
3、插入、删除灵活 (不必移动节点,只要改变节点中的指针)。
4、查找节点时链式存储要比顺序存储慢。
5、每个节点是由数据域和指针域组成。
6、由于簇是随机分配的,这也使数据删除后覆盖几率降低,恢复可能提高。
顺序存储结构的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。
采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。但顺序存储方法的主要缺点是不便于修改,对结点的插入、删除运算时,可能要移动一系列的结点。
参考资料:百度百科-栈
参考资料:百度百科-链式存储结构
参考资料:百度百科-顺序存储结构
这句话是正确的,这里的顺序存取应该指的是对元素的顺序操作,他们的存取位置的限制是不同的,站只能在一头进行操作,队列只能一边进行存储另一边读取元素,所以说他们的存取位置的限制是不同的。
栈又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。
扩展资料:
栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
堆栈帧一般包含如下几方面的信息:
1、函数的返回地址和参数。
2、临时变量,包括函数的非静态局部变量以及编译器自动生成的其他临时变量。
循环队列的入队算法如下:
1、tail=tail+1。
2、若tail=n+1,则tail=1。
3、若head=tail,即尾指针与头指针重合了,表示元素已装满队列,则作上溢出错处理。
4、否则,Q(tail)=X,结束(X为新入出元素)。
进栈(PUSH)算法
1、若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作2)。
2、置TOP=TOP+1(栈指针加1,指向进栈地址)。
3、S(TOP)=X,结束(X为新进栈的元素)。
退栈(POP)算法
1、若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作2)。
2、X=S(TOP),(退栈后的元素赋给X)。
3、TOP=TOP-1,结束(栈指针减1,指向栈顶)。
参考资料来源:百度百科-队列
参考资料来源:百度百科-栈
必然了,栈的地址是SS+SP得到的,我要是把sp改了,你再push,pop你看还顺序吗
线性表,栈,队列的优缺点,异同
在一个程序中需要同时使用具有相同数据类型的两个栈,可以为这两个栈用数组模拟创建共享空间,称为双向栈。两栈共享空间:使用一个数组来存储两个栈,让一个栈的栈底为该数组的始端,另一个栈的栈底为该数组的末端,两个栈从各自的端点向中间延伸。共同点:都有顺序结构和链式结构,都是只能在线性表...
栈的存储结构
栈的具体实现 栈是一种 "特殊" 的线性存储结构,因此栈的具体实现有以下两种方式:顺序栈:采用顺序存储结构可以模拟栈存储数据的特点,从而实现栈存储结构;链栈:采用链式存储结构实现栈结构;栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 "存" 和 "取" 的过程有特殊的要求:栈只能...
栈的特点是什么? 个人理解栈的内容特点是:从哪来回哪去!不知对不对
2,具有记忆功能,栈的特点是先进栈的后出栈,后进栈的先出栈,所以你对一个栈进行出栈操作,出来的元素肯定是你最后存入栈中的元素,所以栈有记忆功能。3,对栈的插入与删除操作中,不需要改变栈底指针。4,栈可以使用顺序存储也可以使用链式存储,栈也是线性表,因此线性表的存储结构对栈也适用 线性...
栈与队列有什么区别和联系?
不能在中间或队列尾进行操作。虽然栈和队列在实现细节上有所不同,但它们的基本原理是相似的。它们都是将元素按照一定顺序存储,并且支持在特定位置进行插入和删除操作,只是插入和删除的顺序不同。在某些情况下,栈和队列可以相互转化,例如使用两个栈模拟一个队列,或使用两个队列模拟一个栈。
计算机二级考试《公共基础》100题
C) 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 17、下列叙述中正确的是 A) 栈是一种先进先出的线性表 B) 队列是一种后进先出的线性表 C) 栈与队列都是非线性结构 √D) 栈与队列都是线性结构 18、一棵完全二叉树共有360个结点,则在该二叉树中度为1的结点个数为 A) 0 √B) 1 C...
栈与队列的区别
2、对插入和删除操作的"限定"不同。栈是限定只能在表的一端进行插入和删除操作的线性表。队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。3、遍历数据速度不同。栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持...
全国计算机二级visual foxpro上机考试的具体题型是什么
(1)数据的存储结构是指A) 存储在外存中的数据B) 数据所占的存储空间量C) 数据在计算机中的顺序存储方式D) 数据的逻辑结构在计算机中的表示(2)下列关于栈的描述中错误的是A)栈是先进后出的线性表B) 栈只能顺序存储C) 栈具有记忆作用D) 对栈的插入与删除*作中,不需要改变栈底指针(3)对于长度为n的线性表...
栈的顺序存储和链表存储的差异?
2、线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 即:线性表逻辑上相邻、物理也相邻(逻辑与物理统一:相邻数据元素的存放地址也相邻),则已知第一个元素首地址和每个元素所占字节数,则可求出任一个元素首地址。 优点: 1、无须为表示结点间的逻辑关系而增加额外的存储空间。2、可以方便...
湖北第二师范《数据结构》题,哪位高手帮忙看看?
1.对 2.对 ?3.对 <栈和队列都是线性结构,可以顺序存储, 也可以链式存储。散列存储:是通过一个哈希函数 直接确定数据元素的存储地址。> 4.错。 <有可能是单枝树 ,即:树只有左子树 或只有右子数> 5.错。<最小生成树因采用的生成方法不同会有不同的生成树,但是其权值之和唯一 均相同...
栈的入栈和出栈的顺序规律是什么?
入栈的顺序规律是排在前面的先进,排在后面的后进。栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素...