[整理III]微软等100题系列V0.1版之三:栈、堆、队列面试题集锦
July
==============
2.设计包含min函数的栈。
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
29.栈的push、pop序列
题目:输入两个整数序列。其中一个序列表示栈的push顺序,
判断另一个序列有没有可能是对应的pop顺序。
为了简单起见,我们假设push序列的任意两个整数都是不相等的。
比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。
因为可以有如下的push和pop序列:
push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,
这样得到的pop序列就是4、5、3、2、1。
但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。
34.
实现一个队列。
队列的应用场景为:
一个生产者线程将int类型的数入列,一个消费者线程将int类型的数出列
35.
求一个矩阵中最大的二维矩阵(元素和最大).如:
1 2 0 3 4
2 3 4 5 1
1 1 5 3 0
中最大的是:
4 5
5 3
要求:(1)写出算法;(2)分析时间复杂度;(3)用C写出关键代码
57.用俩个栈实现队列。
题目:某队列的声明如下:
template<typename T> class CQueue
{
public:
CQueue() {}
~CQueue() {}
void appendTail(const T& node); // append a element to tail
void deleteHead(); // remove a element from head
private:
T> m_stack1;
T> m_stack2;
};
分析:从上面的类的声明中,我们发现在队列中有两个栈。
因此这道题实质上是要求我们用两个栈来实现一个队列。
相信大家对栈和队列的基本性质都非常了解了:栈是一种后入先出的数据容器,
因此对队列进行的插入和删除操作都是在栈顶上进行;队列是一种先入先出的数据容器,
我们总是把新元素插入到队列的尾部,而从队列的头部删除元素。
66.颠倒栈。
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。
颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。
-----------------------------------------------------
1.关于本微软等公司数据结构+算法面试100题系列V0.1版的郑重声明
http://blog.csdn.net/v_JULY_v/archive/2010/12/02/6050133.aspx
2.完整100题,请参见,
[珍藏版]微软等数据结构+算法面试100题全部出炉[100题首次完整亮相]
http://blog.csdn.net/v_JULY_v/archive/2010/12/06/6057286.aspx
3.更多详情,请参见,本人博客:
My Blog:
http://blog.csdn.net/v_JULY_v
4.所有的资源(题目+答案)下载地址:
http://v_july_v.download.csdn.net/
5.本微软等100题系列V0.1版,永久维护(网友,思路回复)地址:
http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html
作者声明:
本人July对本博客所有任何内容和资料享有版权,转载请注明作者本人July及出处。
永远,向您的厚道致敬。谢谢。July、二零一零年十二月十七日。
分享到:
相关推荐
uCOSIII是uCOS系列的第三个版本,它提供了许多高级功能,如优先级继承、优先级抢占、任务信号量、互斥信号量、事件标志组、内存管理以及我们这里关注的任务消息队列。消息队列是RTOS中的一个重要组件,用于在并发...
uC/OS-III是一个著名的实时操作系统(RTOS),广泛应用于嵌入式系统,提供了多任务调度、内存管理、信号量、事件标志组等多种服务,其中包括消息队列,它是实现任务间通信的重要机制。 消息队列是uC/OS-III中的一种...
1. **性能优化**:V8.0版本提升了软件运行速度,使得程序编写和调试过程更加流畅,大大提高了工作效率。 2. **增强的诊断功能**:新增了更强大的错误检查和诊断工具,能够及时发现并解决潜在问题,降低设备故障率。 ...
结合uCOS-III和循环队列的串口数据收发方式,实时性好。接收方面,使用STM32的总线空闲中断判断数据包接收完毕并发布消息,使用状态机检查数据包正误。发送方面,采用中断的方式发送数据,避免程序死等数据发送完毕...
UCOSIII(uC/OS-III)是由Micrium公司开发的一种嵌入式实时操作系统(RTOS),它提供了多任务调度、内存管理、信号量、事件标志组、互斥锁、定时器以及消息队列等核心功能。UCOSIII特别适合在资源有限但需要复杂控制...
"电路"邱关源第五版课后习题答案pdf 本资源为《电路》邱关源第五版课后习题答案pdf,包含了电路模型和电路定律、电阻电路的等效变换、电阻电路的一般分析方法等部分的习题答案和解析。 电路模型和电路定律 在...
《2024年CFA三级课后题自行整理版本》是一个专为CFA三级考生精心准备的学习资源,包含了从L3 Vol 1到L3 Vol 6的完整课后习题集。CFA(Chartered Financial Analyst)是全球投资管理业最为权威的专业资格认证,其考试...
在嵌入式操作系统领域,uCOS-III是一个广泛使用的实时操作系统(RTOS),它为开发者提供了高效、可扩展的多任务环境。消息队列是uCOS-III中的一个重要组件,用于进程间通信(IPC)。本文将深入探讨在uCOS-III系统下...
本面试题的核心是使用双指针技巧来反转字符串中的单词,这是一个常见的编程挑战,旨在考察候选人的逻辑思维和对C语言基础知识的掌握程度。 首先,我们需要理解题目要求。反转字符串中的单词意味着保持每个单词的...
3. **UCOSIII消息队列**:深入学习UCOSIII的消息队列API,包括创建、发送、接收消息等函数,以及消息队列的容量限制、阻塞与非阻塞模式的使用。 4. **嵌入式驱动开发**:STM32H743上的外设驱动编写,如串口通信、...
UCOSIII(MicroC/OS-III)是一款实时操作系统(RTOS),它为嵌入式系统提供了多任务调度、内存管理、信号量、事件标志组、消息队列等服务,使得开发者能够构建高效、可靠的应用程序。 在这个项目中,STM32H750与...
标题"FANUC LADDER-III V8.9升级包.rar"表明这是一款针对FANUC LADDER-III编程软件的版本8.9的更新程序。FANUC LADDER-III是一款由FANUC公司开发的专业PLC(可编程逻辑控制器)编程工具,广泛用于FANUC数控系统的...
综上所述,这个项目不仅涉及STM32H562的硬件特性,还涵盖了UCOS-III操作系统的核心功能,特别是消息队列的使用,对于学习和开发基于STM32H系列的嵌入式系统具有很高的价值。通过深入研究和实践,开发者可以掌握如何...
解释:栈和队列都是线性表(I),栈和队列都是次序表(II),栈和队列都不为空(III),栈和队列都能应用于递归过程实现(IV),栈的特点是后进先出,而队列的特点是先进先出(V)。因此,答案是 A)仅 I 和 V。 ...
### PL/SQL 面试题解析 #### 题目1 **题目描述**: 根据以下表的数据,预测两个查询语句的结果。 **表格数据**: - `usertable` 表: - USERID: 1, USERNAME: user1 - USERID: 2, USERNAME: null - USERID: 3, ...
uCOS-III是uCOS系列的第三个主要版本,相较于前两个版本,它提供了更多的功能和改进,如抢占式调度、优先级继承、时间片轮转等。V3.03.00版在稳定性和性能上做了进一步优化,确保了系统的实时响应能力。 二、抢占式...
FANUC LADDER-III V8.7是一款专为FANUC数控系统设计的PMC(Programmable Machine Controller)编程软件。此升级包主要用于已安装的旧版本LADDER-III软件的更新,以获取最新的功能和性能优化。FANUC PMC LADDER是...
UCOSIII在UCOSII的基础上进行了大量优化和扩展,支持更多的内核对象,包括任务、信号量、互斥锁、消息队列、事件标志组、定时器等。此外,它具有抢占式调度策略,能确保高优先级任务的及时执行,保证系统的响应速度...
- uCOS-III内核对象:涵盖了uCOS-III提供的各种内核对象,如任务、软件定时器、多值信号量、互斥信号量、消息队列、事件标志组等,这些是开发中会频繁使用的组件。 - uCOS-III常用程序段:包括临界段和中断嵌套...
6. **性能优化**:V3.91版的性能提升体现在处理速度和稳定性上,对于大量文字处理或复杂设计任务,软件能够快速响应,减少等待时间,提高工作效率。 7. **用户体验**:Zimo3Pro的用户界面设计友好,操作流程直观,...