JavaScript数据结构栈

栈栈是一种遵循后入先出(LIFO,全称LastInFirstOut)的数据结构,是一种运算受限的线性表,其限制是仅允许在表的一端进行操作,这一端被称之为栈顶。

由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问,如果要访问栈底的元素,必须先移除上面的元素。

栈的实现在JavaScript中,采用数组座位存储数据的底层数据结构。

定义Stack构造函数

functionStack(){

this.items=[];

}

栈具有以下方法

push()进栈

pop()退栈

size()栈大小

empty()判断栈是否为空

peek()返回栈顶元素

clear()清空栈

push向栈中压入新元素时,元素位于当前栈顶指针所对应的位置,压入后,栈顶指针应指向下一个位置

functionpush(item){

this.items[this.top++]=item;

}

poppop与push方法相反,返回栈顶元素,同时top的值减1

functionpop(){

if(this.top===0)return;

varitem=this.items[this.top-1]

this.items.length=--this.top;

returnitem;

}

sizesize方法返回栈内的元素个数

functionsize(){

returnthis.top;

}

empty检查栈是否为空,为空则返回true,否则返回false

functionempty(){

returnthis.top===0;

}

peek返回栈顶元素

functionpeek(){

returnthis.items[this.top-1];

}

clear清空栈内所有元素

functionclear(){

this.items=[];

this.top=0;

}

给栈添加方法利用原型将以上方法添加给Stack构造函数

Stack.prototype={

constructor:Stack,

push:push,

pop:pop,

size:size,

empty:empty,

peek:peek,

clear:clear,

}

栈的实际应用下面是一个递归函数,用来计算数字的阶乘

functionfactorial(n){

if(n===0){

return1;

}else{

returnn*factorial(n-1);

}

}

使用该函数计算5的阶乘

factorial(5)//

如果使用栈来模拟计算5!的过程,将5到1依次压入栈,然后再将数字依次弹出连乘,即可得到计算结果

functionfactorial2(n){

vars=newStack(),

result=1;

while(n1){

s.push(n--)

}

while(s.size()0){

result*=s.pop()

}

returnresult;

}

使用该函数计算5的阶乘

factorial(5)//

小拳拳捶你胸口

赞赏

人赞赏









































北京治疗白癜风医院那里好
治疗白癜风哪里好啊



转载请注明:http://www.92nongye.com/hxjs/204618402.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了