堆栈及;队列-Javascript-实现方法和工作设置示例?
编辑堆栈及;队列-Javascript-实现方法和工作设置示例?,javascript,data-structures,stack,lifo,Javascript,Data Structures,Stack,Lifo,编辑 我不同意这是一个重复,我不是在问实现它们的最佳方式,我下面的问题是要澄清有多少种方式可以定义它们,以及问一个在工作环境中何时考虑并使用它们的示例。(即可以定义为对象?) 我正在阅读课程中的一段内容,需要澄清: 堆栈数据结构实现后进先出优先级收集。它提供两个功能:推送和弹出。push将元素添加到堆栈顶部,而pop将删除最顶部的元素 我在这个示例中被赋予给定一个字符串,使用堆栈将其反转 代码 我举了一个例子: let word = 'Bloc'; const reverseString =
我不同意这是一个重复,我不是在问实现它们的最佳方式,我下面的问题是要澄清有多少种方式可以定义它们,以及问一个在工作环境中何时考虑并使用它们的示例。
(即可以定义为对象?)
我正在阅读课程中的一段内容,需要澄清:
堆栈数据结构实现后进先出优先级收集。它提供两个功能:推送和弹出。push将元素添加到堆栈顶部,而pop将删除最顶部的元素
我在这个示例中被赋予给定一个字符串,使用堆栈将其反转
代码
我举了一个例子:
let word = 'Bloc';
const reverseString = (str) => {
let stack = [];
for (let i of str) {
stack.push(str[i]);
}
let reversed = '';
for (let i of word) {
reversed += stack.pop();
}
return reversed;
}
console.log(reverseString('Bloc'));
数组、链表和类是定义堆栈的唯一方法吗
推送和弹出
,这自动意味着数组
和数组方法
,对吗?除了定义堆栈的其他方法之外,这些是否只是额外的特性简而言之,
stack
只是一种数据结构,用于解决不同语言、系统、库等中的特定问题
堆栈
都是为特定目的构建的,具有不同的属性。例如,您可以随时限制堆栈中的元素数量(例如-堆栈中的元素最大数量为4,然后当您尝试向堆栈中添加第5个元素时-它将达到堆栈溢出
,并且不允许您这样做)。您还可以限制进入其中的数据类型。这完全取决于堆栈的用途。
数组是可视化堆栈的好方法,也是构建堆栈的绝佳起点,因为它们已经为您提供了像堆栈一样操纵自身的方法(push
和pop
)。但是您不需要使用数组,您可以使用对象
并找到处理这些对象的方法。
世界就是你的牡蛎:)js
库有自己的堆栈实现,如果您要构建它们,那么您应该了解它是如何工作的!
如果您将使用图形和图形数据堆栈,那么理解图形和图形数据堆栈是必不可少的。
所以再说一遍——这一切都取决于你的工作场所对数据聚合和数据处理的重视程度js
中的push
和pop
用于数组,这是正确的。我想说,这两个函数是堆栈的重要组成部分,因为它们为您提供了堆栈操作的基本方法。然而,这两种方法并不都是定义的,可以添加更多
希望能有帮助。祝你好运 有许多不同的方法可以模拟堆栈,但最终都归结为JavaScript对象的变体。JavaScript没有内置堆栈、队列或链表等结构。甚至数组也是对象的一种形式,带有一些额外的方法。Javascript的原型继承使您能够模拟这些结构并形成对象变体。模拟堆栈的一个简单示例是使用构造函数,它使用自己的方法生成对象:
function Stack() {
return {
items: [],
push: function ( item ) {
this.items[this.items.length] = item;
}
pop: function () {
const topItem = this.items[this.items.length - 1];
this.items.length = this.items.length - 1;
return topItem;
}
}
}
然而,您可能永远不会在Javascript中真正模仿这样的堆栈。通常,您只需要像上面那样使用数组方法。堆栈如何工作的想法很重要
例如,假设您获得一组数据,其中包括用户在站点上的开始时间和结束时间,按开始时间排序(例如[[02:30,03:00][02:45,3:15][4:00,5:30][5:00,6:00]
),您的任务是显示用户在您的站点上而不是在您的站点上的时间图表。查看差距并保持其有序的一种解决方案是合并重叠的间隔(例如变成[[2:30,3:15][4:00,6:00]
)
您可以通过将第一个项目推到堆栈上,并将其与集合中的下一个间隔进行比较来实现这一点。如果没有重叠,您可以将该项目推到堆栈上,但如果确实重叠,您可以将其从堆栈中弹出,合并两个项目,然后将其推回到堆栈上,以便在下一个项目时进行比较
是的,在JavaScript中,您可能仍然会为此使用数组,但是集成了堆栈结构的思想这些将有内置的堆栈、队列、链接列表等。因此了解它们的工作原理以及它们各自的优缺点/用例非常重要。可能重复的@PM77-1请查看我的编辑,谢谢