栈是先进先出的线性表什么线性表

什么是数据栈?——线性表
栈是限定仅在表头进行插入或删除的操作的线性表。
栈,zhan,从木从戋。牲口棚,马鹏。
储存货物或供旅客住宿的房屋:货栈。客栈。栈房。
竹木编成的遮蔽物或其他东西:马栈(养马的竹木棚)。栈车(古代用竹木编成棚的车子)。
用木料或其他材料架设的通道:栈道。栈桥(一种形似桥梁的建筑物,用于装卸货物、上下旅客等)。
通过,越过:栈山航海。
二、计算机术语
定义:栈是限定仅在表头进行插入和删除操作的线性表。要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。
首先系统或者数据结构栈中数据内容的读取与插入(压入push和 弹出pop)是两回事!插入是增加数据,弹出是删除数据 ,这些操作只能从栈顶即最低地址作为约束的接口界面入手操作 ,但读取栈中的数据是随便的没有接口约束之说。很多人都误解这个理念从而对栈产生困惑。 而系统栈在中又起到一个跨部件交互的媒介区域的作用 即 cpu 与内存的交流通道 ,cpu只从系统给我们自己编写的应用程序所规定的栈入口线性地读取执行指令, 用一个形象的词来形容它就是pipeline(管道线、流水线)。cpu内部交互具体参见 EU与BIU的概念介绍。
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
栈可以用来在函数调用的时候存储断点,做递归时要用到栈!
以上定义是在经典中的解释。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点到底什么是数据结构之栈和队列
逻辑结构之栈和队列
栈和队列是应用非常广泛的数据结构,他们都来自线性表数据结构,但是他们是受限的线性表,他们限定了数据插入和删除的位置,在表的两端进行。
栈:限定只能在表的一端进行插入和删除操作的线性表,栈是先进后出的。栈只允许在表尾进行插入和删除。
队列:限定只能在表的一端进行插入和在另一端进行删除操作,队列是先进先出的。队列只允许在表尾一端进行插入,在表头进行删除。
一、基本概念
栈:是限制在表的一端进行插入和删除操作的线性表,或者称为先进后出或者后进先出的线性表。
栈底:是固定端,又称为表头。
栈顶:允许进行插入和删除操作的一端,又称为表尾。用栈顶指针来指示栈顶元素。
空栈:当表中没有元素时称之为空栈。
硬堆栈:利用CPU中的某些寄存器组或类似的硬件又或使用内存中的特殊区域来实现。这类堆栈容量非常有限,但是速度非常快。
软堆栈:这类堆栈在内存中实现,堆栈的容量可以很大。在实现方式上,又有动态方式和静态方式。
栈的抽象数据类型定义:
& &数据对象;
& &数据关系;
&基本操作:初始化,进栈,出栈,取栈顶元素等;
二、栈的存储
栈的顺序存储
栈的顺序存储结构简称为顺序栈,和线性表相类似,用一维数组来存储栈。根据数组是否可以根据需要增大,又可以分为动态顺序栈和静态顺序栈。
栈的动态顺序存储:采用动态一维数组来存储栈。用bottom表示栈底指针,栈底是固定不变的;而栈顶则是随着进栈和出栈操作发生变化的。栈顶用top表示,总是指向栈顶元素的下一个存储位置。结点进栈:首先将数据元素保存到栈顶,然后执行top+1,使得top指向下一个存储位置。&&
栈的静态顺序存储:采用静态一维数组来存储栈。栈底是固定不变的。栈顶则是随着进栈和出栈不同的,每次top指向栈顶元素的位置。结点进栈:首先执行top+1,使得top指向栈顶的位置,然后将元素存储在栈顶。
栈的链式存储
&栈的链式存储结构称为链栈。是运算受限的单链表。其插入和删除操作只能在表头进行。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。说明线性表、栈与队的异同点_百度知道
说明线性表、栈与队的异同点
说明线性表、栈与队的异同点
我有更好的答案
都有顺序结构和链式结构;栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按&后进先出&的规则进行操作,而队列必须按&先进先出&的规则进行操作。和线性表相比,它们的插入和删除操作受更多的约束和限定,故又称为限定性的线性表结构。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。queue(线性表)_百度百科
清除历史记录关闭
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
(线性表)
队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
在队列这种数据结构中,最先插入在元素将是最先被删除;反之最后插入的元素将最后被删除,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。
队列空的条件:front=rear
队列满的条件: rear = MAXSIZE
队列可以用Q[1…m]来存储,数组的m即是队列所容许的最大容量。在队列的运算中需设两个:head,队头指针,指向实际队头元素的前一个位置;tail,队尾指针,指向实际队尾元素所在的位置。一般情况下,两个指针的初值设为0,这时队列为空,没有元素。图1 ( a)画出了一个由6个元素构成的队列,数组定义Q[1…10]。Q(i) i=3,4,5,6,7,8头指针head=2,尾指针tail=8。队列中拥有的元素个数为:L=tail-head现要让排头的元素出队,则需将头指针加1。即head=head+1这时头指针向上移动一个位置,指向Q(3),表示Q(3)已出队。见图1 (b)。如果想让一个新元素入队,则需尾向上移动一个位置。即tail=tail+1这时Q(9)入队。当队尾已经处理在最上面时,即tail=10,如果还要执行入队操作,则要发生&上溢&,但实际上队列中还有三个空位置,所以这种溢出称为&&。
克服假溢出的方法有两种。一种是将队列中的所有元素均向低地址区移动,显然这种方法是很浪费时间的;另一种方法是将存储区看成是一个首尾相接的环形区域。当存放到n地址后,下一个地址就&翻转&为1。在结构上采用这种技巧来存储的队列称为。
队列和栈一样只允许在端点(前端或者后端)处插入和删除元素。
循环队的入队算法如下:
1、tail=tail+1;
2、若tail=n+1,则tail=1;
3、若head=tail尾与头指针重合了,表示元素已装满队列,则作上溢出错处理;
4、否则,Q(tail)=X,结束(X为新入出元素)。
队列和栈一样,有着非常广泛的应用。
queue队列的基本运算
(1)初始化队列 Qini (Q)
(2)入队 QADD(Q,X)
(3)出队 QDel(Q,X)
(4)判断队列是否为空 qempty(Q)
(5)判断队列是否为满qfull(Q)
queueC++中的应用
queue类是为程序员提供了一个队列的功能的容器适配器,具体而言,一个FIFO(先入先出)的数据结构
在头文件&queue&中定义(在程序开头输入#include &queue&,切记不可写为#include &queue.h&)。
template&&class&T,&class&Container&=std::deque&T&&&&class&
queue成员函数
empty判断队列q是否为空,当队列q空时,返回否则为false(值为0(false)/1(true))。size访问队列q中的元素个数。不可写成sizeof(q)或size(q)push会将一个元素a置入队列q中front返回队列q内的第一个元素(也就是第一个被置入的元素)。(不可写成front(q))back()会返回队列q中最后一个元素(也就是最后被插入的元素)。(不可写成back(q))pop()会从队列q中移除第一个元素。(不可写成pop(q))注意:pop()虽然会移除下一个元素,但是并不返回它。
front()和back()返回下一个元素但并不移除该元素。
在stack库中的函数与queue很类似,但是stack中要返回元素时,只能返回最后一个元素,且函数名不一样(stack中为s.top()),需要区分。[1]
.cplusplus[引用日期]
Nicolai M.Josuttis(侯捷/孟岩 译).The C++ Standard Library(C++标准程序库):华中科技大学出版社,2009:445-446
清除历史记录关闭> 问题详情
栈(Stack)是限定仅在(18)进入插入或删除操作的线性表。对栈来说,表尾端称为(18);表头端称为(18)。A
悬赏:0&答案豆
提问人:匿名网友
发布时间:
栈(Stack)是限定仅在(18)进入插入或删除操作的线性表。对栈来说,表尾端称为(18);表头端称为(18)。A.表头 栈顶(top),栈底(bottom)B.表头,栈底(bottom)栈顶(top)C.表尾,栈顶(top)栈底(bottom)D.表尾,栈底(bottom)栈顶(top)请帮忙给出正确答案和分析,谢谢!
权威推荐: & &
为您推荐的考试题库
您可能感兴趣的试题
1在计算机执行的各种指令中,有些指令的操作数部分是地址。若想变址的话,则在指令执行前,应先将操作数部分的地址与指定的(19)中的地址值相加,从而求出有效地址。A.基寄存器B.变址寄存器C.存储寄存器D.指令地址寄存器2计算机网络的功能十分强大,总结起来其主要表现在(20)。①硬件资源共享②软件资源③数据A.①②③B.②③C.①③D.①②3按通信方式,一个网络可以分为点对点传输网络和广播式传输网络两类。总线型网络和星型网分别属于(21)。A.点对点传输网络和广播式传输网络B.点对点传输网络和点对点传输网络C.广播式传输网络和广播式传输网络D.广播式传输网络和点对点传输网络4双绞线是计算机网络中常用的有线通信介质,其绞合的目的是(22)。A.增大传输距离B.提高传送速度C.增强抗拉性D.减少外界干扰
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
找答案会员
享三项特权
找答案会员
享三项特权
找答案会员
享三项特权
选择支付方式:
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:}

我要回帖

更多关于 一个递归算法必须包括 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信