js实现链表队列

6 篇文章 1 订阅
4 篇文章 0 订阅

定义:队列是只允许在一端进行插入操作,而在另一端 进行删除操作的线性表。与栈相反,队列是一 种先进先出的线性表。与栈相同的是,队列也是一 种重要的线性结构,实现一个队列同 样需要顺序表或链表作为基础。如下图所示:

                                

 

队列的具体实现:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			function LinkQueue(){
				this.length = 0;
				this.front = null;//队头
				this.rear = null;//队尾
			};
			LinkQueue.prototype.Node = function(el){
				this.element = el;
				this.next = null;
			}
			//入队
			LinkQueue.prototype.push = function(el){
				var current = null,
				   node = new this.Node(el);
				if(this.length == 0){
					this.length++;
					this.front = this.rear = node;
					return true;
				}else{
					current = this.rear;
					current.next = node;
					this.rear = node;
					this.length++;
					return true;
				}
			};
			
			//出队
			LinkQueue.prototype.pop = function(){
				var current = null;
				if(this.length != 0){
					current = this.front;
					this.front = current.next;
					this.length--;
					return true;
				}else{
					return null;
				}
			};
			
			LinkQueue.prototype.toString = function(){
				var str = "",
				    current = this.front;
				
				while(current){
					str += current.element + " ";
					current = current.next;
				}
				
				return str;
			};
			
			//清空队列
			LinkQueue.prototype.clear = function(){
				this.front = this.rear = null;
				this.length =0;
				return true;
			};
			
			/***************测试代码******************/
			function test(){
				var linkQueue = new LinkQueue();
				
				//压栈
				for(var i=1;i<21;i++){
					linkQueue.push(i);
				}
				console.log("压栈->" + linkQueue.toString());
				
				//退栈
				linkQueue.pop();
				linkQueue.pop();
				linkQueue.pop();
				console.log("退栈->" + linkQueue.toString());
				
				//清空栈
				linkQueue.clear();
				console.log("清空栈->" + linkQueue.toString());
				
			}
			
			test();
		</script>
	</head>
	<body>
	</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值