博客
关于我
javascript数据结构
阅读量:655 次
发布时间:2019-03-15

本文共 1676 字,大约阅读时间需要 5 分钟。

有一个现代化的方式实现栈,我们可以定义一个函数式的Stack对象。这个对象包含一个私有数组items用来存储栈中的元素。 push方法用于将元素添加到栈的顶部。这个方法直接将元素添加到items数组的末尾。 pop方法用于从栈的顶部删除一个元素。通过调用数组的pop方法实现这个动作。 peek方法可以用来查看栈顶部的元素。它返回items数组最后一个元素。 isEmpty方法判断栈是否为空,返回items数组的长度是否为0。 clean方法重置栈,通过将items设置为空数组来实现清空栈的功能。 size方法返回栈的大小,即items数组的长度。

队列

我们可以通过下面的方式定义一个Queue对象来实现队列的功能。队列通过一个数组来存储元素。 enqueue方法用于将元素加入队列。通过调用数组的push方法来实现这个过程。 dequeue方法用于从队列中移除元素。调用数组的shift方法来实现移除队头元素。 front方法返回队列的最前端元素,直接返回数组的第一个元素。 isEmpty方法判断队列是否为空,通过检查数组的长度是否为0来实现。 size方法返回队列的大小,即数组的长度。

集合

我们可以使用一个对象来实现Set的功能。通过维护一个映射关系来记录集合中元素的存在情况。 has方法用于检查一个元素是否存在于集合中,通过检查该元素是否是对象的自身属性来实现。 add方法用于将一个元素加入集合。如果元素已经存在则返回false,否则将其加入集合并返回true。 remove方法用于从集合中移除一个元素,如果元素不存在则返回false,否则移除它并返回true。 getItem方法返回集合的内部映射项。 clear方法清空集合,将内部映射项重置为空对象,并将长度重置为0。 getSize方法返回集合的大小,即映射项的数量。

链表

链表由头节点和多个结节点构成。我们可以通过下面的方法来实现链表的功能。 Node函数定义了一个节点对象,其属性包括元素和指向下一个节点的指针。 append方法用于将一个元素添加到链表的末尾。如果链表为空则创建一个新的头节点,否则找到链表的末尾节点并将新节点添加到其后。 getHead方法返回链表的头节点。 insert方法用于将一个元素插入链表的指定位置。通过遍历链表找到插入位置,然后将新节点插入适当的位置。 traver方法用于遍历链表,可以通过传递一个回调函数来执行前序、中序和后序遍历。

哈希表

哈希表是一种能够在常数时间内完成查找和插入操作的数据结构。我们可以通过自定义的散列函数来实现哈希表的功能。 hashCode函数用于计算键的哈希值,通过对键的字符值进行累加来得到最终的散列值。 通过hashtable对象可以实现常见的数据结构操作,如添加、移除和查找。

树是一种二分搜索树,通过左键和右键方向来划分数据域。我们可以通过以下方式实现树的基本操作。 Node函数定义了一个节点对象,其属性包括值、左子节点和右子节点。 insertNode方法用于将节点插入到树的适当位置。如果新节点的值大于等于当前节点的值则插入到右边,否则插入到左边。 insert方法用于将值插入到树中,通过调用insertNode方法执行插入操作。 search方法用于查找树中的值。通过比较当前节点的值和目标值来决定方向,直到找到目标值或者遍历结束。 traver方法用于遍历树,可以通过传递回调函数来执行前序、十字方式和后序遍历。 remove方法用于从树中移除指定的值。通过递归调用removeNode方法来实现节点的移除,并确保树的结构保持平衡。

Graph类模拟了一个简单的无向图。通过顶点集合和边列表来实现图的存储和操作。 addVercal方法用于添加顶点,并初始化一个空的边列表。 addAdjlist方法用于添加边。对于无向图,每个边需要添加到两个相应顶点的边列表中。 print方法用于打印图的所有顶点和它们的连接边。通过遍历所有顶点并获取它们的邻接顶点来实现这个过程。

转载地址:http://lfymz.baihongyu.com/

你可能感兴趣的文章
Python 包管理器和 Node.js
查看>>
Python 单词字母顺序不变且所有倒排
查看>>
python 启动提示IDLE's subprocess didn't make conne...
查看>>
python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
查看>>
Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
查看>>
Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
查看>>
python编辑器打不开_关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路...
查看>>
python编译exe同时支持32位_第三周:同时管理64位和32位版本的Python,并用Pyinstaller打包成exe...
查看>>
Python 和Java 哪个更适合做自动化测试?
查看>>
Python编程:掌握高级语言程序设计。从零基础到精通,收藏这篇就够了!
查看>>
python 图片转ico
查看>>
python 图片转文字、语音转文字、文字转语音保存音频并朗读
查看>>
python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法
查看>>
Python 在并行进程之间共享字典
查看>>
Python 垃圾收集器文档
查看>>
python 基于 wordcloud + jieba + matplotlib 生成词云
查看>>
python 基于detectron或mask_rcnn的mask遮罩区域进行图片截取
查看>>
Python编程:Tkinter图形界面设计(2)
查看>>
Python 基础 - Day 5 Learning Note - 模块 之 标准库:time (1)
查看>>
Python 基础一
查看>>