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;
        }
  • 相关阅读:
    QlikView TEXT控件固定显示图片
    Qlikview List控件
    如何实现Qlikview的增量数据加载
    SQL Server开启READ_COMMITTED_SNAPSHOT
    AX函数,将EXCEL列号转为列名
    C# 中DataGridView 绑定List<T>做数据源的操作问题
    Could not resolve this reference. Could not locate the assembly
    WinForm程序用使用List对象绑定DataGridView数据源
    C#WebBrowser控件使用教程与技巧收集
    python局部变量、全局变量,global、nolocal的区别
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/linklist.html
Copyright © 2011-2022 走看看