zoukankan      html  css  js  c++  java
  • LinkedList

    LinkedList双向链表的实现

     每个节点有由三个组成

    private static final class Link<ET> {
            ET data;

            Link<ET> previous, next;

            Link(ET o, Link<ET> p, Link<ET> n) {
                data = o;
                previous = p;
                next = n;
            }
        }

      public boolean add(E object) {
             Link<E> oldLast = voidLink.previous;//获得最后一个节点
            Link<E> newLink = new Link<E>(object, oldLast, voidLink);// 生成一个新的节点
            voidLink.previous = newLink;
            oldLast.next = newLink;
            size++;
            modCount++;
            return true;
        }

      public void addFirst(E object) {
            Link<E> oldFirst = voidLink.next;//获得第一个节点
            Link<E> newLink = new Link<E>(object, voidLink, oldFirst);
            voidLink.next = newLink;
            oldFirst.previous = newLink;
            size++;
            modCount++;
        }

      public void add(int location, E object) {
            if (0 <= location && location <= size) {
                Link<E> link = voidLink;
                if (location < (size / 2)) {
                    for (int i = 0; i <= location; i++) {
                        link = link.next;
                    }
                } else {
                    for (int i = size; i > location; i--) {
                        link = link.previous;
                    }
                }
                Link<E> previous = link.previous;
                Link<E> newLink = new Link<E>(object, previous, link);
                previous.next = newLink;
                link.previous = newLink;
                size++;
                modCount++;
            } else {
                throw new IndexOutOfBoundsException();
            }
        }

     /**
         * Constructs a new empty instance of {@code LinkedList}.
         */
        public LinkedList() {
            voidLink = new Link<E>(null, null, null);
            voidLink.previous = voidLink;
            voidLink.next = voidLink;
        }
  • 相关阅读:
    ThinkPhp学习11
    ThinkPhp学习10
    1.自我介绍
    Axure高级教程--在原型中插入视频
    Axure制作iphone手机交互模型—覆盖切换
    对产品的一些总结
    详解Axure的Masters功能
    详解使用Axure 制作Tab切换功能
    产品经理的初识
    作为产品经理--如何写好PRD文档
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/linklist.html
Copyright © 2011-2022 走看看