Js与数据结构
文章平均质量分 59
记录js学习,并通过js实现数据结构
岑**
这个作者很懒,什么都没留下…
展开
-
Js实现图
Js实现图1.图的表示方式2.图的添加操作3.图的toString方法4.图的遍历1.图的表示方式①邻接矩阵邻接矩阵让每个节点和一个整数相关联,该整数作为数组的下标。用一个二维数组表示顶点之间的连接。在二维数组中,0表示无连接,1表示有连接。邻接矩阵的问题是如果图是个稀疏图,那么会浪费很多空间去存储大量无意义的0.②邻接表邻接表由图中每个顶点以及和顶点相邻的顶点列表组成。邻接表可以用map或者哈希表来表示。如图:邻接表计算出度:直接看每个顶点后边相关的顶点数。2.图的添加操作//添加方法(原创 2022-03-26 21:33:56 · 2177 阅读 · 0 评论 -
红黑树学习
Js实现红黑树1.红黑树的规则2.红黑树的变色3.红黑树的左旋转和右旋转4. 红黑树的插入操作1.红黑树的规则节点时黑色或红色根节点是黑色每个叶子结点都是黑色的空节点(NIL节点)每个红色节点的两个子节点都是黑色(从每个叶子到根的所有路径不能有两个连续的红色节点)从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。以上的约束,确保了红黑树的关键特性:从根到叶子的最长路径,不会超过最短可能路径的两倍。2.红黑树的变色插入一个新节点时,可能会使树不再平衡,可以通过三种方式的变换,让树原创 2022-03-26 16:38:31 · 337 阅读 · 0 评论 -
Js实现二叉树
Js实现二叉树1.二叉树特性2.二叉搜索树(BST)2-1.向树中插入一个新的键1.二叉树特性一个二叉树第i层最多的节点数为2^(i-1),i>=1;深度==层数;深度为k的二叉树最多的节点数为2^k-1,k>=1;对于任何非空的二叉树T,若n0表示叶节点的个数,n2表示度为2的非叶节点的个数,则有n0=n2+1.2.二叉搜索树(BST)二叉搜索树是一颗二叉树,可以是空;如果不为空: 非空左子树的所有键值小于其根节点的原创 2022-03-26 12:20:55 · 1808 阅读 · 1 评论 -
Js实现哈希表
Js实现哈希表1.哈希表是什么?2.哈希表的一些概念3.在哈希化过程中,出现冲突的解决方案1.哈希表是什么?哈希表的结构就是数组,它神奇的地方在于对下标值得变换,这种变换称之为哈希函数,通过哈希函数可以获取HashCode.2.哈希表的一些概念哈希化:将大数字转化成为数组范围内下标的过程。哈希函数:通常我们将单词转成大数字,大数字在进行哈希化的代码实现放在一个函数中,这个函数就是哈希函数。哈希表:最终将数据插入到这个数组,对整个结构的封装,称之为一个哈希表。3.在哈希化过程中,出现冲突的解原创 2022-03-24 20:38:52 · 2219 阅读 · 0 评论 -
Js实现封装栈
1.基于数组实现栈把数组及数组的方法封装成一个栈//基于数组实现封装栈 function Stack(){ //栈的属性 this.item=[]; //栈的相关操作 //1.将元素压入栈 Stack.prototype.Push=function(element){ this.item.push(element); } //2.将元素弹原创 2022-03-23 22:16:24 · 337 阅读 · 0 评论 -
Js实现封装队列
1. 基于数组实现队列将数组及数组的方法封装成一个队列//基于数组实现队列的封装 function Queue(){ //队列属性 this.item=[]; //队列的基本操作 //向队列尾部添加一个或多个新的项 Queue.prototype.enQueue=function (Element){ this.item.push(Element);原创 2022-03-23 22:15:21 · 517 阅读 · 0 评论 -
Js实现双向链表
1.实现双向链表的插入(尾插法)图解:对于第二种情况,其中②③步可以颠倒。代码实现://向链表尾部添加一个新的项(尾插法) DoubleLinkedList.prototype.append=function(data){ //创建一个新节点 var newNode=new Node(data); //当插入的节点为第一个节点时 if(this.length==0){ this.head=newN原创 2022-03-23 22:07:55 · 447 阅读 · 0 评论 -
Js实现链表
1.链表的插入(尾插法)图形描述过程代码实现function LinkedList(){ //节点类 function Node(data){ this.data=data; this.next=null; } //属性 this.head=null;//空链表时head指向null this.length=0;//链表长度 //向链表尾部添加一个新的项(尾插法) L原创 2022-03-22 23:15:08 · 1462 阅读 · 0 评论 -
ES6-set和map学习记录
Setset得益于数据结构 Set 查找更快速⾼效,但也因为数据结构的内部数据是⽆序的,⽆法实现按下标改查,排序等操作 //set创建 //建立空集合 var set1=new Set([]); console.log(set1);//Set [] //建立非空集合,集合会过滤掉重复元素 var set2=new Set([1,2,1,3]); console.log(set2);//Set(3) [ 1, 2, 3 ] //去原创 2022-03-21 19:57:21 · 748 阅读 · 0 评论 -
记录JS学习
数据类型<script> //typeof获取基本数据类型 //基本数据类型有String,Number,Boolean,Null,Undefined //引用数据类型有Object,Array,Function var a=1; var b='hello'; var c; var d=true; var e=new Array(1,2,3); var f={ name:'lisi', age原创 2022-03-21 15:55:14 · 229 阅读 · 0 评论