zoukankan      html  css  js  c++  java
  • 数据结构栈的定义和使用

    栈的定义:后入先出的数据结构。

    定义一个栈构造函数,利用数组做缓存。

     function Stack(){
                this.dataStore = []
                this.top = 0
                // 压入一个新元素
                this.push = function(element){
                  this.dataStore[this.top++] = element
                }
                // 返回一个栈顶元素 同时将变量top减-
                this.pop = function(){
                    return this.dataStore[--this.top]
                }
                // 返回栈顶元素
                this.peek = function(){
                    return this.dataStore[this.top-1]
                }
                // 返回元素个数
                this.length = function(){
                    return this.top
                }
                // 清空栈
                this.clear = function(){
                    this.top = 0
                }
            }

    使用举例:

    1,判断是否是回文

     // 判断是否是回文  其实判断回文完全没必要这么复杂的 这里只是演示
            function isPalindrome(word){
              let s = new Stack()
    
              // 创建栈
              for(let i =0; i <word.length; i++){
                  s.push(word[i])
              }
              
              // 返序
              let rword = ''
              while(s.length() > 0){
                  rword +=s.pop()
              }
              // 是否相等
              return word === rword
            }

    2,使用栈模拟阶乘

     // 使用栈模拟递归过程
           function fact(){
               let s= new Stack()
    
               // 先放入堆栈里
               while(n > 1){
                   s.push(n--)
               }
               // 然后遍历使用
               let product = 1
               while(s.length() >0){
                  product*=s.pop()
               }
               return product
           }

    栈也是一种建模单元,和队列有很大的相似之处,使用的逻辑同样是构建栈、然后遍历作为主逻辑、其他做幅逻辑。

    我站在山顶看风景!下面是我的家乡!
  • 相关阅读:
    Java compiler level does not match the version of the installed Java Project facet.
    Project configuration is not up-to-date with pom.xml. Select: Maven->Update Project... from the project context menu or use Quick Fix.
    JavaScript
    JavaScript
    Eclipse
    Eclipse
    Oracle
    Java
    Ext JS 4.2
    Eclipse
  • 原文地址:https://www.cnblogs.com/zhensg123/p/14720082.html
Copyright © 2011-2022 走看看