数据结构:栈和队列
来源:互联网 发布:javascript精粹 编辑:程序博客网 时间:2024/06/16 14:13
栈的特点,并用日常例子来比拟?
答:栈(stack)中,被删除的是最近插入的元素:栈实现的是一种后进先出(last-in,first-out,LIFO)策略,就如同餐桌上摞起来待清洗的盘子,最后摞在顶端的盘子,会最先放入水槽中被清洗。
如何检测栈是否为空?
答:当S.top=0时栈中不包含任何元素,即栈是空的(empty),利用查询操作STACK-EMPTY。
什么叫栈下溢?
答:如果试图对一个空栈执行弹出操作,则称栈下溢(underflow)。
什么叫栈上溢?
答:如果栈的元素已满,即S.top超过n时,则称栈上溢(overflow)。
伪代码实现空栈检测,栈内压入元素,栈内弹出元素(前提:不考虑栈的上溢问题。)
答:
STACK-EMPTY(S)1 if S.top==02 return TRUE3 else return FALSEPUSH(S,x)1 S.top=S.top+12 S[S.top]=xPop(S)1 if STACK-EMPTY(S)2 error"underflow"3 else S.top=S.top-14 return S[S.top+1]
以上三种栈的执行时间为多少?
三种栈执行的时间都为O(1).
队列的特点,并用一个例子来比拟?
答:队列(queue)具有先进先出的特性类似于收银台前排队结账的一队顾客,队列有对头(head)和队尾(tail),当有一个元素入队时,它被放在队尾的位置,就像一个新来的顾客排在队伍的末端的位置,而出队的元素则总是在队头的那个,就像排在队伍前面等待最久的那个顾客一样。
什么时候队列是满的?
答:Q.head指向队头元素,Q.tail则指向下一个新元素将要插入的位置,当Q.head=Q.tail+1时,队列是满的。
什么时候队列是空的?
答:Q.head指向队头元素,Q.tail则指向下一个新元素将要插入的位置,当Q.head=Q.tail时,队列是空的。
伪代码实现入队(ENQUEUE)和出队(DEQUEUE)操作?
答:
ENQUEUE(Q,x)1 Q[Q.tail]=x2 if Q.tail==Q.length3 Q.tail=14 else Q.tail=Q.tail+1DEQUEUE(Q)1 x=Q[Q.head]2 if Q.head=Q.length3 Q.head =14 else Q.head=Q.head+15 return x
以上出队和入队的执行时间是多少?
答:出队和入队的操作时间都为O(1).
- 数据结构-栈和队列
- 数据结构-栈和队列
- 数据结构--栈和队列
- 数据结构-栈和队列
- 数据结构-栈和队列
- 数据结构 栈和队列
- 数据结构-栈和队列
- 数据结构-栈和队列
- 数据结构-栈和队列
- 数据结构:栈和队列
- 数据结构-栈和队列
- 数据结构--栈和队列
- 【数据结构】队列和栈
- 数据结构--栈和队列
- 【数据结构】-栈和队列
- 数据结构 栈和队列
- 数据结构-栈和队列
- 【数据结构】栈和队列
- 欢迎使用CSDN-markdown编辑器
- Ehcache 缓存(二)xml配置相关
- 企业帐号进行IPA的打包、分发、下载安装的详细流程(转载)
- java dynamic web project的一个最简单的例子
- OC_工厂模式
- 数据结构:栈和队列
- 设计模式:模板方法模式(Template Method)
- CentOS通过日志反查入侵
- java各种成员的初始化顺序
- 机器学习(周志华) 参考答案 第十一章 特征选择与稀疏学习 11.1
- openfire主要插件介绍
- 设计模式:解释器模式(Interpreter)
- 欢迎使用CSDN-markdown编辑器
- 在linux中安装mysql