推荐答案
// www.javascriptcn.com code example
class Stack {
constructor() {
this.items = [];
}
// 入栈
push(element) {
this.items.push(element);
}
// 出栈
pop() {
if (this.isEmpty()) {
return "Stack is empty";
}
return this.items.pop();
}
// 查看栈顶元素
peek() {
if (this.isEmpty()) {
return "Stack is empty";
}
return this.items[this.items.length - 1];
}
// 判断栈是否为空
isEmpty() {
return this.items.length === 0;
}
// 返回栈的大小
size() {
return this.items.length;
}
// 清空栈
clear() {
this.items = [];
}
// 打印栈内容
print() {
console.log(this.items.toString());
}
}
// 使用示例
const stack = new Stack();
stack.push(10);
stack.push(20);
stack.push(30);
stack.print(); // 输出: 10,20,30
console.log(stack.pop()); // 输出: 30
console.log(stack.peek()); // 输出: 20
console.log(stack.size()); // 输出: 2
console.log(stack.isEmpty()); // 输出: false
stack.clear();
console.log(stack.isEmpty()); // 输出: true本题详细解读
栈的基本概念
栈(Stack)是一种遵循“后进先出”(LIFO, Last In First Out)原则的数据结构。栈的操作主要包括:
- push:将元素压入栈顶。
- pop:移除并返回栈顶元素。
- peek:返回栈顶元素但不移除。
- isEmpty:判断栈是否为空。
- size:返回栈中元素的数量。
- clear:清空栈。
代码实现
在JavaScript中,我们可以使用数组来模拟栈的行为。数组的push和pop方法正好对应栈的入栈和出栈操作。
push(element):将元素添加到数组的末尾,模拟入栈操作。pop():移除并返回数组的最后一个元素,模拟出栈操作。如果栈为空,则返回提示信息。peek():返回数组的最后一个元素,但不移除它。如果栈为空,则返回提示信息。isEmpty():检查数组的长度是否为0,判断栈是否为空。size():返回数组的长度,表示栈中元素的数量。clear():将数组重置为空数组,清空栈。print():打印栈中的元素,方便调试和查看栈的内容。
使用示例
通过创建一个Stack实例,我们可以进行各种栈操作。示例代码展示了如何将元素压入栈、弹出栈顶元素、查看栈顶元素、获取栈的大小以及清空栈等操作。
注意事项
- 在实际应用中,栈的大小可能会受到内存限制,因此在处理大量数据时需要注意栈的容量。
- 栈的应用场景包括函数调用栈、表达式求值、括号匹配等。