最近在看《javascript的数据结构与算法》,将链表这一章重点内容总结下,方便日后复习!
对比与js中数组与链表:数组被实现为了对象,执行效率太慢!除了对数据的随机访问,链表几乎可以使用在任何一维数组的情况中。
链表简单构成:头结点--元素--元素--null
1.单向链表:
(1)增添:将新节点的 next 属性设置为“后面”节点的 next 属性对应的值,然后设置“后面”节点的 next 属性指向新节点(在元素后面添加)
newNode.next = current.next;
current.next = newNode; (2)删除:遍历链表中的元素,检查每一个节点的下一个节点中是否存储着待删除数据。如果找到,返回该节点(即“前一个”节点)(在元素后面删除)
prevNode.next = prevNode.next.next //跳过了待删除结点2.双向链表:
(1)添加:将新节点的 next 属性设置为“后面”节点的 next 属性对应的值,然后设置新节点的previous为“后面”节点,然后设置“后面”节点的 next 属性指向新节点
newNode.next = current.next;
newNode.previous = current;
current.next = newNode;
(2)删除:首先需要在链表中找出存储待删除数据的节点,然后设置该节点前驱的 next 属性,使其指向待删除节点的后继;设置该节点后继的 previous 属性,使其指 向待删除节点的前驱
currNode.previous.next = currNode.next;
currNode.next.previous = currNode.previous;
currNode.next = null;
currNode.previous = null;3.循环链表:
(1)添加:
newNode.next = current.next;
current.next = newNode;(2)删除:
prevNode.next = prevNode.next.next
5万+

被折叠的 条评论
为什么被折叠?



