[数据结构学习笔记5] 堆栈(Stack)

堆栈,我们总是把新的数据加在堆栈的最顶端,移除的时候也是从最顶端开始移除。也叫LIFO(last in first out)。

Push: 1

Stack: 1

Push: 2

Stack: 2, 1

Push: 3

Stack: 3, 2, 1

Pop()

Stack: 2, 1

Pop()

Stack: 1

 

代码实现(javascript)

复制代码
class Stack {
  constructor(... items) {
       this.items = items;      
    }  

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

   clone() {
        return new Stack(...this.items);  
    }  

  contains(item) {
        return this.items.includes(item);
    }  

  peek() {
        let itemsLength = this.items.length;
        let item = this.items[itemsLength - 1];

        return item;        
    }  

  pop() {
        let removedItem = this.items.pop();
        return removedItem;    
    }  

  push(item) {
         this.items.push(item);
         return item; 
      }  
}
复制代码

使用Stack()

复制代码
let myStack = new Stack();

// Add items
myStack.push("One");
myStack.push("Two");
myStack.push("Three");

// Preview the last item
myStack.peek(); // Three

// Remove item
let lastItem = myStack.pop();
console.log(lastItem); // Three

myStack.peek(); // Two

// Create a copy of the stack
let newStack = myStack.clone();

// Check if item is in Stack
newStack.contains("Three"); // false
复制代码

时间复杂度

动作 最佳 平均 最差
Push O(1) O(1) O(1)
Pop O(1) O(1) O(1)
Peek O(1) O(1) O(1)
Search/Contains O(1) O(n) O(n)
Memory O(n) O(n) O(n)
posted @   Eagle6970  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示