链表(一)

  1. 链接结构 , 是无索引的 , 动态扩容的数据结构. 缺点是不能随机访问.
    这里写图片描述
  2. 其 构造普遍为如下所示, 包含下一个节点数据,以及自身数据
class node<E> {
    private E e;
    private node next;
}
  1. 从头 , 至尾 . 链接结构也是线性结构的一种.
    这里写图片描述
  2. 如下代码所示 , 是一个简单的链表实现. 其内暂时使用了index索引, 来进行数据的插入. 以首元素作为其成员属性, 其内并维护一个私有的不对外公开的元素节点. 并将其作为链表结构的实现的基本元素.
package sky.java.linked;

/**
 *  自定义链表类容器
 *      1. 链表的结构为 节点内含下一个节点
 */
public class LinkedList<E> {

    private int size; // 记录容器个数
    private Node head; //记录首元素

    // 容器首部添加元素
    public void addFirst(E e) {
        /**
         *  解释一哈
         *      1. 创建对象 , 将head作为其next属性
         *      2. 将该对象赋值于  head
         */
        head = new Node(e,head);
        size++;
    }

    // 中部添加元素
    public void add(int index, E e) {
        /**
         * 解释一哈
         *  1. 除了head , 其他元素均有一个记录该元素的上一个元素
         *  2. 通过循环, 获取该索引的所在的元素的上一个元素
         *  3. 将e的next设置为该元素的next
         *  4. 将该元素的next设置为e
         */
        if (index == 0) {
            addFirst(e);
        }else {
            Node prev = head;
            for (int i = 0; i < index-1; i++) {
                prev = prev.next;
            }
            prev.next = new Node(e,prev.next);
            size++;
        }

    }
    // 尾部添加元素
    public void addLast(E e) {
        add(size,e);
    }

    private class Node{
        private E e;
        private Node next;

        public Node(E e, Node next) {
            this.e = e;
            this.next = next;
        }

        public Node() {
            this(null,null);
        }

        public Node(E e) {
            this(e,null);
        }

        @Override
        public String toString() {
            return e.toString();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34531925/article/details/81124566
今日推荐