资讯专栏INFORMATION COLUMN

javascript数据结构--列表和栈的创建

Lycheeee / 725人阅读

摘要:列表的抽象数据类型定义后续列表上传代码二栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。栈被称为一种后入先出,的数据结构。另一个常用的操作是预览栈顶的元素。方法清除栈内所有元素,属性记录栈内元素的个数。

列表是一组有序的数据。每个列表中的数据项称为元素。在 JavaScript 中,列表中的元素 可以是任意数据类型。列表中可以保存多少元素并没有事先限定,实际使用时元素的数量 受到程序内存的限制。

不包含任何元素的列表称为空列表。列表中包含元素的个数称为列表的 length。在内部实 现上,用一个变量 listSize 保存列表中元素的个数。可以在列表末尾 append 一个元素, 也可以在一个给定元素后或列表的起始位置 insert 一个元素。使用 remove 方法从列表中 删除元素,使用 clear 方法清空列表中所有的元素。

列表的抽象数据类型定义(后续列表上传)

代码:

</>复制代码

  1. function List() {
  2. this.listSize = 0;
  3. this.pos = 0;
  4. this.dataStore = [];
  5. this.clear = clear;
  6. this.find = find;
  7. this.toString = toString;
  8. this.insert = insert;
  9. this.append = append;
  10. this.remove = remove;
  11. this.front = front;
  12. this.end = end;
  13. this.prev = prev;
  14. this.next = next;
  15. this.length = length;
  16. this.currPos = currPos;
  17. this.moveTo = moveTo;
  18. this.getElement = getElement;
  19. this.length = length;
  20. this.contains = contains;
  21. }
  22. function front() {
  23. this.pos = 0;
  24. }
  25. function end() {
  26. this.pos = this.listSize-1;
  27. }
  28. function prev() {
  29. if (this.pos > 0) {
  30. --this.pos;
  31. }
  32. }
  33. function next() {
  34. if (this.pos < this.listSize-1) {
  35. ++this.pos;
  36. }
  37. }
  38. function currPos() {
  39. return this.pos;
  40. }
  41. function moveTo(position) {
  42. this.pos = position;
  43. }
  44. function getElement() {
  45. return this.dataStore[this.pos];
  46. }

栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。咖啡厅内 的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞 在这一摞盘子的最上面。栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。

由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元 素,必须先拿掉上面的元素。

对栈的两种主要操作是将一个元素压入栈和将一个元素弹出栈。入栈使用 push() 方法,出 栈使用 pop() 方法。

另一个常用的操作是预览栈顶的元素。pop() 方法虽然可以访问栈顶的元素,但是调用该方 法后,栈顶元素也从栈中被永久性地删除了。peek() 方法则只返回栈顶元素,而不删除它。

push()、pop() 和 peek() 是栈的 3 个主要方法,但是栈还有其他方法和属性。clear() 方法 清除栈内所有元素,length 属性记录栈内元素的个数。我们还定义了一个 empty 属性,用 以表示栈内是否含有元素,不过使用 length 属性也可以达到同样的目的。

代码

</>复制代码

  1. function Stack() {
  2. this.dataStore = [];
  3. this.top = 0;
  4. this.push = push;
  5. this.pop = pop;
  6. this.peek = peek;
  7. this.clear = clear;
  8. this.length = length;
  9. }
  10. function push(element) {
  11. this.dataStore[this.top++] = element;
  12. }
  13. function peek() {
  14. return this.dataStore[this.top-1];
  15. }
  16. function pop() {
  17. return this.dataStore[--this.top];
  18. }
  19. function clear() {
  20. this.top = 0;
  21. }
  22. function length() {
  23. return this.top;
  24. }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84346.html

相关文章

  • 学习数据结构与算法之栈与队列

    摘要:于是翻出了机房里的这本学习数据结构与算法开始学习程序员的基础知识。这本书用了我最熟悉的来实现各种数据结构和算法,而且书很薄,可以说是一本不错的入门教程。队列在头部删除元素,尾部添加元素。 本系列所有文章:第一篇文章:学习数据结构与算法之栈与队列第二篇文章:学习数据结构与算法之链表第三篇文章:学习数据结构与算法之集合第四篇文章:学习数据结构与算法之字典和散列表第五篇文章:学习数据结构与算...

    pingan8787 评论0 收藏0
  • 学习javascript数据结构(一)——栈和队列

    摘要:原文地址学习数据结构一栈和队列博主博客地址的个人博客几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构。他们就是栈和队列。我们称作栈顶,而另一端我们称作栈底。移除栈顶的元素,同时返回被移除元素。 前言 只要你不计较得失,人生还有什么不能想法子克服的。 原文地址:学习javascript数据结构(一)——栈和队列 博主博客地址:Damonare的个人博客 几乎所有的编程...

    doodlewind 评论0 收藏0
  • JavaScript数据结构《栈》

    摘要:我们都知道数组是里面比较常用的一种数据结构,栈和数组类似,定义如下栈是一种遵从后进先出原则的有序集合。新增加和待删除的元素都保存在栈的尾部,也称栈顶,相反的另一端就叫栈底,在栈的这种数据结构里面,我们新增的元素都在栈顶,旧的元素都在栈底。 由于不是计算机专业出身,对数据结构这些了解的比较少,最近看了一些相关的书籍,这里做一些总结。本篇要说的是栈。我们都知道数组是JavaScript里面...

    nanchen2251 评论0 收藏0
  • PHP面试知识梳理

    摘要:三次握手所谓三次握手,是指简历一个连接时需要客户端和服务器总共发送三个包三次握手的目的是连接服务器指定端口,简历连接,并同步连接双方的序列号并交换窗口大小信息。 关于作者 昨天在思否上发了这篇整理,晚上10点多看到了很多赞收藏和关注,其实挺愧疚的,因为最近在找工作这篇文章并没有整理完。看到这个还挺受欢迎的,也因为新工作基本定下来了,现在的公司正常交接中,打算下周末之前把这个知识梳理整理...

    archieyang 评论0 收藏0
  • JAVA中堆栈的区别

    摘要:堆内存主要作用是存放运行时创建的对象。堆内存用来存放由创建的对象和数组,在堆中分配的内存,由虚拟机的自动垃圾回收器来管理。这也是比较占内存的原因,实际上,栈中的变量指向堆内存中的变量,这就是中的指针 堆:(对象) 引用类型的变量,其内存分配在堆上或者常量池(字符串常量、基本数据类型常量),需要通过new等方式来创建。 堆内存主要作用是存放运行时创建(new)的对象。(主要用于存放对象,...

    RyanQ 评论0 收藏0

发表评论

0条评论

Lycheeee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<