![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
栈和队列
奶糖芯
成功之前说什么都是借口,
成功之后说什么都是炫耀。
展开
-
俩个栈来实现队列的具体实现代码
队列 1.解题思路 首先,用俩个栈实现队列,要明白栈是先进后出,队列是先进先出; 那么我们就用其中一个栈来实现入队操作,另外一个用来出队,也就是一个只管进,一个只管出; 比如现在有一组数字[12,23,45,55];将12,23进入到s1中,现在要出队,最先出去的应该是12,那么你只需要把s1的全部加入到s2中,这样,弹出就好; 你现在要出队,首先应该检查s2中有没有元素,如果有,只需要将元素弹出即可;如果没有将s1中的全部放到s2在进行弹出; 2.实现 2.1入队操作 //入栈 public原创 2020-11-27 15:06:27 · 177 阅读 · 0 评论 -
用俩个队列实现栈的功能
队列实现栈 1.解题思路 首先明确栈和队列分别有什么特点:栈是先进后出,队列是先进先出; 假设现在有qu1和qu2俩个队列; 现在你有一组数字[12,23,45,55,35]; 你先将12,23,34进入队列qu2,因为实现的是栈的功能,现在要进行出栈操作,栈是后进先出,那么应该最先出去的是34; 但是现在34在队尾,所以你是不是要先把12,34先移动到旁边那个队列qu1这样,将qu2剩余的34直接弹出就可以; 假设你现在要弹23,同样的道理;(前提是另外一个队列为空) 假设你弹出34之后,没有弹出2原创 2020-11-27 08:48:20 · 276 阅读 · 0 评论 -
循环队列的代码具体实现
循环队列 1.循环队列的基本认识 2.具体实现 用数组实现循环队列 2.1入队 思路: 同样判断是否为满 添加的元素加在rear的位置,然后rear向后面移动,本来只需要加加,但是是循环队列,最后一个的下一个是0号下标,因此用模运算; //入队 public boolean enQueue(int value) { //1.先判断是否为满 if(isFull()){ return false; }原创 2020-11-26 23:09:58 · 321 阅读 · 0 评论 -
队列入门以及代码的具体实现
队 1.概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstIn First Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列:进行删除操作的一端称为队头(Head/Front); 2.实现 用单链表实现队列 2.1入队 思路: 首先判断之前有没有元素,如果没有元素,就直接作为头; 如果之前已经有元素,就相当于尾插法; //添加(入队) public void offer(int val) {原创 2020-11-26 22:31:49 · 168 阅读 · 0 评论 -
栈入门以及代码的具体实现
栈 1.概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据在栈顶。 2.栈的具体实现 2.1入栈 思路: 进入栈之前,首先要先判断栈是否为满,只有栈没有满的时候才能将新元素继续入栈; 因为用的是顺序表的形式,只要在数组的最后面加入新进来的元素就行; 然原创 2020-11-26 22:18:57 · 243 阅读 · 0 评论