摘要:而遍历链表,则是跟着首元素一直遍历至尾元素。单链表代码实现类实现类用来设置链表的节点相关信息本节点信息指向下一个节点的指针类实现类实现的是一些对链表进行操作的方法,包括插入删除节点查找节点等。
单链表初识
</>复制代码
链表是由一组节点组合成的集合.每个节点都使用一个对象的引用指向它的后继,指向另一个节点的引用叫做链
数组元素靠他们的位置进行引用,链表元素则是靠相互之间的关系进行引用,在下图中bread跟在milk后面而不是说bread是链表中的第二个元素。
而遍历链表,则是跟着首元素一直遍历至尾元素。由图可知尾元素指向一个null元素。
为了更好的标志处链表的起始节点,我们在前面设置一个特殊节点,叫做头节点
插入节点:在链表中插入一个节点效果非常的高,需要修改其前面的节点,使指针指向新节点
删除节点:删除节点即是将待删除元素的前驱节点指向待删除元素的后继节点。
单链表代码实现 Node类实现</>复制代码
//Node类用来设置链表的节点相关信息
// 1 本节点信息 2 指向下一个节点的指针
function Node(ele){
this.element=ele;
this.next=null;
}
Llist类实现
Llist类实现的是一些对链表进行操作的方法,包括插入、删除节点、查找节点等。
插入节点
</>复制代码
//Llist类的实现
function Llist(){
this.head=new Node("head");
}
//添加方法
Llist.prototype={
find:function(ele){
var curNode=this.head//从头节点开始遍历
while(curNode.element!=ele){
curNode=curNode.next;
}
return curNode;//返回找到的节点 若是没有找到则返回的是null
},
insert:function(newEle,ele){//插入节点
var newNode=new Node(newEle);
var curNode=this.find(ele);
newNode.next=curNode.next;
curNode.next=newNode;
},
display:function(){//遍历显示节点信息
var curNode=this.head;
while(curNode.next!=null){
console.log(curNode.next.element);//只显示有数据的节点
curNode=curNode.next;
}
}
}
测试
</>复制代码
//测试
var citys=new Llist();
citys.insert("赣州","head");
citys.insert("江西","赣州");
citys.insert("南昌","江西");
citys.display();
明天开始校招,先写到这里^+^
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/91556.html
摘要:实现移除给定的元素要移除的元素返回值表示移除成功方法说明移除单向链表中某个位置的元素。的前端乐园原文链接寒假前端学习学习数据结构与算法二链表 本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列第二篇文章:学习JavaScript数据结构与算法(二):链表第三篇文章:学习JavaScript数据结构与算法(三):集合第四篇文章:学习JavaScript数据结构与...
摘要:需求实现一个函数对链表进行升序排列插入排序。关于插入排序插入排序的介绍可以看,大体逻辑为建立一个新的空链表。遍历完成,返回新链表。代码如下总结因为有上个的函数的帮助,这个插入排序实现起来非常简单。 TL;DR 2016 年末最后一篇,对链表进行插入排序。系列目录见 前言和目录 。 需求 实现一个 insertSort() 函数对链表进行升序排列(插入排序)。实现过程中可以使用 上一个 ...
摘要:每个线性表上的数据最多只有前和后两个方向。数组链表队列栈等就是线性表结构。非线性表数据之间并不是简单的前后关系。不包含任何元素的栈称为空栈。移除栈顶的元素,同时返回被移除的元素。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度。 我们应该多掌握一些可移值的...
摘要:需求实现函数把两个链表合并成一个。新链表的节点是交叉从两个链表中取的。通过行的调换指针,我们可以保证下一次循环就是对另一个链表进行操作了。这样一直遍历到两个链表末尾,返回结束。参考资料的代码实现的测试 TL;DR 把两个链表洗牌合并成一个,系列目录见 前言和目录 。 需求 实现函数 shuffleMerge() 把两个链表合并成一个。新链表的节点是交叉从两个链表中取的。这叫洗牌合并。举...
摘要:类表示要加入链表的项。循环链表和普通链表之间唯一的区别在于,最后一个元素指向下一个元素的指针不是引用,而是指向第一个元素。这里就不进行代码实现了,大家可以结合上面的单向链表和双向链表自己实现一个循环链表。 一、定义 1.1 概念 前面我们学习了数组这种数据结构。数组(或者也可以称为列表)是一种非常简单的存储数据序列的数据结构。在这一节,我们要学习如何实现和使用链表这种动态的数据结构,这...
摘要:需求实现一个函数,把一个链表切分成两个。子链表的节点应该是在父链表中交替出现的。所以整个算法的解法就能很容易地用表示。唯一需要考虑的就是在每个循环体中判断节点该插入哪个链表。也有人使用持续增长的配合取余来做,比如。 TL;DR 把一个链表交替切分成两个,系列目录见 前言和目录 。 需求 实现一个 alternatingSplit() 函数,把一个链表切分成两个。子链表的节点应该是在父链...
阅读 2535·2021-11-15 11:37
阅读 2689·2021-09-23 11:21
阅读 3003·2021-09-07 10:11
阅读 3206·2019-08-30 15:53
阅读 2865·2019-08-29 15:13
阅读 1645·2019-08-26 13:57
阅读 1141·2019-08-26 12:23
阅读 2481·2019-08-26 11:51
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要