双端链表,可以正向和反向遍历链表,提升了遍历的效率。
可以实现队列和栈的数据结构。
1、在取链表中固定位置中的一个值时,因为链表结构需要进行遍历。会分析要取的位置在链表的前半部分还是后半部分??如果前半部分通过head进行往后遍历,如果为后半部分通过尾部向前进行遍历。这样提高了效率。
private Entry<E> entry(int index) {
if (index < 0 || index >= size)
throw new IndexOutOfBoundsException("Index: "+index+
", Size: "+size);
Entry<E> e = header;
if (index < (size >> 1)) {//判断要取元素在链表的前半部分还是后半部分
for (int i = 0; i <= index; i++)
e = e.next;
} else {
for (int i = size; i > index; i--)
e = e.previous;
}
return e;
}

本文介绍了一种双端链表数据结构及其遍历优化方法。通过判断目标位置位于链表前半部分还是后半部分来决定从前向后还是从后向前遍历,从而提高取指定位置元素的效率。
435

被折叠的 条评论
为什么被折叠?



