javascript_数据结构的封装
用javascript封装各类数据结构
轻盈的风
欢迎大家一起讨论技术,共同进步!
展开
-
js封装数据结构_11_封装图结构
说到图,不得不想到数学中“图”,让我们来看看维基百科怎么描述的吧:在li'san'shu'x中,图(Graph)是用于表示物体与物体之间存在某种关系的结构。数学抽象后的“物体”称作节点或顶点(英语:Vertex,node或point),节点间的相关关系则称作边。在描绘一张图的时候,通常用一组点或小圆圈表示节点,其间的边则使用直线或曲线。...原创 2022-04-08 22:54:17 · 707 阅读 · 0 评论 -
js封装数据结构_10_字典
字典主要讲究一一对应关系,我们的JavaScript将Map(也就是映射也可以叫字典)已经封装的很好了,对象、symbol、字符串等等都可以作为key;这里就简单用对象来封装一个字典吧:function Dictionay() { // 字典属性 this.items = {}; // 方法 Dictionay.prototype.set = function (key, value) { this.items[key] = value; }; Dictiona原创 2022-04-08 16:05:36 · 582 阅读 · 0 评论 -
js封装数据结构_09_二叉搜索树
一、什么是二叉搜索树二叉查找树(英语:Binary Search Tree),也称为二叉查找树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值; 任意节点的左、右子树也分别为二叉查找树;二、二叉搜索树的有缺点优点:二叉查找树相比于其他数据结构的优势在于查找、插原创 2022-04-05 16:23:51 · 1030 阅读 · 0 评论 -
js封装数据结构_08_哈希表
一、哈希函数哈希函数:函数里面封装了将字符串转化为对应的index的具体实现;我们要将字符串转化为对应的index,首先得知道如何区分字符串,一般我们采用编码方案,也就是每一个字符都有自己对应的唯一的编码:现成的就是unicode(万国码),unicode是字符集没有规定如何存储对应的编码。unicode的实现有UTF-16、UTF-8、UTF-32,这里我们采用UTF-16;而js也给我们封装了对应的API:charCodeAt() //返回0·65535之间的整数,表示给定索引处的UTF原创 2022-03-26 13:33:52 · 644 阅读 · 0 评论 -
js封装数据结构_06_集合
一、集合的特点:由一组无序的,不能重复的元素构成;不能通过下标进行访问;二、这里我实现了:增:add,添加项删:remove,移除指定项,成功返回true,失败返回false clear,移除所有项查:has,集合中存在此元素则返回true其他:size,包含元素个数 values,返回包含所有集合元素的数组 集合间的操作:union,交集 intersection,并集 difference,差集 isSubsetTo,子集三、问题或不足边原创 2022-03-20 23:06:43 · 183 阅读 · 0 评论 -
js封装数据结构_05_双向链表
一、双向链表的特点:双向链表不同于单向链表,它既可以从头遍历到尾,又可以从尾遍历到头;链表一般有head、tail、length等属性,head指向头节点,length表示链表节点的个数,tail指向尾部节点;链表无法通过下标直接访问元素,需要从head指向的头节点或tail指向的尾节点开始一个一个的访问,直到找到对应的元素;二、这里我实现了:增:append,向链尾添加节点 insert,向特定位置插入新节点 删:removeAt,指定位置删除节点,成功返回删除节点.原创 2022-03-19 23:23:39 · 416 阅读 · 0 评论 -
js封装数据结构_04_单向链表
一、要想自己封装链表得先知道链表的特点:链表的每个元素有一个存储元素本身的节点和一个指向下一个节点的引用(有些语言是指针);链表一般有head、length等属性,一个指向头节点,一个表示链表节点的个数;链表无法通过下标直接访问元素,需要从head指向的头节点开始一个一个的访问,直到找到对应的元素;二、这里我实现了:增:append,向链尾添加节点 insert,向特定位置插入新节点 删:remove_identical,链表去重 removeAt,指定位置删除节点原创 2022-03-18 13:24:25 · 203 阅读 · 0 评论 -
js封装数据结构_03_优先级队列
优先级队列是不同于”先进先出“的队列,可以查看和取出优先级最高的元素;优先级是数字越小优先级越高;这里实现了:enqueue,插入元素; dequeue,删除优先级最高的元素; front,查看优先级最高的元素; isEmpty,是否为空; toString,重写toString(); 这里讲一下最难的enqueue的实现:先封装一个类中类,用于存放元素以及对应的优先级 // 类中类 function QueueElement(elemen原创 2022-03-18 13:02:29 · 711 阅读 · 0 评论 -
js封装数据结构_02_队列
队列比较简单,这里实现了enqueue、dequeue、front、isEmpty、size、toString等方法;function Queue() { // 属性 this.items = []; // 方法 // 1.将元素加入队列 Queue.prototype.enqueue = function (element) { this.items.push(element); }; // 2.从队列中删除前端元素 Queue.prototype.dequ原创 2022-03-18 12:44:23 · 793 阅读 · 0 评论 -
js封装数据结构_01_栈
最基本是数据结构,没什么难的;实现了push、pop、peek(查看栈顶元素)、isEmpty、size、toString等方法;function Stack() { // 栈中的属性 this.items = []; // 栈相关的操作 // 1.将元素压入栈 Stack.prototype.push = function (element) { this.items.push(element); }; // 2.从栈中取出元素 Stack.protot原创 2022-03-18 12:38:54 · 1104 阅读 · 0 评论