数据结构与算法
ZhuSenLin_BLOG
hardcore programmer
展开
-
[Daily]用一个栈实现另一个栈的排序
【问题】一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?【分析】利用栈访问的特性(FILO),将每一个数放在正确的位置,直到stack栈为空,最后将help一并压入stack栈中。help应为所要求有序数列的逆序(因为最后要压入stack中)算法步骤解析:cur :int ...原创 2020-03-01 12:34:50 · 199 阅读 · 0 评论 -
[Daily]猫狗队列——”子类管理器“
【题目】有猫狗类如下:class Pet{ private: string m_type; public: Pet(string _type){ m_type=_type; } string GetPetType(){ return m_type; }};class Dog : public Pet...原创 2020-03-01 09:23:52 · 169 阅读 · 0 评论 -
[Daily]仅用递归函数和栈操作逆序一个栈
【题目】一个栈依次压入1,2,3,4,5;那么从栈顶到栈底分别为5,4,3,2,1.。将栈转置【要求】只能用递归函数来实现。【分析】该算法需要两个递归函数。分别是getAndRemoveLastElement()和Reverse()函数名描述getAndRemoveLastElement将栈Stack的栈底元素返回并移除。作为中间步骤被Reverse使用...原创 2020-02-29 18:21:24 · 212 阅读 · 0 评论 -
[Daily]利用两个栈实现队列
【题目】编写一个类,用两个栈实现队列,支持队列的基本操作(enQueue、deQueue、peek)【分析】队列的访问规则是First In First Out;栈的访问规则是First In Last Out。用栈来模拟队的访问规则,核心思想就是:将入栈的顺序逆序,然后再出栈根据上面的核心思想,不难看出,我们可以使用两个栈,一个存储队列的入队顺序,一个存储队列的出队顺序入队栈和...原创 2020-02-29 10:48:08 · 111 阅读 · 0 评论 -
[Daily]设计一个获取最小值时间复杂度为O(1)的栈
【题目】实现一个栈,在实现栈的基本功能的前提下,再实现返回最小元素的操作。【要求】pop、push、getMin操作的时间复杂度都是O(1)设计的类可以使用现成的栈结构。【分析】想要使得获取最小值的时间复杂度为O(1),最简单的方法就是提前将最小值记录下来,当我们需要获取时便可直接获取栈的特点就是先进后出。它的操作具有一定规律,这使得我们可以很好的记录最小值。很容易就能够...原创 2020-02-28 23:35:07 · 576 阅读 · 0 评论