ホームページ  >  記事  >  ウェブフロントエンド  >  チェーンスタックを実装するjsのコード例

チェーンスタックを実装するjsのコード例

不言
不言オリジナル
2018-08-18 16:34:291291ブラウズ

この記事では、チェーンスタックの JS 実装に関するコード例を紹介します。必要な方は参考にしていただければ幸いです。

公式定義: チェーン スタックは、単一のリンク リストを通じて実装できるデータ ストレージ構造です。チェーン スタックを使用する利点は、配列で実装されたシーケンシャル スタックのスペース使用率の低さを克服できることですが、それには次のことが必要です。ポインター フィールドを格納するために、各スタック要素に追加のポインター領域を割り当てます。现实 具体的な実装

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			function LinkStack(){
				this.length = 0;
				this.top = null;//栈顶指针				
			};
			
			LinkStack.prototype.Node = function(el){
				this.element = el;
				this.next = null;
			};
			
			//压栈
			LinkStack.prototype.push = function(el){
				var current,
				   Node = this.Node,
				   node = new Node(el);
				   
				  if(!this.top){
				  	this.top = node;
				  	this.length++;
				  	return true;
				  }else{
				  	current = this.top; 
				  	node.next = current;
				  	
				  	this.top = node;
				  	this.length++;
				  	return true;
				  }
			};
			
			//退栈
			LinkStack.prototype.pop = function(){
				var current = this.top;
				if(current){
					this.top = current.next;
					current.next = null;
					this.length--;
					return current;
				}else{
					throw "error null stack"
				}
			};
			
			LinkStack.prototype.toString = function(){
				var str = "",
				    current = this.top;
				
				while(current){
					str += current.element + " ";
					current = current.next;
				}
				
				return str;
			};
			
			//清空栈
			LinkStack.prototype.clear = function(){
				this.top = null;
				this.length = 0;
				return true;
			};
			
			
			/***************测试代码******************/
			function test(){
				var linkStack = new LinkStack();
				
				//压栈
				for(var i=1;i<21;i++){
					linkStack.push(i);
				}
				console.log("压栈->" + linkStack.toString());
				
				//退栈
				linkStack.pop();
				linkStack.pop();
				linkStack.pop();
				console.log("退栈->" + linkStack.toString());
				
				//清空栈
				linkStack.clear();
				console.log("清空栈->" + linkStack.toString());
				
			}
			
			test();
		</script>
	</head>
	<body>
	</body>
</html>

関連する推奨事項:

JS のコードを圧縮するにはどうすればよいですか? jsコードを圧縮する簡単な方法

Nodejsのバッファとは何ですか? Nodejsでのバッファクラスの使用法

以上がチェーンスタックを実装するjsのコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。