JavaScript 栈 Stack[转载]

创建时间:2015/7/12 16:45:07
关键字:JavaScript,Stack,栈

作者:benpao

原文连接:http://www.cnblogs.com/kuikui/archive/2012/08/08/2627553.html

 

栈是只允许在表尾进行插入,删除的线性表。特点后进先出。

下面将演示用数组实现的栈

栈初始化:创建一个空栈

Init:function(){
   this.STACKMAX = 100;
   this.stack = new Array(this.STACKMACK);
   this.top = -1;
   return this.stack;
}

 

判断栈空: 若栈为空返回true,否则返回false

Empty:function(){
   if(this.top==-1){
       return true;
   }
   else{
        return false;
   }
}

 

进栈:若栈满,返回“栈满”。否则将元素elem作为新的栈顶元素。

Push:function(elem){
   if(this.top==this.STACKMAX-1){
      return "栈满";
   }
   else{
      this.top++;
      this.stack[this.top] = elem;
   }
 }

 

退栈:删除栈顶元素,并返回其值

Pop:function(){
    if(this.top==-1){
        return "空栈,无法删除栈顶元素!";
    }
    else{
        var x = this.stack[this.top];
        this.top--;
        return x;
    }
 }

 

读栈顶元素:返回栈顶元素

Top:function(){
    if(this.top!=-1){
        return this.stack[this.top];
    }
    else{
        return "空栈,顶元素无返回值!";
     }
 }

 

清空栈:将栈清空为空栈

Clear:function(){
    this.top=-1;
}

 

栈长度:返回栈的元素个数,既栈的长度

Length:function(){
   return this.top+1;
}


栈示例代码如下:

            var Stack = function(){}
            
            Stack.prototype={
                Init:function(){
                    this.STACKMAX = 100;
                    this.stack = new Array(this.STACKMACK);
                    this.top = -1;
                    return this.stack;
                },
                Empty:function(){
                    if(this.top==-1){
                        return true;
                    }
                    else{
                        return false;
                    }
                },
                Push:function(elem){
                    if(this.top==this.STACKMAX-1){
                        return "栈满";
                    }
                    else{
                        this.top++;
                        this.stack[this.top] = elem;
                    }
                },
                Pop:function(){
                    if(this.top==-1){
                        return "空栈,无法删除栈顶元素!";
                    }
                    else{
                        var x = this.stack[this.top];
                        this.top--;
                        return x;
                    }
                },
                Top:function(){
                    if(this.top!=-1){
                        return this.stack[this.top];
                    }
                    else{
                        return "空栈,顶元素无返回值!";
                    }
                },
                Clear:function(){
                    this.top=-1;
                },
                Length:function(){
                    return this.top+1;
                }
            }

 

在最近的日子里会给出栈的应用的例子,在此敬请期待。。。