JS中的设计模式与数据结构之栈

//创建一个Stack的构造函数
function Stack() {
	//利用名为dataStore的数组存储栈元素
    this.dataStore = [];
    //利用top存储栈顶位置
    this.top = 0;
    //push()方法向栈添加元素
    this.push = push;
    //pop()方法删除栈顶元素并返回
    this.pop = pop;
    //peek()方法查看栈顶元素并返回
    this.peek = peek;
    //length()方法返回栈的长度
    this.length = length;
    //clear()方法返回栈的长度
    this.clear = clear;
    //dispaly返回栈内全部元素
    this.display = display;
}
function push( element) {
	//将元素插入栈顶,并将top数值加一
    this.dataStore[ this.top++ ] = element;
}
function pop() {
	//返回栈顶元素,并将top数值减一
    return this.dataStore[ --this.top ];
}
function peek() {
	//top>0说明栈内有元素
    if (this.top>0) {
    	//返回栈顶元素
        return this.dataStore[this.top-1];
    }else{
    	//返回空
        return null;
    }
}
function length() {
	//索引从0开始 而top指向栈顶元素的下一个位置,因此top正好是栈内元素个数
    return this.top;
}
function clear() {
	//dataStore和top初始化
    this.dataStore = [];
    this.top =0;
}
function display() {
	//top为0说明是空栈
    if (this.top == 0) {
        console.log(`stack is empty`);
        return null;
    }else{
    	//从栈顶元素开始,依次遍历
        for (let i = this.top-1; i >= 0; i--) {
            console.log(this.dataStore[i]);
        }
    }
}

//验证如下
var stack = new Stack();
stack.push(`apple`);
stack.push(`banane`);
stack.push(`origan`);
stack.display();
console.log(`-----------, the length is ${stack.length()}`);
console.log(`the '${stack.pop()}' delete complete`);
stack.display();
console.log(`-----------, the length is ${stack.length()}`);
stack.clear();
stack.display();
console.log(`-----------, the length is ${stack.length()}`);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值