在JavaScript中定义队列数据结构
我只是想学习JavaScript。我想设计一个采用以下格式的队列:在JavaScript中定义队列数据结构,javascript,Javascript,我只是想学习JavaScript。我想设计一个采用以下格式的队列: [{(0,0),0}], [{(0,1),1}], [{(0,2),2}] 所以我试着用下面的方法定义队列,但显然它是不正确的 var queue = [{}] ; 首先,JS中没有“耦合”数据结构,因此您的(0,1)必须是数组[0,1]、对象:{x:0,y:1}或自定义类型(见下文) 在javascript中,结构不是强类型的,因此您只需定义根是数组还是对象。在本例中,它似乎是一个数组 var queue = []; 然
[{(0,0),0}], [{(0,1),1}], [{(0,2),2}]
所以我试着用下面的方法定义队列,但显然它是不正确的
var queue = [{}] ;
首先,JS中没有“耦合”数据结构,因此您的(0,1)
必须是数组[0,1]
、对象:{x:0,y:1}
或自定义类型(见下文)
在javascript中,结构不是强类型的,因此您只需定义根是数组还是对象。在本例中,它似乎是一个数组
var queue = [];
然后,把你需要的东西推到队列中。例如:(我发明了字段名,使它们适合您的用例)
正如我所说,您可以使用另一种表示,例如:[[0,0],0]
,或者定义自定义类型(面向对象)
首先,JS中没有“耦合”数据结构,因此您的(0,1)
必须是数组[0,1]
、对象:{x:0,y:1}
或自定义类型(见下文)
在javascript中,结构不是强类型的,因此您只需定义根是数组还是对象。在本例中,它似乎是一个数组
var queue = [];
然后,把你需要的东西推到队列中。例如:(我发明了字段名,使它们适合您的用例)
正如我所说,您可以使用另一种表示,例如:[[0,0],0]
,或者定义自定义类型(面向对象)
对于要使用
数组保存值的队列
var myQueue = [] //Empty array
通过将队列推送到数组中,将其添加到队列中
myQueue.push(new Person(...))
var nextInLine = myQueue.shift()
通过将队列移出数组来从队列中获取某些内容
myQueue.push(new Person(...))
var nextInLine = myQueue.shift()
对于要使用
数组保存值的队列
var myQueue = [] //Empty array
通过将队列推送到数组中,将其添加到队列中
myQueue.push(new Person(...))
var nextInLine = myQueue.shift()
通过将队列移出数组来从队列中获取某些内容
myQueue.push(new Person(...))
var nextInLine = myQueue.shift()
您可以按如下方式构建队列:
function Queue () {
this.dataStore = [];
this.enqueue = enqueue;
this.dequeue = dequeue;
this.front = front;
this.back = back;
this.toString = toString;
this.empty = empty;
}
// Insetion
function enqueue(element){
this.dataStore.push(element);
}
// Deletion
function dequeue(){
this.dataStore.shift();
}
// front
function front(){
return this.dataStore[0];
}
//back
function back(){
return this.dataStore[this.dataStore.length-1];
}
//toString
function toString(){
var retStr = '';
for(var i = 0; i < this.dataStore.length; i++){
retStr = retStr + this.dataStore[i]
}
return retStr;
}
//empty
function empty(){
if(this.dataStore.length === 0) {
return true;
}
return false;
}
函数队列(){
this.dataStore=[];
this.enqueue=enqueue;
this.dequeue=dequeue;
this.front=front;
this.back=back;
this.toString=toString;
this.empty=空;
}
//插入
函数排队(元素){
this.dataStore.push(元素);
}
//删除
函数出列(){
this.dataStore.shift();
}
//正面
函数前(){
返回此.dataStore[0];
}
//背
函数back(){
返回this.dataStore[this.dataStore.length-1];
}
//托斯特林
函数toString(){
var retStr='';
对于(var i=0;i
现在将其用作构造函数方法,var q=new Queue()。您可以按如下方式构建队列:
function Queue () {
this.dataStore = [];
this.enqueue = enqueue;
this.dequeue = dequeue;
this.front = front;
this.back = back;
this.toString = toString;
this.empty = empty;
}
// Insetion
function enqueue(element){
this.dataStore.push(element);
}
// Deletion
function dequeue(){
this.dataStore.shift();
}
// front
function front(){
return this.dataStore[0];
}
//back
function back(){
return this.dataStore[this.dataStore.length-1];
}
//toString
function toString(){
var retStr = '';
for(var i = 0; i < this.dataStore.length; i++){
retStr = retStr + this.dataStore[i]
}
return retStr;
}
//empty
function empty(){
if(this.dataStore.length === 0) {
return true;
}
return false;
}
函数队列(){
this.dataStore=[];
this.enqueue=enqueue;
this.dequeue=dequeue;
this.front=front;
this.back=back;
this.toString=toString;
this.empty=空;
}
//插入
函数排队(元素){
this.dataStore.push(元素);
}
//删除
函数出列(){
this.dataStore.shift();
}
//正面
函数前(){
返回此.dataStore[0];
}
//背
函数back(){
返回this.dataStore[this.dataStore.length-1];
}
//托斯特林
函数toString(){
var retStr='';
对于(var i=0;i
现在将其用作构造函数方法,var q=new Queue()。JS对象(
{}
)是基于键:值的。如果只需要值,就可以使用数组([]
),我通常喜欢创建新类型来定义复杂的数据结构<代码>[新用户(新位置(0,0),0),…](或任何可能的内容)通常对我来说更容易读懂一个非常小的深度。然后在您的队列中保留这些对象?JS对象({}
)是基于键:值的。如果只需要值,就可以使用数组([]
),我通常喜欢创建新类型来定义复杂的数据结构[新用户(新位置(0,0),0),…]
(或任何可能的内容)通常更容易阅读一个非常小的深度。然后在您的队列中保留这些对象?