QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

管理团队

Rank: 30Rank: 30Rank: 30Rank: 30

技术值
查看: 144|回复: 1

[系列教程] 0001 ¥ 栈与队列 |【栈的创建与基础操作】

[复制链接]
最佳答案
120 
累计签到:630 天
连续签到:158 天
不二如是 发表于 2018-4-2 17:05:06 1441 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 不二如是 于 2018-4-4 10:51 编辑


                               
登录/注册后可看大图





数组是计算机世界中最常用的数据结构,默认鱼油已经会使用了~

我们可以在数组中“为所欲为”,增删改查随意操作。

有两种结构类似数组,在“增加”和“删除”时更为可控,没错,就是“栈与队列”

基础介绍请看:0 1 2 4 ★ Js中‘仿 ' 【栈stack】&【队列queue】| 【鱼C独家】






stack.jpg


栈(Stack)是遵循LIFO(Last In First Out)原则的有序集合。

新添加的或待删除的元素都保存在栈的同一端,即栈顶。(新元素靠近栈顶,旧元素靠近栈底)

常被用在编程语言的编译器和内存中保存变量、方法调用等。




创建栈

先创建一个来表示栈,从基础开始,先声明这个类:
  1. function stack(){
  2.         //属性声明
  3.     }
复制代码


然后我们需要一种数据结构来保存栈里的元素,可以选择数组:
  1. let items =[];
复制代码


接下来要为这个栈声明一些方法:
  1. push(element(s)) -> 添加一个(多个)新元素到栈顶。
  2. pop() -> 移除栈顶的元素,同时返回被移除的元素。
  3. peek() -> 返回栈顶的元素,不对栈做任何修改(不会移除栈顶的元素,仅仅返回它)
  4. isEmpty() -> 如果栈里没有任何元素就返回true,否则返回false
  5. clear() -> 移除栈里的所有元素。
  6. size() -> 返回栈里的元素个数。
复制代码





像栈里添加元素

通过使用push(),完成往栈里添加新元素。

记住:
该方法只添加元素到栈顶(即栈的末尾)


代码:
  1. //添加元素
  2.         this.push = function(element){
  3.             items.push(element);
  4.         };
复制代码


我们使用了数组来保存栈里的元素。

记住:
为了符合后进先出原则,只能用push()方法,往栈里添加元素。





移除栈中的元素

栈遵从后进先出原则,因此移除的是“最后添加进去的元素”

代码:
  1. //移除元素
  2.         this.pop = function () {
  3.             return items.pop();
  4.         };
复制代码


记住:
为了符合后进先出原则,只能用pop()方法,从栈中删除元素。





返回栈的长度

对于集合,最好用size代替length,因为栈的内部使用数组保存元素,所以可以简单返回栈的长度。

代码:
  1. //查看栈的长度
  2.         this.size = function(){
  3.             return items.length;
  4.         };
复制代码





查看栈顶元素

如果想知道栈里最后添加的元素,就要用peek()方法。

代码:
  1. //查看栈顶
  2.         this.peek = function(){
  3.             return items[items.length-1];
  4.         };
复制代码


因为内部用数组保存元素,最后一个元素可以用整体长度(length)-1

Snip20180402_42.png


上图中又一个包含三个元素的栈,内部数组长度位3,最后一项的位置是[2](3-1)。




检查栈是否为空

使用isEmpty()可以简单的判断内部数组的长度。

代码:
  1. //检查栈是否为空
  2.         this.isEmpty = function(){
  3.             return items.length == 0;
  4.         };
复制代码


栈为空返回true,否则返回false。




清空和打印栈的元素

使用clear()方法可以用来清除栈中的所有元素。

代码:
  1. //清空栈
  2.         this.clear = function(){
  3.             items = [];
  4.         };
复制代码


另外也可以通过多次调用pop()方法,把数组中的元素清除。




将栈中元素输出到控制台

最后,我们要把栈中的元素全部输出。

代码:
  1. this.print = function(){
  2.         console.log(items.toString());
  3.     };
复制代码





最终代码

代码:
游客,如果您要查看本帖隐藏内容请回复





如果有收获,别忘了评分


                               
登录/注册后可看大图


这位鱼油,如果喜欢本系列学习笔记,请订阅 专辑传送门)(不喜欢更要订阅



                               
登录/注册后可看大图

本帖被以下淘专辑推荐:

楼层
跳转到指定楼层
最佳答案
0 

尚未签到

dereusi1 发表于 2018-4-16 20:08:33 | 显示全部楼层
有帮助

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-4-25 18:43

快速回复 返回顶部 返回列表