zoukankan      html  css  js  c++  java
  • JavaScript数据结构与算法(一) 栈的实现

    TypeScript版本源码

     1 class Stack {
     2     items = [];
     3     public push(element) {
     4         this.items.push(element);
     5     }
     6     public pop() {
     7         return this.items.pop();
     8     }
     9     public peek() {
    10         return this.items[this.items.length - 1];
    11     }
    12     public isEmpty() {
    13         return this.items.length == 0;
    14     }
    15     public size() {
    16         return this.items.length;
    17     }
    18     public clear() {
    19         this.items = [];
    20     }
    21     public print() {
    22         console.log(this.items.toString());
    23     }
    24 }

    TypeScript版本调用

     1 // 使用Stack类
     2 // 验证一下栈是否为空
     3 let stack = new Stack();
     4 console.log(stack.isEmpty());       // => true
     5 
     6 // 往栈添加元素
     7 stack.push(5);
     8 stack.push(8);
     9 
    10 // 查看栈里添加的最后一位元素
    11 console.log(stack.peek());          // => 8
    12 
    13 // 再添加一个元素
    14 stack.push(11);
    15 console.log(stack.size());          // => 3
    16 console.log(stack.isEmpty());       // => false
    17 
    18 // 再添加一个元素
    19 stack.push(15);
    20 
    21 // 下图描绘目前我们对栈的操作,以及栈的当前状态
    23 // 然后,调用两次pop方法从栈里移除2个元素: 24 25 stack.pop(); 26 stack.pop(); 27 console.log(stack.size()); // => 2 28 stack.print(); // => [5,8] 29 30 // 下图描绘目前我们对栈的操作,以及栈的当前状态

    JavaScript版本源码

     1 var Stack = (function () {
     2     function Stack() {
     3         this.items = [];
     4     }
     5     Stack.prototype.push = function (element) {
     6         this.items.push(element);
     7     };
     8     Stack.prototype.pop = function () {
     9         return this.items.pop();
    10     };
    11     Stack.prototype.peek = function () {
    12         return this.items[this.items.length - 1];
    13     };
    14     Stack.prototype.isEmpty = function () {
    15         return this.items.length == 0;
    16     };
    17     Stack.prototype.size = function () {
    18         return this.items.length;
    19     };
    20     Stack.prototype.clear = function () {
    21         this.items = [];
    22     };
    23     Stack.prototype.print = function () {
    24         console.log(this.items.toString());
    25     };
    26     return Stack;
    27 }());
  • 相关阅读:
    用JS获取地址栏参数的方法(超级简单)
    返回前一页并刷新页面方法
    js 弹出确认 取消对话框
    微信“无法回答问题设置”失效
    百度地图api学习平台
    JQuery 定时器 (Jquery Timer 插件)
    select 框option添加属性 js计算价格 保持两位小数
    修改织梦分页标签样式
    一键导航
    关于memset赋值无穷大无穷小
  • 原文地址:https://www.cnblogs.com/menu/p/6963125.html
Copyright © 2011-2022 走看看