スタックでキューを実装し,キュースタックを実装することによって解析を行う.


Implement Queue using Stack, Implement Stack using Queue

歴史

スタックは誰が作ったのですか? 記録から見ると、創意は1946年に私たちのトゥーリンおじさんが出したもので、特許はドイツ人です。 ご存知のように、トゥーリンは第二次世界大戦、戦争の時にコンピュータの発展速度を大きく向上させた人です。 この人は戦争中に暗号解読器を作ったが、調音機械なのか。 フォンノイマン 要するに、この文章はイギリスから始まった......ああ......スタックを建てて50年も経っていない。 Qは?1900年代初期からあるQing理論があるそうです。 いずれにしても、本当にコンピューターで活躍したのは戦争に伴ってコンピューターが発展した時期だ。 アルゴリズムはコンピュータ科学において役割を果たし始め,多くの人がコンピュータを認識する時期である可能性がある。 第二次世界大戦からみんなで书いたつもりで戦争は勝つ。

为什么要实施呐?

基本的なスタックとキューは非常に似ています。 どちらも、入力と出力を1次元でリストします。 入力/出力は1回->1値です。 複雑さは同じです(追加、削除は効率的に見えますが、途中で追加する機能はありません...ハハハ) 違いはスタックがLIFO、キューがFIFO 最初の1番目の出力/最初の1番目の出力。 石を積むと、許(李)雅(波)、Qは並んでください、ポリスライン(ピー)(ピー)...

史塔克的古装实装

実際,javascriptにはArrayオブジェクトがあり,組み込み手法として容易に実現できる.しかし、これは勉強用です。 このpopは重要です 2つのスタックで。pushとpopのみ(類似スタック) 1番スタックが空になるまで2番スタックに倒れると思ったら、メイン1,2,3,4,5>>サーブ5,4,3,2,1がこのようにひっくり返ります。 ここでは、反転スタックを1つだけ作ると、キューのように先入先出のFirst In First Outの効果になります。 再び元の姿に戻ると、pop機能が完成します。 残りの方法は内蔵機能を簡単に使用します。(後で実施しましょう) var MyQueue = function() { this.inStack = []; this.outStack = []; }; /** * Push element x to the back of queue. * @param {number} x * @return {void} */ MyQueue.prototype.push = function(x) { return this.inStack.push(x); }; /** * Removes the element from in front of queue and returns that element. * @return {number} */ MyQueue.prototype.pop = function() { let res; while (this.inStack.length !== 0) { this.outStack.push(this.inStack.pop()); } res = this.outStack.pop(); while (this.outStack.length > 0) { this.inStack.push(this.outStack.pop()); } this.outStack = []; return res; }; /** * Get the front element. * @return {number} */ MyQueue.prototype.peek = function() { return this.inStack[0]; }; /** * Returns whether the queue is empty. * @return {boolean} */ MyQueue.prototype.empty = function() { return this.inStack.length === 0; };

根据古装的工作室的实装

二つのQで(unshiftとpopのみを使用し、キューと同様) この腕立て伏せはとても重要です ショットを入れますが、他のショットを入れます!メインキューに入れてから、サブキューに入れます。 これもキューブがひっくり返された形です。1、2、3、4、5メインキュー>5、4、3、2、1サブキュー>1、2、3、4、5、6、終了時は6から ここでは,1つのホームキューをポップアップするだけで,スタックのように後入先出の最初の出力の効果となる. 残りの方法は内蔵機能を簡単に使用します。(後で実施しましょう) /** * Initialize your data structure here. */ var MyStack = function() { this.inQ = []; this.subQ = []; }; /** * Push element x onto stack. * @param {number} x * @return {void} */ MyStack.prototype.push = function(x) { let res; while (this.inQ.length !== 0) { this.subQ.unshift(this.inQ.pop()); } res = this.inQ.unshift(x); while (this.subQ.length > 0) { this.inQ.unshift(this.subQ.pop()); } return res; }; /** * Removes the element on top of the stack and returns that element. * @return {number} */ MyStack.prototype.pop = function() { return this.inQ.pop(); }; /** * Get the top element. * @return {number} */ MyStack.prototype.top = function() { return this.inQ[this.inQ.length - 1]; }; /** * Returns whether the stack is empty. * @return {boolean} */ MyStack.prototype.empty = function() { return this.inQ.length === 0; };