0001 ¥ 栈与队列 |【栈的创建与基础操作】
本帖最后由 不二如是 于 2018-4-4 10:51 编辑http://xxx.fishc.com/forum/201803/20/101934b3igkgm9hgbgz0ck.gif
数组是计算机世界中最常用的数据结构,默认鱼油已经会使用了~
我们可以在数组中“为所欲为”,增删改查随意操作。
有两种结构类似数组,在“增加”和“删除”时更为可控,没错,就是“栈与队列”。
基础介绍请看:0 1 2 4 ★ Js中‘仿 ' 【栈stack】&【队列queue】| 【鱼C独家】。
栈
栈(Stack)是遵循LIFO(Last In First Out)原则的有序集合。
新添加的或待删除的元素都保存在栈的同一端,即栈顶。(新元素靠近栈顶,旧元素靠近栈底)
常被用在编程语言的编译器和内存中保存变量、方法调用等。
创建栈
先创建一个类来表示栈,从基础开始,先声明这个类:
function stack(){
//属性声明
}
然后我们需要一种数据结构来保存栈里的元素,可以选择数组:
let items =[];
接下来要为这个栈声明一些方法:
push(element(s)) -> 添加一个(多个)新元素到栈顶。
pop() -> 移除栈顶的元素,同时返回被移除的元素。
peek() -> 返回栈顶的元素,不对栈做任何修改(不会移除栈顶的元素,仅仅返回它)
isEmpty() -> 如果栈里没有任何元素就返回true,否则返回false
clear() -> 移除栈里的所有元素。
size() -> 返回栈里的元素个数。
像栈里添加元素
通过使用push(),完成往栈里添加新元素。
记住:
该方法只添加元素到栈顶(即栈的末尾)
代码:
//添加元素
this.push = function(element){
items.push(element);
};
我们使用了数组来保存栈里的元素。
记住:
为了符合后进先出原则,只能用push()方法,往栈里添加元素。
移除栈中的元素
栈遵从后进先出原则,因此移除的是“最后添加进去的元素”。
代码:
//移除元素
this.pop = function () {
return items.pop();
};
记住:
为了符合后进先出原则,只能用pop()方法,从栈中删除元素。
返回栈的长度
对于集合,最好用size代替length,因为栈的内部使用数组保存元素,所以可以简单返回栈的长度。
代码:
//查看栈的长度
this.size = function(){
return items.length;
};
查看栈顶元素
如果想知道栈里最后添加的元素,就要用peek()方法。
代码:
//查看栈顶
this.peek = function(){
return items;
};
因为内部用数组保存元素,最后一个元素可以用整体长度(length)-1。
上图中又一个包含三个元素的栈,内部数组长度位3,最后一项的位置是(3-1)。
检查栈是否为空
使用isEmpty()可以简单的判断内部数组的长度。
代码:
//检查栈是否为空
this.isEmpty = function(){
return items.length == 0;
};
栈为空返回true,否则返回false。
清空和打印栈的元素
使用clear()方法可以用来清除栈中的所有元素。
代码:
//清空栈
this.clear = function(){
items = [];
};
另外也可以通过多次调用pop()方法,把数组中的元素清除。
将栈中元素输出到控制台
最后,我们要把栈中的元素全部输出。
代码:
this.print = function(){
console.log(items.toString());
};
最终代码
代码:
**** Hidden Message *****
如果有收获,别忘了评分{:10_281:} :
http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif
这位鱼油,如果喜欢本系列学习笔记,请订阅 专辑☞(传送门)(不喜欢更要订阅{:10_297:} )
http://xxx.fishc.com/forum/201803/21/151715umqz1qoywp11wjbq.gif
有帮助
好 good 出栈入栈 好 1 1
页:
[1]