栈 :last-in-first-out

栈有自己特殊的规则,只能 后进入的元素 ,最先被推出来,我们只需要模拟这个规则,实现这个规则就好。 peek是返回栈顶元素(最后一个进入的)。

  1. /**
  2. * 栈 后入先出
  3. * @constructor
  4. */
  5. function Stack(){
  6. this.pop = pop;
  7. this.push = push
  8. //栈顶位置
  9. this.top= 0;
  10. this.length = 0;
  11. this.dataStore = [];
  12. this.peek = peek;
  13. this.clear = clear;
  14. this.length = length;
  15. //返回栈顶元素
  16. function peek(){
  17. return this.dataStore[this.top-1];
  18. }
  19. function clear(){
  20. this.top=0;
  21. this.dataStore=[];
  22. }
  23. function length (){
  24. return this.top;
  25. }
  26. function pop(){
  27. return this.dataStore[--this.top];
  28. }
  29. function push(element){
  30. this.dataStore[this.top++]=element;
  31. }
  32. function empty(){}
  33. }
  34. //栈的应用
  35. /**
  36. * 进制转换
  37. * @param num 数字 *10进制
  38. * @param base 转换进制 任何进制
  39. * @returns {string}
  40. */
  41. function mulBase(num, base) {
  42. var s = new Stack();
  43. do {
  44. s.push(num % base);
  45. num = Math.floor(num /= base);
  46. } while (num > 0);
  47. var converted = "";
  48. while (s.length() > 0) {
  49. converted += s.pop();
  50. }
  51. return converted;
  52. }
  53. var s = mulBase(32,2)
  54. console.log(s)
  55. /**
  56. * 判断字符是否 回文 *回文是指这样一种现象:一个单词、短语或数字,从前往后写和从后往前写都是一样的。
  57. * @param word
  58. * @returns {boolean}
  59. */
  60. function ishuiwen(word){
  61. var s = new Stack()
  62. for(var i=0;i<word.length;i++){
  63. s.push(word[i])
  64. }
  65. var foword = '';
  66. while(s.length()>0){
  67. foword+=s.pop()
  68. }
  69. return word==foword;
  70. }
  71. var hs = 'aca'
  72. console.log(hs+"判断是否回文:"+ishuiwen(hs))

栈的实现 -- 数据结构与算法的javascript描述 第四章的更多相关文章

  1. 检索算法 -- 数据结构与算法的javascript描述 第13章

    检索算法-如何在列表中查找特定的值. 顺序查找 从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果,它属于暴力查找技巧的一种,在执行查找时可能会访问到数据结构里的所有元素. 代码: / ...

  2. 排序算法 -- 数据结构与算法的javascript描述 第12章

    排序是常见的功能,给定一组数据,对其进行排序. 在此之前,我们需要准备个基础工作--自动生成数组,并可以对该组数据做任何处理. /** * 测试类 ,数组 * @param numElements * ...

  3. 字典 -- 数据结构与算法的javascript描述 第七章

    字典 字典是一种以键-值对形式存储数据的数据结构 最基本功能规划 add 添加数据到字典 remove 从字典中移除数据 get 从字典中取出数据 count 统计字典数据量 find 查找数据在字典 ...

  4. 链表的实现 -- 数据结构与算法的javascript描述 第六章

    链表 链表是由一组节点组成的集合.每个节点都使用一个对象的引用指向它的后继.指向另一个节点的引用叫做链 结构示意图 : 链表头需要我们标识 head { element:head,next:obj1 ...

  5. 队列的实现 -- 数据结构与算法的javascript描述 第五章

    队列也是列表的一种,有不同于列表的规则. 先进先出 入队方法 出队方法 可以找到队首 可以找到队尾 可以查看队列有多长 可以查看队列是否为空 这是一个基本的需求,围绕他来实现,当然我们可以自己扩展列表 ...

  6. 散列表的实现 -- 数据结构与算法的javascript描述 第八章

    散列表(哈希表 散列是一种常用的数据存储技术,散列后的数据可以快速地插入或取用. 散列表需要一个散列值(key)来存储指定数据,取数据也是依靠此. 散列值可以依靠计算数据的 ASCII码来获得,但是这 ...

  7. 二叉树的实现 -- 数据结构与算法的javascript描述 第十章

    /** * 树,一种非线性的数据结构. 以分层的方式存储数据. * 一棵树最上面的节点成为根节点,如果一个节点下面有多个节点,这个节点称为父节点,下面的节点称为子节点 * 没有任何子节点的节点,陈宝国 ...

  8. 集合的实现 -- 数据结构与算法的javascript描述 第九章

    集合 集合(set)是一种包含不同元素的数据结构. 集合中的元素称为成员. 集合的两个最重要特性是:首先,集合中的成员是无序的:其次,集合中不允许相同成员存在. code function Set() ...

  9. 列表的实现-----数据结构与算法JavaScript描述 第三章

    实现一个列表 script var booklist = new List(); booklist.append('jsbook'); booklist.append('cssbook'); book ...

随机推荐

  1. 【PAT】1012. The Best Rank (25)

    题目链接: http://pat.zju.edu.cn/contests/pat-a-practise/1012 题目描述: To evaluate the performance of our fi ...

  2. wx.BookCtrlBase

    wx.BookCtrlBase A book control is a convenient way of displaying multiple pages of information, disp ...

  3. jquery动态连接节点

    <1> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  4. Swfit中视图跳转

    .跳转到任一UIViewController var sb = UIStoryboard(name: "Main", bundle:nil) var vc = sb.instant ...

  5. Excel 提供数据 更新或者插入数据 通过函数 自动生成SQL语句

    excel 更新数据 ="UPDATE dbo.yt_vehicleExtensionBase SET yt_purchase_date='"&B2&"' ...

  6. MyEclipse中jquery文件报错

  7. NOIP2012模拟试题【圆圈舞蹈( circle)

    2.圆圈舞蹈( circle) [问题描述] 熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞.由于没有严格的教育,奶牛们之间的间隔不一致. 奶牛想知道两只最远的奶牛到底隔了多远.奶牛A到B的距离为A顺 ...

  8. C++, const:

            问题: const成员函数和普通成员函数可以是同名同参数吗? 可以,这是一种函数的重载. const成员函数可不可以修改对象的成员变量的值? 不可以修改.//error C3490: ...

  9. EC读书笔记系列之17:条款41、42、43、44、45、46

    条款41 了解隐式接口与编译器多态 记住: ★classes和templates都支持接口和多态 ★对classes而言接口是显式的(explicit),以函数签名为中心.多态则是通过virtual函 ...

  10. C/C++ 结构体成员在内存中的对齐规则(转载)

    这几天在看王艳平的<windows 程序设计>,第5章讲解了MFC框架是怎么管理窗口句柄到窗口实例之间的映射,用到了两个类CPlex和CMapPtrToPtr,用于管理内存分配的类(避免因 ...