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;
        }
  • 相关阅读:
    [LeetCode] 60. Permutation Sequence 序列排序
    [LeetCode] 31. Next Permutation 下一个排列
    [LeetCode] 47. Permutations II 全排列 II
    [LeetCode] 46. Permutations 全排列
    [LeetCode] 77. Combinations 全组合
    利用 Json.Net 将对象转换成Json
    使用sqlmetal工具自动生成SQL数据库的Linq类文件
    SharePoint 2013 设置 显示详细错误信息 修改位置总结
    本地访问Vmware虚机Web网站
    Web项目HttpContext.Current 为空
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/linklist.html
Copyright © 2011-2022 走看看