队列学习(2)
来源:互联网 发布:java多线程售票系统 编辑:程序博客网 时间:2024/06/06 00:31
1、 在链队列中,即使不设置尾指针也能进行入队操作。
分析:使用不设置尾指针的链表作为链队列的存储结构,在进行入队操作的时候需要遍历整个链队列至队尾,然后再进行插入。这是可行的,但是效率下降。
如果只使用一个指针又要保持效率的话,可以使用只带尾指针的循环单链表作为存储结构,这样出队和入队的开销都是O(1).
2、 设循环队列存储空间Q(1:35),初始状态为front = rear =35.现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数:0 or 35
分析:循环队列是将队列首尾相连而成。
第一种情况:
循环队列元素个数:n=(rear – front+MAXSIZE)modMAXSIZE,
其中rear表示队尾,front表示队首,MAXSIZE表示队列最大容量,mod表示取余。带入数据得 n=0;
第二种情况:
队列是从队头删除元素,队头指针追赶队尾指针,从队尾增加元素时,队尾指针追赶队头指针,存在队满时,头尾指针相等的情况,即为35.
3、 循环队列也存在空间溢出问题。
分析:循环队列解决的是“假溢出”问题,但是仍然出现真正的溢出问题。假溢出指的是下标溢出,真溢出指的是空间溢出。
循环队列面临着数组可能溢出的问题。
4、 循环队列存储在数组A[0,1,……m],则入队时的操作为:rear=(rear+1)mod(m+1)
5、 解析XML时,需要检验节点是否闭合,如必须有与之对应,用栈数据结构实现比较好。
分析:栈是解决封闭对应问题的有效方法。
比如在解析XML中,遇到一个<demo>左标签就入栈,遇到其子标签的左标签同样入栈。遇到右标签(或者子标签的右标签)就检验栈顶元素是否与该右标签对应,能对应就出栈,不能对应则说明标签不对称,是无效的XML文件。
栈的应用:符号匹配,表达式求值,实现函数调用
栈的应用:
递归(存放局部变量,返回地址等,不过该栈是操作系统提供的栈)、
快速排序(非递归程序用栈实现):栈中存放要进行一遍快排的起始位置,利用栈先进后出的方式,模拟递归的过程。
表达式求值:将中序表达式转换成前序或者后序,需要用栈存放符号。
树的深度优先遍历,用栈记录遍历过的元素,以便进行回溯。
6、 便于插入和删除的容器:list、map、set
分析:list(底层数据结构为双向链表,支持快速增删)、
map 、set(都是STL关联容器,支持快速增删)
vector(底层数据结构为数组,支持快速随机访问)
7、 全局变量和静态变量存于全局区/静态区;
局部变量存于栈区;
new的对象存于堆区;
malloc的对象存于堆区;
常量存于常量区;
8、 递归先序遍历一个n节点,深度为d的二叉树,需要栈空间的大小为:O(d)
分析:因为二叉树不一定是平衡的,也就是深度d!=log n,有可能d>>log n。所以栈的大小应该是O(d)
在从根向下遍历中,每次先转移到左子树上,而右边则需要暂存起来,因此需要的暂存空间需要d个。
二叉树深度d满足:log n <= d <=n
完全二叉树深度d=log N+1,题目未说明是否为完全二叉树。
9、 堆栈溢出一般是因为:
循环的递归调用(涉及到压栈入栈)、
大数据结构的局部变量(局部变量存储在栈区)
- 队列学习(2)
- 数据结构学习-栈与队列(2)
- FreeRTOS学习2--队列
- 队列学习(3)
- 数据结构学习笔记 --- 队列(链队列)
- 数据结构学习笔记 --- 队列(链队列)
- 一秒会用优先队列(学习)
- FreeRTOS学习------队列(实践)
- 嵌入式学习15(队列)
- 学习笔记(2)——栈和队列
- 学习记录2:优先队列 (二叉堆实现)
- rabbitMQ消息服务器学习笔记(java)2 工作队列
- 学习队列
- 队列学习
- 队列学习
- 队列学习
- 队列学习
- 0521学习总结(循环队列,链式队列)
- 正则表达式的JS验证
- Java 通过Request请求获取IP地址
- spring框架入门
- 数字校验的正则表达式
- VS2013的LINK2005问题解决方案(仅限由第三方库造成的问题)+ 附LNK2038
- 队列学习(2)
- Android编程心得-使用Application类保存应用的全局数据
- 国际化乱码类型
- HTML CSS笔记
- 添加时间联系人添加两次,两次请求
- [LeetCode]501. Find Mode in Binary Search Tree
- 第十三周:( LeetCode583) Delete Operation for Two Strings(c++)
- 仿微信:Activity跟随手指滑动效果SlideFinishActivity
- Android开发之RecyclerView的基本使用(实现常用的4种效果)