栈的特点:
- 栈内的元素只能通过列表的一端访问,这一端称为栈顶
- 先入后出。任何不在栈顶的元素都无法访问,为了得到栈底的元素,必须先拿掉上面的元素
现实生活中的栈:
咖啡厅内的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞
在这一摞盘子的最上面。
栈的主要方法和属性:
- 入栈。push方法;
- 出栈。pop方法;
- 访问栈顶元素。peek方法;
- 清除所有栈内元素。clear方法;
- 记录栈顶位置。top属性;
- 判断栈内是否有元素存在。length方法;
栈的实现:
从定义一个stack构造函数开始
function Stack() { this.dataStore = [];//保存栈内元素 this.top = 0; }
对栈的各种操作
Stack.prototype={ push:function push(element) { this.dataStore[this.top++] = element;//添加一个元素并将top+1 }, peek:function peek() { return this.dataStore[this.top-1];//返回栈顶元素 }, pop:function pop() { return this.dataStore[--this.top];//返回栈顶元素并将top-1 }, clear:function clear() { this.top = 0;//将top归0 }, length:function length() { return this.top;//返回栈内的元素个数 } }
测试:
var lk=new Stack(); lk.push("likeke"); lk.push("zhangsan"); lk.push("wangwu"); lk.peek();//"wangwu" lk.length();3 lk.pop();//"wangwu" lk.peek();//"zhangsan" lk.clear(); lk.peek();//undefind lk.length();0
栈的使用:
1.十进制转换为2~9进制
function mulBase(num, base) { var s = new Stack(); do { s.push(num % base); num = Math.floor(num /= base); } while (num > 0); var converted = ""; while (s.length() > 0) { converted += s.pop(); } return converted; } mulBase(12,2);//"1100" mulBase(19,5);//"34" mulBase(19,3);//"201"
2.判断给定字符串是否是回文
function isPalindrome(word) { var s = new Stack(); for (var i = 0; i < word.length; ++i) { s.push(word[i]); } var rword = ""; while (s.length() > 0) { rword += s.pop(); } if (word == rword) { return true; } else { return false; } } isPalindrome("likeke");//false isPalindrome("lkijikl");//true
3.计算任意数字的阶乘
//如果使用递归我们一般会这样写 function factorial(n) { if (n === 0) { return 1; } else { return n * factorial(n-1); } } //那么使用Stack类呢,如何来模拟这个递归过程 function fact(n) { var s = new Stack(); while (n > 1) { s.push(n--); } var product = 1; while (s.length() > 0) { product *= s.pop(); } return product; } factorial(5); // 120 fact(5); // 120
当然,如果只是想实现以上的进制转换以及判断回文的功能函数,我们可以有更简便的方法去实现它,此处只是为了说明此数据结构的特点使用了这些例子。
相关推荐
JS 数据结构与算法.pdf 本书主要介绍了 JavaScript 语言的基础知识,包括数据结构和算法。以下是该书的详细知识点: 一、JavaScript 基础知识 * 变量和数据类型 * 运算符和控制结构 * 函数和对象 * 数组和字符串 ...
数据结构与算法是计算机科学的基础,对于任何编程语言来说,理解和掌握它们都是至关重要的,JavaScript也不例外。本资源“数据结构与算法-JavaScript描述”显然是一本专注于将这些概念应用于JavaScript编程的电子书...
《数据结构与算法JavaScript描述》这本书主要探讨了如何在JavaScript环境中实现高效的数据结构和算法。随着JavaScript在服务器端编程中的广泛应用,尤其是通过Node.js和SpiderMonkey等平台的支持,JavaScript开发者...
《Java-C-JS数据结构与算法合集》是针对编程领域的三大主流语言——Java、C和JavaScript,深入探讨数据结构与算法的宝贵资源。数据结构是计算机存储、组织数据的方式,而算法是解决问题的精确步骤,它们是软件开发的...
《数据结构与算法(Java版-英文)》一书由Robert Lafore撰写,是一本针对数据结构和算法的深入解析指南,特别适用于那些已经掌握基本编程技能并希望进一步提升自己在数据处理方面能力的读者。本书采用Java语言作为...
《Java数据结构与算法》是一本深入探讨编程基础与进阶技术的书籍,重点在于讲解如何在Java语言中实现各种数据结构和算法。Applet是Java的一个重要特性,它允许小型程序(通常为图形用户界面)嵌入到网页中运行。在本...
该源码在VS2010上,正确编译、运行,无任何错误和警告。
第1章 课程导学对课程整体进行介绍,让您切实感受到前端工程师学习数据结构与算法的必要性。 1-1 课程导学 试看 1-2 学习姿势 1-3 说明与承诺第2章 基础算法之“字符串类”字符串作为JS最基本的数据类型,掌握好字符...
《数据结构与算法JavaScript描述》是一本深入探讨计算机科学核心概念——数据结构和算法的书籍,特别使用JavaScript作为实现语言。这本书是图灵程序设计丛书中的一部,旨在帮助读者理解并掌握如何用动态且直观的方式...
"数据结构与算法javascript学习代码实现.zip"这个压缩包很可能包含了一系列用JavaScript实现的数据结构和算法示例代码,对于学习者来说是一个宝贵的资源。 1. **数据结构**:数据结构是组织、存储和管理数据的方式...
总之,"数据结构和算法必知必会的50个代码实现"是一个宝贵的资源,它将理论知识与实践相结合,帮助你巩固基础,提升解决实际问题的能力。在学习过程中,记得动手实践,不断调试和优化代码,这样才能更好地掌握这些...
本压缩包“数据结构与算法的JavaScript实现及应用.zip”提供了一套全面的大学生数据结构学习资源,帮助学生深入理解并实践这些核心概念。 在数据结构中,我们首先会遇到数组、链表、栈和队列等基础类型。数组是最...
本资源包“js数据结构与算法.zip”显然是针对想要深入学习JavaScript中的数据结构与算法的学生或开发者设计的。 首先,让我们来讨论数据结构。数据结构是指组织、存储和管理数据的方式。在JavaScript中,常见的数据...
《DSinJS——数据结构与算法的JavaScript实现及应用》 在编程领域,数据结构与算法是基础且至关重要的组成部分,它们是解决问题的关键工具。DSinJS项目将这些概念引入了JavaScript这一流行的前端和全栈开发语言中,...
在这个“Js数据结构_js数据结构_js实现算法_asleephi9_源码”的压缩包中,包含了用JS实现的各种数据结构和算法,这对于学习和提升JavaScript编程技能非常有帮助。 首先,我们来看看数据结构部分。数据结构是组织和...
JavaScript数据结构与算法实现合集是一系列用于深入理解编程基础的资源集合,主要关注于如何在JavaScript中构建和操作各种数据结构以及应用不同算法。这个压缩包中的"DataStructuresAndAlgorithms-main"目录可能包含...