javascript: 数据结构之栈

栈(stack)又名堆栈,栈是一种遵从后进先出(LIFO,last-in-first-out)原则的有序集合。新添加的或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
在现实生活中也能发现很多栈的例子,比如羽毛球筒,一叠书。


QQ截图20190516223256.png

对于栈的两种主要操作是入栈,和出栈,入栈使用push()方法。出栈使用pop()方法。还有其它的方法,向栈顶移除元素:pop()。查看栈顶元素:peek()。清除栈:clear()。检查栈是否为空:isEmpty()。获取栈⼤大⼩小:size()。

为了记录栈顶元素的位置,同时也为了标记哪里可以增加新的元素。我们使用变量top,当向栈内压入元素时,该变量增大,从栈内弹出元素时,该变量减小。

栈的实现:

实现栈,底层的数据结构采用数组,以定义栈的构造函数开始;

       function Stack(){
            this.items = [];
            this.push = push;
            this.pop = pop;
            this.peek = peek;
            this.clear = clear;
            this.isEmpty = isEmpty;
            this.length = length;
            //...
        } 
  1. push() 向栈添加元素;
  2. pop() 从栈移除元素
  3. peek() 查看栈顶元素
    4.isEmpty() 检查栈是否为空
    ...
    接下来看代码:
  //向栈添加元素
     function push(element){
           this.items.push(element);
       }
       //从栈移除元素
       function pop(){
           return this.items.pop();
       }
       // 查看栈顶元素
       function peek(){
           return this.items[items.length-1];
       }
       // 检查栈是否为空
       function isEmpty(){
           return this.items.length == 0;
       }
       function clear (){
           this.items = [];
       }

栈的应用:

1.进制转换算法:余数法
2.在编程语⾔的、⽅法的调用

你可能感兴趣的:(javascript: 数据结构之栈)