JavaScript 基于数组实现栈结构

本文深入探讨了栈数据结构的特性与应用,通过JavaScript代码实现了栈的基本操作,包括push、pop、peek、isEmpty和size等方法。并提供了一个实例演示,展示了如何使用这些方法进行元素的压入和弹出,最后附上了一道与栈相关的经典面试题目,帮助读者巩固理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// Method 方法,和某一个对象实例有联系的
// function  函数

// 封装栈类
function Stack() {
	//栈中的属性
	this.items = [];
	//栈的相关操作
	//1、添加一个新元素到栈顶位置 push方法

	// this.push = function (this) {
	// 给实例添加方法
	// };

	Stack.prototype.push = function (element) {
		//给类添加方法  节省内存,效率更高
		this.items.push(element);
	};
	//2、移除栈顶的元素,同时返回被移除的元素
	Stack.prototype.pop = function () {
		return this.items.pop();
	};
	//3、返回栈顶的元素,不对栈做任何修改
	Stack.prototype.peek = function () {
		return this.items[this.items.length - 1];
	};
    //4、如果栈里没有任何元素就返回true,否则返回false
    Stack.prototype.isEmpty=function () {  
        return this.items.length==0
    }
    //5、返回栈里的元素个数,这个方法和数组的length属性很类似
    Stack.prototype.size=function () {  
        return this.items.length
    }
    //6、将栈结构的内容以字符串形式返回
    Stack.prototype.toString=function () {  
        var resultStr = ''
        for(var i=0;i<this.items.length;i++){
            resultStr+=this.items[i]+' '
        }
        return resultStr
    }
}
var s = new Stack();
 
s.push(20)
s.push(10)
s.push(10)
s.push(30)
s.push(50)
s.push(120)

console.log("压入栈",s)
//压入栈 Stack { items: [ 20, 10, 10, 30, 50, 120 ] }
s.pop()
console.log("删除栈顶元素",s)
//删除栈顶元素 Stack { items: [ 20, 10, 10, 30, 50 ] } 
console.log('栈顶元素', s.peek())
//栈顶元素 50

常见栈面试题:

有六个元素6,5,4,3,2,1的顺序进栈,问下列哪个不是合法的出栈序列?(C)

 

A:5,4,3,6,1,2   

B:  4,5,3,2,1,6

C:  3,4,6,5,2,1

D:  2,3,4,1,5,6