gpt4 book ai didi

javascript - 编写一个反射(reflect)堆栈行为的函数,但带有队列......?

转载 作者:行者123 更新时间:2023-11-28 05:59:40 26 4
gpt4 key购买 nike

我在模拟面试中遇到了这个问题,我不确定我是否理解它在问什么。我应该编写一个具有队列但具有堆栈属性的函数?

这是我的堆栈的基本实现:

function Stack() {
this._size = 0;
this._storage = {};
}

Stack.prototype.push = function(data) {
var size = this._size++

this._storage[size] = data;
}

Stack.prototype.pop = function() {
var size = this._size,
deletedData;

if (size) {
deletedData = this._storage[size];

delete this._storage[size];
this._size--;

return deletedData;
}
};

这是我的队列实现:

function Queue() {
this._newestIndex = 1;
this._oldestIndex = 1;
this._storage = {};
}

Queue.prototype.size = function() {
console.log(this._newestIndex - this._oldestIndex);
}

Queue.prototype.enqueue = function(data) {
this._storage[this._newestIndex] = data;
this._newestIndex++;
}

Queue.prototype.dequeue = function() {
var oldestIndex = this._oldestIndex;
var newestIndex = this._newestIndex;
var datatoDelete;


if (newestIndex !== oldestIndex) {
datatoDelete = this._storage[oldestIndex]
delete this._storage[oldestIndex];
this._oldestIndex++;

return datatoDelete;

}

}

我如何在我的示例中实现这一点?

谢谢。

最佳答案

I am not sure I even understand what it's asking

好吧,您需要使用队列创建一个堆栈,即,您假设已经给定了队列数据结构并使用队列数据结构中提供的函数,您需要创建一个堆栈。

因此,堆栈代码的结构将如下所示:

function push(){
//code for push but using queue data-structures functions
}

function pop(){
//code for pop but using queue data-structures
}

提示:1)通过使用队列创建堆栈,您必须使“弹出”或“推送”操作变得昂贵。我所说的昂贵是指,现在弹出操作将不会在 o(1) 中,或者推送操作将不会在 O(1) 中。

2) 您需要两个队列数据结构来实现堆栈。

关于javascript - 编写一个反射(reflect)堆栈行为的函数,但带有队列......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37381625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com