(js描述的)数据结构[栈结构](2)

一.什么是栈结构

1.一种受限制的线性结构,这种结构可以基于数组来实现。

2.可以抽象成一个容器,上面的是栈顶,底下的是栈底。所以仅允许对栈顶进行操作,

二.栈结构的应用

1.函数式调用栈:基于栈的形式来进行函数的整体调用。

2.递归:栈溢出就是其中的一点。

三. 栈结构常见的操作

  1. push(): 添加一个元素到栈顶。
  2. pop(): 移除栈顶的元素。
  3. peek(): 返回栈顶的元素,不对栈结构做任何的修改。
  4. isEmpty(): 判断栈是否为空,不空的话返回 true, 空的话返回 false。
  5. size(): 返回栈里的元素个数。
  6. toString():将栈内容以字符串的方式的返回。

四.用代码封装栈结构

function Stack() {
this.items = []
this.prototype.push = function(element) {
this.items.push(element)
}
this.prototype.pop = function() {
return this.items.pop()
}
this.prototype.peek = function () {
return this.items[this.items.length - 1]
}
this.prototype.isEmpty = function () {
if (this.items.length === 0) {
return false
}
return true
}
this.prototype.size = function () {
return this.items.length
}
this.prototype.toString = function() {
var str = ''
for (var i=0; i< this.items.length; i++) {
str += this.items[i] + ' '
}
return str
}
}
var s = new Stack()

五.应用

十进制转二进制

function dec2bin(decNumber) {
var binStack = new Stack() while (decNumber > 0) {
binStack.push(decNumber % 2 )
decNumber = Math.floor(decNumber / 2)
}
var binAryString = ''
while (!binStack.isEmpty()) {
binAryString += binStack.pop()
}
return binAryString
}

(js描述的)数据结构[栈结构](2)的更多相关文章

  1. (js描述的)数据结构[集合结构](6)

    (js描述的)数据结构[集合结构](6) 一.集合结构特点 1.集合中的元素不能重复. 2.集合是无序的. 二.集合的代码实现 function Set() { this.items = {} //1 ...

  2. (js描述的)数据结构[队列结构,优先级队列](3)

    (js描述的)数据结构[队列结构](3) 一.队列结构的特点: 1.基于数组来实现,的一种受限的线性结构. 2.只允许在表头进行删除操作,在表尾进行插入操作. 3.先进先出(FIFO) 二.队列的一些 ...

  3. (js描述的)数据结构[哈希表1.1](8)

    (js描述的)数据结构[哈希表1.1](8) 一.数组的缺点 1.数组进行插入操作时,效率比较低. 2.数组基于索引去查找的操作效率非常高,基于内容去查找效率很低. 3.数组进行删除操作,效率也不高. ...

  4. (js描述的)数据结构[双向链表](5)

    (js描述的)数据结构[双向链表](5) 一.单向链表的缺点 1.只能按顺序查找,即从上一个到下一个,不能反过来. 二.双向链表的优点 1.可以双向查找 三.双向链表的缺点 1.结构较单向链表复杂. ...

  5. (js描述的)数据结构[链表](4)

    (js描述的)数据结构 [链表](4) 一.基本结构 二.想比于数组,链表的一些优点 1.内存空间不是必须连续的,可以充分利用计算机的内存,事项灵活的内存动态管理. 2.链表不必再创建时就确定大小,并 ...

  6. (js描述的)数据结构[字典](7)

    (js描述的)数据结构[字典](7) 一.字典的特点 1.字典的主要特点是一一对应关系. 2.使用字典,剋通过key取出对应的value值. 3.字典中的key是不允许重复的,而value值是可以重复 ...

  7. 用JS描述的数据结构及算法表示——栈和队列(基础版)

    前言:找了上课时数据结构的教程来看,但是用的语言是c++,所以具体实现在网上搜大神的博客来看,我看到的大神们的博客都写得特别好,不止讲了最基本的思想和算法实现,更多的是侧重于实例运用,一边看一边在心里 ...

  8. (js描述的)数据结构[树结构1.1](11)

    1.树结构: 我们不能说树结构比其他结构都要好,因为每种数据结构都有自己特定的应用场景. 但是树确实也综合了上面的数据结构的优点(当然有点不足于盖过其他的数据结构,比如效率一般情况下没有哈希表高) 并 ...

  9. (js描述的)数据结构[树结构1.2](12)

    1.先序遍历 2.中序遍历 3.后序遍历 4.递归调用栈详解: 详细见: https://zhuanlan.zhihu.com/p/24291978 5.删除节点操作分析: 5.代码封装 //封装二叉 ...

随机推荐

  1. aireplay包注入攻击

    reaver爆破WPS PIN码: airodump-ng wlan0 reaver -i wlan0 -b D0:76:E7:51:2A:78 -vv   macchanger更改MAC地址: ma ...

  2. git回滚到任意一个版本

    1.首先查找提交的记录(-3表示显示最近的3条) git log -3 2.强制回滚到制定版本 git reset --hard 制定版本commitId 如:git reset --hard 4ba ...

  3. 小程序中内容审核功能的使用(后台使用thinkPHP5.1)

    本文包含文本和图片的检测 //接收要检测的文本内容并调用检测方法 public function textCheck(Request $request){ //内容安全识别 $data['conten ...

  4. 【分布式锁】04-使用Redisson实现ReadWriteLock原理

    前言 关于读写锁,大家应该都了解JDK中的ReadWriteLock, 当然Redisson也有读写锁的实现. 所谓读写锁,就是多个客户端同时加读锁,是不会互斥的,多个客户端可以同时加这个读锁,读锁和 ...

  5. [Java网络安全系列面试题]常见web攻击有哪些?

    搞Web开发离不开安全这个话题,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事.本篇主要简单介绍在Web领域几种常见的攻击手段及Java Web中的预防方式. 1. XSS 1.1 什么是 ...

  6. SpringMVC框架——转发与重定向

    网上摘取一段大神总结的转发与重定向的区别,如下: 转发(服务端行为) 形式:request.getRequestDispatcher().forward(request,response) 转发在服务 ...

  7. 关于手机淘宝3.25bug我的一些思考与建议

    这两天被手淘ios版3.25bug刷屏了,影响还是挺大的,仅3.25日当天截止到下午5点在微博上的话题阅读量,已经突破8000万.给广大网友带来一次吃瓜盛宴.我们先简单回顾下这个bug的故事线: 我查 ...

  8. 贪心-Course Schedule III

    2020-02-01 21:37:39 问题描述: 问题求解: 对于课程来说截止时间在前面的肯定需要优先安排,所以首先需要将courses按照deadline进行排序. 然后只需要不断的加入当前的课程 ...

  9. jvm:内存结构(堆、方法区、程序计数器、本地方法栈、虚拟机栈)

    1.jvm内存结构 静态编译:把java源文件编译成字节码文件class,这个时候class文件以静态方式存在. 类加载器:把java字节码文件加载到内存中 方法区:将字节码放到方法区作为元数据(简单 ...

  10. [SQL]CASE WHEN的用法及总结

    CASE WHEN的用法及总结 一.已知数据按照另外一种方式进行分组,分析 二.用一个SQL语句完成不同条件的分组 三.在Check中使用Case函数 四.根据条件有选择的UPDATE 五.两个表数据 ...