Update of "Doubly-Linked List"

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview

Artifact ID: df74a5551904cd8e0c6687433508341bbd64eab8
Page Name:Doubly-Linked List
Date: 2017-07-08 21:05:53
Original User: Entomy
Next 98ec333c935d7af84ecfb507cf8caee5df1f492d
Content

Purpose

As long as data isn't structured the doubly-linked list is among the most flexible for working with data sets.

In the overwhelming majority of cases, this is the container you want to be working with.

Notable Features

Non-Deallocative Traversal

Traversal between nodes of any list type does not remove the previous node, so they behave more like arrays.

Unlike the Singly-Linked List traversal is possible in either direction.

Insertion

Unlike the Stack or Queue, or the Array, nodes can be inserted inside the list without requiring a new list.

Queries

Some queries are possible upon this generalized list, and are made available here. Whether a list contains a value, all instances of a certain value, former N values, hinder N values, and so on. All of these queries either return a boolean or another list which can be queried.

Considerations

Use of an iterator is slower than traversal through <codeNode.AforeNode.Ahind, due to the implementation. This is because the list operations largely operate on nodes themselves, not on a cursor, so the cursor heavy iterator has additional overhead. Being simpler, iterators are good for prototyping or when performance doesn't matter, but manual traversal is advised.