JavaScript(7) - 栈和队列
来源:互联网 发布:网络用语ng是什么意思 编辑:程序博客网 时间:2024/05/16 01:21
栈
stack.js文件如下:
function Stack(){ var items = []; //入栈 this.push = function(element){ items.push(element); } //出栈 this.pop = function(){ return items.pop(); } //返回栈顶元素 this.peek = function(){ return items[items.length - 1]; } //是否为空 this.isEmpty = function(){ return items.length === 0; } //栈元素个数 this.size = function(){ return items.length; } //清空栈 this.clear = function(){ items = []; } //打印元素 this.print = function(){ console.log(items.toString()); }}module.exports = Stack;
利用栈实现从十进制转换为十六进制以内任意进制,代码如下(在node环境下运行):
var Stack = require('./stack');var newStack = new Stack();//newStack.push('Aaa');//newStack.push('Bbb');//newStack.print();function baseConverter(decNumber, base){ var remStack = new Stack(), rem, //记录余数 baseString = '', //记录转换后的字符串 digits = '0123456789ABCDEF'; //用来查找对应的字符 while(decNumber > 0){ rem = decNumber % base; //console.log(rem); remStack.push(rem); //remStack.print(); decNumber = Math.floor(decNumber / base); } while(!remStack.isEmpty()){ baseString += digits[remStack.pop()]; } return baseString;}console.log(baseConverter(100345, 2)); //11000011111111001console.log(baseConverter(100345, 8)); //303771console.log(baseConverter(100345, 16)); //187F9
队列
队列遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。
队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
队列的实现:
function Queue() { var items = []; this.enqueue = function(element){ items.push(element); }; this.dequeue = function(){ return items.shift(); }; this.front = function(){ return items[0]; }; this.isEmpty = function(){ return items.length == 0; }; this.clear = function(){ items = []; }; this.size = function(){ return items.length; }; this.print = function(){ console.log(items.toString()); };}
举个例子,如何使用队列:
var queue = new Queue();console.log(queue.isEmpty()); //outputs truequeue.enqueue("John");queue.enqueue("Jack");queue.print(); //John,Jackqueue.enqueue("Camila");queue.print(); //John,Jack,Camilaconsole.log(queue.size()); //outputs 3console.log(queue.isEmpty()); //outputs falsequeue.dequeue();console.log(queue.dequeue()); //Jackqueue.print(); //Camila
优先级队列
function PriorityQueue() { var items = []; function QueueElement (element, priority){ this.element = element; this.priority = priority; } this.enqueue = function(element, priority){ var queueElement = new QueueElement(element, priority); if (this.isEmpty()){ items.push(queueElement); } else { var added = false; for (var i=0; i<items.length; i++){ if (queueElement.priority < items[i].priority){ items.splice(i,0,queueElement); added = true; break; } } if (!added){ items.push(queueElement); } } }; this.dequeue = function(){ return items.shift(); }; this.front = function(){ return items[0]; }; this.isEmpty = function(){ return items.length == 0; }; this.size = function(){ return items.length; }; this. print = function(){ for (var i=0; i<items.length; i++){ console.log(items[i].element + ' - ' + items[i].priority); } };}var priorityQueue = new PriorityQueue();priorityQueue.enqueue("John", 2);priorityQueue.enqueue("Jack", 1);priorityQueue.enqueue("Camila", 1);priorityQueue.enqueue("Maxwell", 2);priorityQueue.enqueue("Ana", 3);priorityQueue.print();//Jack - 1,Camila - 1,John - 2,Maxwell - 2,Ana - 3
0 0
- JavaScript(7) - 栈和队列
- JavaScript的栈和队列
- JavaScript——栈和队列
- javaScript数组中的栈和队列
- JavaScript中栈和队列相关操作和实现
- 栈和队列--队列
- 【栈和队列】队列
- 基于Javascript的队列和栈的实现
- Javascript中数组的栈方法和队列方法
- JavaScript之数组API、栈和队列、冒泡排序
- 学习javascript数据结构(一)——栈和队列
- 学习javascript数据结构(一)——栈和队列
- 栈、队列和优先队列
- 栈和队列(队列)
- JavaScript实现数据结构中的队列和堆栈
- javascript线程,任务队列和事件循环
- javascript队列
- javascript队列
- Android中如何判断app是否在前台
- C语言项目总结
- 【LEETCODE】278-First Bad Version
- PostgreSql 学习笔记二 CentOS下postgres升级
- sql---建表 太多列
- JavaScript(7) - 栈和队列
- 类
- linux安装vmware-tools
- 使用gdal ogr创建shapefile文件(c++)
- 创建型:设计模式之原型模式(五)
- iOS扫描二维码条形码ZBar的简单使用
- [leetcode] 112. Path Sum 解题报告
- ButterKnife基本使用
- Java多线程和并发性知识点总结