首页 > web前端 > js教程 > 正文

js实现链式栈的代码实例

不言
发布: 2018-08-18 16:34:29
原创
1480人浏览过

本篇文章给大家带来的内容是关于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>
登录后复制

 相关推荐:

ViiTor实时翻译
ViiTor实时翻译

AI实时多语言翻译专家!强大的语音识别、AR翻译功能。

ViiTor实时翻译 116
查看详情 ViiTor实时翻译

js的代码如何进行压缩?js代码压缩的简单方法

Nodejs中buffer是什么?Nodejs中buffer类的用法

以上就是js实现链式栈的代码实例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号