Skip to content

LinkedList指定位置插入/删除,遍历平均元素应该是n/4个元素#2480

Merged
Snailclimb merged 1 commit intoSnailclimb:mainfrom
Chaobk:main
Sep 9, 2024
Merged

LinkedList指定位置插入/删除,遍历平均元素应该是n/4个元素#2480
Snailclimb merged 1 commit intoSnailclimb:mainfrom
Chaobk:main

Conversation

@Chaobk
Copy link
Copy Markdown
Contributor

@Chaobk Chaobk commented Sep 8, 2024

因为本身就有头尾指针,遍历元素的时候会从最近的指针出发,最多会遍历n/2个元素,平均应该是n/4。Java8源码片段如下:

    Node<E> node(int index) {
        // assert isElementIndex(index);

        if (index < (size >> 1)) {
            Node<E> x = first;
            for (int i = 0; i < index; i++)
                x = x.next;
            return x;
        } else {
            Node<E> x = last;
            for (int i = size - 1; i > index; i--)
                x = x.prev;
            return x;
        }
    }

因为本身就有头尾指针,遍历元素的时候会从最近的指针出发,最多会遍历n/2个元素,平均应该是n/4。Java8源码片段如下:

    Node<E> node(int index) {
        // assert isElementIndex(index);

        if (index < (size >> 1)) {
            Node<E> x = first;
            for (int i = 0; i < index; i++)
                x = x.next;
            return x;
        } else {
            Node<E> x = last;
            for (int i = size - 1; i > index; i--)
                x = x.prev;
            return x;
        }
    }
@Snailclimb Snailclimb merged commit e06114f into Snailclimb:main Sep 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants