JavaScript 基于数组实现栈结构

// 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值