循环链表 忘是亡心i 2022-01-20 05:15 421阅读 0赞 好久没有接触数据结构和算法了,但是这些在面试中还是需要的所以打算重新复习下 今天打算用js来实现循环链表,看下别人怎么实现,发现很少使用js实现的,而且实现有点问题在对head节点进行删除或者插入修改引用有问题,所以打算自己来实现下加深印象。 下面是实现的主要代码: function CirLinkList() { function Node(element) { this.element = element; this.next = null; } var length = 0; var head = null, tail = null; this.append = function(element) { var node = new Node(element), current; if (!head) { head = node; head.next = head; tail = head; } else { current = head; while (current.next !== head) { current = current.next; } current.next = node; tail = node; node.next = head; } length++; return true; } this.insert = function(position,element) { var node = new Node(element), current; if (position > -1 && position < length) { var index = 0, current = head; if (position === 0) { node.next = head; tail.next = node; head = node; } else { while (index++ < position) { current = current.next; } node.next = current.next; current.next = node; } length++; return true } else { return false; } } this.remove = function(element) { if (element === head.element) { if (length === 1) { head = null; } else { tail.next = head.next; head = tail.next; } length--; return true; } else { current = head; while (current.next !== head) { if (current.next.element === element) { current.next = current.next.next; if (current.next === head) tail = current; length--; return true; } current = current.next; } } return false; } this.getHead = function() { return head; } this.size = function() { return length; } this.isEmpty = function() { return head ? false : true; } } let cirLink = new CirLinkList(); let i = 1; cirLink.append(1); cirLink.append(2); cirLink.insert(0, 3); cirLink.remove(3); cirLink.insert(0, 0); cirLink.append(3) let current = cirLink.getHead(); while (current) { console.log(current.element); if (i === 6) break; i++; current = current.next; } 复制代码 -------------------- 遍历结果0, 1, 2, 3, 0, 1
相关 【链表】单链表、双向循环链表 文章目录 前言 一:链表(LinkedList) 1.1 链表分类 1.2 介绍 1.3 链表的概念及结构 二: 骑猪看日落/ 2024年03月24日 18:19/ 0 赞/ 217 阅读
相关 循环链表 前文回顾 在 [单链表][Link 1] 中,我们重点介绍了单链表,涉及到单链表的结构以及单链表元素的读取、插入、删除。 这篇文章将对循环链表进行简单的介绍。 举例 今天药忘吃喽~/ 2023年10月05日 20:33/ 0 赞/ 2 阅读
相关 循环链表 循环链表和单链表没有本质上的差别。唯一不同的链表的最后不再是空的了,而是指向了first头指针。只有这样我们才会实现链表的循环功能,那么问题来了,我们在下面的函数功能中 ╰+哭是因爲堅強的太久メ/ 2022年08月13日 13:52/ 0 赞/ 238 阅读
相关 循环链表 一、解析 将单链表中终端结点的指针端由空指针改为指向头结点,就使整个链表形成一个环,这种头尾相接的单链表成为单循环链表,简称循环链表(circular linked list 男娘i/ 2022年06月18日 09:15/ 0 赞/ 290 阅读
相关 循环链表 循环链表 循环链表的原理:最后一个节点的next指向头节点,而不是NULL ![在这里插入图片描述][20181114202301997.png] - 迈不过友情╰/ 2022年04月17日 02:42/ 0 赞/ 264 阅读
相关 循环链表 好久没有接触数据结构和算法了,但是这些在面试中还是需要的所以打算重新复习下 今天打算用js来实现循环链表,看下别人怎么实现,发现很少使用js实现的,而且实现有点问题在对head 忘是亡心i/ 2022年01月20日 05:15/ 0 赞/ 422 阅读
相关 【数据结构】(循环链表)链接循环单链表 > 算法思想:这个就很简单了就是找尾指针的过程进行解链,和链接就行 void Link_A_B(LinkList &A,LinkList &B){ 落日映苍穹つ/ 2021年10月30日 00:20/ 0 赞/ 587 阅读
相关 循环链表/双向链表 Java实现循环链表 / @auther: 巨未 @DATE: 2019/1/4 0004 20:12 @Descriptio 深藏阁楼爱情的钟/ 2021年09月23日 07:02/ 0 赞/ 531 阅读
相关 循环链表 循环链表的定义和结构 在单链表中,使其最后一个结点的指针又指回到第一个结点,这样的线性链表叫做循环链表。 ![Center][] 判断表尾的条件:p→next==L 判 Bertha 。/ 2021年09月10日 23:06/ 0 赞/ 452 阅读
还没有评论,来说两句吧...