- 博客(6)
- 收藏
- 关注
原创 栈和队列,以及模拟实现
栈栈只允许在末端进行插入和删除的线性表。 栈具有后进先出的特性。 所以栈的插入删除都是在栈顶进行操作的,可以取栈顶元素(Top)实现:用顺序表实现,由于他只能在栈顶进行操作,所以优选顺序表实现应用:递归图解: 栈模拟实现代码:#include<iostream>#include<assert.h>using namespace std;template<class T>class Sta
2017-09-28 09:06:48 298
原创 面试题(实现一个栈,要求实现Push、Pop、Min的时间复杂度为O(1))
面试题(判断元素出栈入栈顺序的合法性。) 面试题(两个栈实现一个队列和两个队列实现一个栈)实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)解题思路: 我们定义两个栈分别为s1,s2。我们用s2保存最小值,s1保存原来的值Push():我们添加元素到s1中,如果s2为空或者x#include#includeusing n
2017-09-26 15:23:25 1371
原创 面试题(判断元素出栈入栈顺序的合法性。)
面试题(实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)) 面试题(两个栈实现一个队列和两个队列实现一个栈) 判断元素出栈,入栈顺序的合法性 如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)是合法序列 入栈的序列(1,2,3,4,5),出栈序列为(1,5,3,2,4)是不合法序列 解题思路:我们声明两个栈,分别为i
2017-09-26 13:56:12 1205
原创 面试题(两个栈实现一个队列和两个队列实现一个栈)
面试题(判断元素出栈入栈顺序的合法性。) 面试题(实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1))1,两个栈实现一个队列我们知道栈是后进先出的,而队列是先进先出的 我们创建两个栈input(输入栈),output(输出栈) 我们用input(输入栈)来负责入队,而output(输出栈)来负责出队(反向) 出队是,如果output不为空,
2017-09-26 09:25:16 2755
原创 STL中vector的使用以及模拟实现
vector:vector是一个动态增长的一个数组,它和数组是非常相似的。 vector与数组的区别在于空间运用的灵活性。 数组是静态空间,一旦配置了就不能改变,如果要增大空间,就需要重新开辟一个更大的空间,把原来数组的元素拷贝进去,然后在把原来的空间释放还给操作系统。 而vector是动态增长的,它会随着元素的增加而增大空间。下面我们看一下vector的主要函数功能判断容器的大小int si
2017-09-23 09:58:23 378
原创 STL中list的使用及模拟实现
list:带头结点的双向循环链表 我们先来看看在STL中list的各个接口的使用#include<windows.h>#include<iostream>#include <algorithm> #include<list>using namespace std;//迭代器的使用 void Testlist(){ list<int> l1; l1.push_back
2017-09-19 14:27:43 428
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人