php用两个栈来实现队列
php用兩個(gè)棧來實(shí)現(xiàn)隊(duì)列
一、總結(jié)
我主要的問題是不知道的是題目描述,題目和貴的代碼之間的關(guān)系,以及返回值
思路:A棧做入隊(duì)操作,B棧做出隊(duì)操作,入隊(duì)的時(shí)候元素直接入A,出隊(duì)的時(shí)候判斷B棧是否為空,如果不為空,直接pop,如果為空,將A棧中的元素pop出去,B棧push,直到A棧為空,然后再popB里面的元素出隊(duì)
?
二、php用兩個(gè)棧來實(shí)現(xiàn)隊(duì)列
題目:用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的Push和Pop操作。 隊(duì)列中的元素為int類型。
給的代碼:
<?phpfunction mypush($node) {// write code here } function mypop() {// write code here }?
代碼一:
<?php$stack = []; function mypush($node) //我也猜到這個(gè)$node應(yīng)該是數(shù)組,不是數(shù)組,是push進(jìn)來的值 { global $stack;return $stack[]=$node;// write code here } function mypop(){ global $stack;if($stack){return array_shift($stack); }return $stack;// write code here } 添加筆記?
java代碼:
class Solution { public:void push(int node) {stack1.push(node);}int pop() {int a;if(stack2.empty()){while(!stack1.empty()){a=stack1.top();stack2.push(a);stack1.pop();}}a=stack2.top();stack2.pop();return a;} private:stack<int> stack1;stack<int> stack2; };用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列的功能?要求給出算法和思路!
<分析>:
入隊(duì):將元素進(jìn)棧A
出隊(duì):判斷棧B是否為空,如果為空,則將棧A中所有元素pop,并push進(jìn)棧B,棧B出棧;
?如果不為空,棧B直接出棧。
用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧的功能?要求給出算法和思路!
<分析>:
入棧:將元素進(jìn)隊(duì)列A
出棧:判斷隊(duì)列A中元素的個(gè)數(shù)是否為1,如果等于1,則出隊(duì)列,否則將隊(duì)列A中的元素???以此出隊(duì)列并放入隊(duì)列B,直到隊(duì)列A中的元素留下一個(gè),然后隊(duì)列A出隊(duì)列,再把???隊(duì)列B中的元素出隊(duì)列以此放入隊(duì)列A中。
?
轉(zhuǎn)載于:https://www.cnblogs.com/Renyi-Fan/p/9047186.html
總結(jié)
以上是生活随笔為你收集整理的php用两个栈来实现队列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab·Simulink的使用—【
- 下一篇: PHP | Uploading and