データ構造とアルゴリズムJavaScript記述——スタック4.4練習

2568 ワード

スタック
スタック
スタック:先入後のデータ構造
スタックの操作
  • プッシュ方法   倉庫に入る
  • ポップ()メソッド    スタックからは、スタックトップ要素にアクセスすることができますが、同時にスタックトップ要素は完全に削除されます.
  • peek()方法  スタックの一番上の要素だけを返します.削除しません.
  • clear()メソッド    スタック内のすべての要素をクリアする
  • length()方法    記録スタック内の要素の個数
  • empty属性は、スタック内に要素
  • が含まれているかどうかを示すために使用される.
    function stack(){
    	this.database = [];
    	this.push = function(ele){
    		this.database.push(ele);
    	};
    	this.pop = function(){
    		return this.database.pop();
    	};
    	this.size = function(){
    		return this.database.length;
    	};
    	this.isEmpty = function(){
    		return this.database.length === 0;
    	};
    	this.clear = function(){
    		this.database.length = 0;
    	}
    	this.peek= function(){
    		return this.database[this.database.length-1];
    	};
    }
    
    練習します
    式の括弧がマッチするかどうかを判定します.
    function isBanlance(exp){
    	var s = new stack();
    	var left = '{[(';
    	var right = '}])';
    	var flag = true;
    	var popvalue;
    	var match = function(prev,current){
    		if(left.indexOf(prev) !== right.indexOf(current)){
    			flag = false;
    		}
    	};
    
    	for(var i=0;i
    // 1、                 
    //   :  '(','{','['     ,  ')','}',']'          
    function check(exp){
    	var s = new stack();
    	var str = exp.split("");
    	for(var i = 0;i -1){
    			s.push(str);
    		} else if([')','}',']'].indexOf(str) > -1) {
    			var top = s.pop();
    			if((top == '(' && str == ')')||(top == '[' && str == ']')||(top == '{' && str == '}')){
    				continue;
    			} else {
    				return false;
    			}
    		}
    	}
    	if(s.length() > 0){
    		return false;
    	}
    	return true;
    }
    
    
    // 2、     ,         ,         ,       js  ,                   ,            。
    //      
    function isOperator(value){
    	var operatorString = "+-*/()";
    	return operatorString.indexOf(value) > -1
    }
    
    
    // 3、     ,                
    
    function candy(arr){
    	var results = [];
    	var candys = new stack();
    	var likes = new stack();
    	for(var i=0;i0){
    		candys.push(likes.pop());
    	}
    	while(candys.length()>0){
    		results.push(candys.pop());
    	}
    	return results;
    }
    第二の問題は資料を閲覧することによって、スタックの四則演算における応用が分かりますが、JavaScriptを通じてどうやって実現するかはまだ分かりません.
    参考資料:データ構造入門第四章スタックとキュー
    大きい人の実現のアルゴリズム:javascriptの中で4つの演算式の計算方法と例を解析します.