链表

来源:互联网 发布:皇室战争电磁炮数据 编辑:程序博客网 时间:2024/04/30 10:43

最近在看《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  





















0 0
原创粉丝点击