数据结构之栈(JavaScript描述)

栈数据结构

  栈是一种遵从后进先出原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称为栈顶,另一端就叫栈底。在栈内,锌元素都靠近栈顶,救援都接近栈底

类似栈的例子

stack-book

  栈也被用在编程语言你的编译器和内存中保存变量、方法调用等,也被用于浏览器历史记录(浏览器的返回按钮)

创建一个基于数组的栈

  • 创建一个类表示栈
  • 栈内应该有一些方法
    • 添加一个新元素到栈顶
    • 删除栈顶元素,同时返回这个被删除的元素
    • 返回栈顶元素
    • 判断栈内是否为空
    • 移出栈内所有元素
    • 返回栈内元素个数

创建一个类表示栈

class Stack{
    constructor(){
        this.items = [];
    }
}

添加一个新元素到栈顶

push(el){
    return this.items.push(el)
}

移除栈顶一个元素

pop(){
    const result = this.items[this.size() - 1]
    this.items.pop()
    return result
}

查看栈顶元素

peek(){
    return this.items[this.size() - 1]
}

判断栈内是否为空

isEmpty(){
    return this.size() === 0
}

清空栈内元素

clear(){
    return this.items = [];
}

返回栈内元素个数

size(){
    return this.items.length;
}

创建一个基于对象的Stack类

其需要的方法个数不变,需要改变方法内部代码

创建一个类表示栈

class Stack{
    constructor(){
        this.items = {};
        this.count = 0;
    }
}

添加一个新元素到栈顶

push(el){
    this.items[this.count] = el;
    this.count++;
}

移除栈顶一个元素

pop(){
   if(this.isEmpty()){
       return undefined
   }
   this.count--;
   const result = this.items[this.count]
   delete this.items[this.count]
   return result;
}

查看栈顶元素

peek(){
    return this.items[this.size() - 1]
}

判断栈内是否为空

isEmpty(){
    return this.size() === 0
}

清空栈内元素

clear(){
    this.items = {};
    this.count = 0
}

返回栈内元素个数

size(){
    return this.count;
}
posted @ 2021-04-08 13:30  亓亓哟  阅读(73)  评论(0编辑  收藏  举报