美文网首页
单链表和双链表

单链表和双链表

作者: Captain_w | 来源:发表于2018-07-06 15:53 被阅读15次

单链表(可以用来实现栈和队列)

    private class Node {
        /**
         * 链表存储的数据(泛型)
         */
        Item item;
        /**
         * 指向下一个节点的指针
         */
        Node next;
    }

删除链表的元素

image.png

添加元素

image.png

双向链表(实现LinkedList)

  /**
     * 链表节点
     * @param <AnyType> 
     */
    private static class Node<AnyType> {
        /**
         * @param d 数据
         * @param p 上一个节点
         * @param n 下一个节点
         */
        public Node(AnyType d, Node<AnyType> p, Node<AnyType> n) {
            data = d;
            prev = p;
            next = n;
        }

        /**
         * 数据
         */
        public AnyType data;
        /**
         * 上一个节点
         */
        public Node<AnyType> prev;
        /**
         * 下一个节点
         */
        public Node<AnyType> next;
    }
image.png

添加元素

image.png

    /**
     * 向目标元素p之前插入x
     *
     * @param p 目标p
     * @param x 插入的元素
     */
    private void addBefore(Node<AnyType> p, AnyType x) {
        /*构建一个新node,prev是p.prev,next是p  1,3*/
        Node<AnyType> newNode = new Node<>(x, p.prev, p);
        /*新node的上一个节点的next 指向自己 2*/
        newNode.prev.next = newNode;
        /*p的prev 指向自己 4*/
        p.prev = newNode;
        theSize++;
        modCount++;

    }

删除元素

image.png
    /**
     * 删除目标节点
     *
     * @param p 目标节点
     * @return 删除的数据
     */
    private AnyType remove(Node<AnyType> p) {
        p.next.prev = p.prev;
        p.prev.next = p.next;
        theSize--;
        modCount++;
        return p.data;
    }

相关文章

  • 链表

    链表:通过“指针”将零散的内存块联系起来。常见链表结构:单链表、循环链表和双链表。 单链表 对比数组学习单链表 循...

  • 第二章 数据结构模板

    单链表 —— 模板题 AcWing 826. 单链表 双链表 —— 模板题 AcWing 827. 双链表 栈 —...

  • 数据结构之链表

    链表分为单链表,双向链表和循环链表 链表的时间复杂度 插入 O(n) 删除 O(1) 随机访问 O(n) 单双链表...

  • 2018-07-26

    合并有顺序的数组 打印两个有序链表的公共部分 在单链表和双链表中删除倒数第k个节点 单链表 双链表 删除链表的中间...

  • 链表的操作和算法相关

    github->demo1、创建(单链表、双链表、循环链表)2、翻转单链表(递归和非递归)3、判断链表是否存在环。...

  • 简单的数据结构

    1. 数组 array 所谓数组,是有序的元素序列 2. 链表 list 属于线性表, 分为单链表和双链表,单链表...

  • LeetCode 707. 设计链表

    707. 设计链表 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 ne...

  • 单链表和双链表

    单链表(可以用来实现栈和队列) 删除链表的元素 添加元素 双向链表(实现LinkedList) 添加元素 删除元素

  • 链表-链表的建立以及增删操作

    1.单链表 2.单向循环链表 3.双链表

  • 2021-11-11 707. 设计链表【Medium】

    设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前...

网友评论

      本文标题:单链表和双链表

      本文链接:https://www.haomeiwen.com/subject/xttbuftx.html