美文网首页
数据结构(1)--用js做一个栈,并写出 压栈 和弹栈。

数据结构(1)--用js做一个栈,并写出 压栈 和弹栈。

作者: Yossef | 来源:发表于2017-12-26 19:18 被阅读0次

首先来科普一下数据结构中的栈是什么:

专业术语:

是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

----

其实专业术语并不难懂,但是为了大家更通俗易解一些,下面用图示来给大家解释一下数据结构中的栈:

可以把栈理解成一个杯子,可以一直往杯子里面放数据,但是放入的数据并不可以灵活调用,最先放入的数据库将被放入杯子最底部,然后再放入一个数据将在这个最先放入的数据的上面,然后一次叠加,这叫做压栈

如果你想取出最低下的数据,或者其他数据,就得以此弹出这些数据,直到弹到你想要的数据,这叫弹栈。

接下来加上代码:

我们先定义一个存放数据的类 

function Node(value){

        this.value = value; // 用于指向传入的数据

        this.point = null;    // 用于指向上一个传入的数据 后面会用到

}

我们再定义一个栈类:

function Stack(){

        this.top = null;//栈顶指针

        this.bottom = null;//栈底指针

        this.push=function(value){ //压栈

                    node = new Node(value);

                    if(this.bottom!=null){   //当this.bottom指向的节点不为null时 则把 node.point的节点指向this.top以前指向的地方,并且把this.top指向新传进来的节点    (2)图   就这样 来回叠加 this.top 不断指向新传入的节点 也就是最顶点 而node.point也是不断上方节点指向下方节点 如 (3)图

                            node.point = this.top;

                            this.top = node;

                     }else{         //如果this.bottom指向的节点为null 那证明是第一次传入数据节点 那么将this.bottom 和 this.top都指向新传入的这个节点就ok  (1)图

                            this.bottom = node;

                            this.top = node;

                    }

          }

          this.pop = function(){    //弹栈

                    node = null;

                    if(this.top!=null){  //当this.top不为null时,node表示为 最顶点的数据节点 this.top,并将this.top变为最顶点节点的下面的节点

                                node = this.top;

                                this.top = node.point;

                                if(this.top==null){   //当this.top一直往下变为null时 this.top 将不再变化 最底层的this.bottom也会变成null

                                        this.bottom = null;

                                 }

                    }

                    return node;  //每执行一次 将 node弹出一次 也就是将最顶层的 数据结点弹出一次

            }

}

(1) (2) (3)

相关文章

  • 数据结构(1)--用js做一个栈,并写出 压栈 和弹栈。

    首先来科普一下数据结构中的栈是什么: 专业术语: 是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数...

  • python-021-用O(1)的时间复杂度求栈中最小元素

    题目:用O(1)的时间复杂度求解栈中的最小元素。 栈是一种我们经常使用的数据结构,有压栈、弹栈、取栈顶元素、判断栈...

  • python使用数组实现一个栈的数据结构

    1.使用数组实现一个栈的数据结构,要求具有以下方法:压栈:在栈顶插入元素弹栈:弹出栈顶元素获取栈顶元素判断栈是否为...

  • 栈:如何实现浏览器的前进和后退功能?

    栈:如何实现浏览器的前进和后退功能? 栈这个数据结构,比较常见了,先进后出。压栈弹栈什么的。从栈的操作特性上来看,...

  • 数据结构

    数据结构:要写!!手动!!数据结构非常简洁才可 栈 eg. 弹栈压栈的过程 链表 就是原型链不断的连接,要断去某个...

  • OpenGL 栈概念及金字塔构建

    一、压栈与出栈的简介 1.压栈函数(PushMatrix()): 和数据结构中的栈类似,调用这个方法的时候,若传入...

  • 递归的简单示意图

    1.递归的本质 对于数据结构的角度分析,递归就是一个经典的压栈与弹栈的概念。 2. 简单示例 运行结果 3. 压弹...

  • OpenGL_矩阵压栈和出栈

    1. 压栈和出栈的理解 压栈出栈操作的是矩阵 用来记录矩阵的状态 压栈PushMatrix和出栈PopMatrix...

  • 前端-算法1:栈、队列、链表

    栈 一个先进后出的数据结构JS中没有栈,用Array实现栈的功能进栈: push 出栈:pop栈的应用场景: 十进...

  • 1. 栈

    1. 栈简介(后进先出) 栈是一个后进先出的数据结构; JS 中没有栈,但是可以用 Array 实现栈中的所有的功...

网友评论

      本文标题:数据结构(1)--用js做一个栈,并写出 压栈 和弹栈。

      本文链接:https://www.haomeiwen.com/subject/dhzjgxtx.html