第四章 栈

来源:互联网 发布:淘宝加盟要多少钱 编辑:程序博客网 时间:2024/06/18 00:35

列表:

以表格为容器,装载着文字和图表的一种形式叫做列表。
数据结构中列表一般是指线性列表,是一种数据项构成的有序序列,即按照一定的线性顺序,排列而成的数据集合,一般操作有:插入,查找和删除。

栈:

栈是和列表一样的数据结构,栈是一种高效的数据结构,因为数据只能在栈顶删除或者添加,所以这样操作很快。
栈是一种特殊的列表,栈内的元素只能通过列表一端访问,这一段成为栈顶。栈被称作一种后入先出的数据结构。

对栈的两种主要操作:

  • 入栈使用push()方法
  • 出栈使用pop()方法 //可以返回栈顶的元素,但是栈顶的元素将会永久的删除。可以使用peek().只返回栈顶元素但不删除。

clear()方法清除站内的所有元素,length返回栈的长度。empty()方法表示栈内是否有元素。

栈的实现:

首先先定义一个类的构造函数来实现。

  function Stack(){        this.dataStore=[];        this.top=0;        this.push=push;        this.pop=pop;        this.peek=peek;        this.length=length    }

构建一些常用的方法:

   function push(ele){        this.dataStore[this.top++]=ele;    }    function pop(){        return this.dataStore[--this.top]    }    function peek(){        return this.dataStore[this.top-1]    }    function length(){        return this.top;    }    function clear(){        this.top=0;    }

I++和++I的区别:

i++:先赋值在++
a=i++等同于a=i;i++
相反++i:先++在赋值
a=++i等同于i++,a=i

    for(var i=0;i<=10;i++){        a=++j;        console.log(a,j);    }//0 11 22 33 44 55 66 77 88 99 1010 11
 var j=0;    for(var i=0;i<=10;i++){        a=++j;        console.log(a,j);    }//1 12 23 34 45 56 67 78 89 910 1011 11

使用stack类:

1.数制间的相互转换
2.回文(一个单词,短语,数字)从前往后和从后往前写都是一样的

    function ishuiwen(string){    var s=new Stack();        var i=0;    while(i<string.length){        s.push(string[i]);        i++    }      var _string="";      while(s.length()>0){          _string+=s.pop()      }        if(string==_string){            console.log('is a huiwenshu')        }        else{            console.log('is not a huiwenshu')        }    }    ishuiwen('dad')

3.递归演示
求5的阶乘:

    function jc(n){        if(n==0){            return 1;        }        else{         return  n*jc(n-1);        }    }

使用栈的写法:

    function jc(n){        var s=new Stack();        while(n>1){            s.push(n--)        }        var num=1;        while(s.length()>0){            num*= s.pop()        }        return num;    }    console.log(jc(5))
0 0
原创粉丝点击