"DoublyLinkedList" (Data Structure)
"DoublyLinkedList" (Data Structure)
"DoublyLinkedList"
represents a doubly linked list where the elements are general expressions.
Details
- A doubly linked list is useful for efficiently adding and removing elements from the first and last positions:
-
CreateDataStructure["DoublyLinkedList"] create a new empty "DoublyLinkedList" CreateDataStructure["DoublyLinkedList",elems] create a new "DoublyLinkedList" containing elems Typed[x,"DoublyLinkedList"] give x the type "DoublyLinkedList" - For a data structure of type "DoublyLinkedList", the following operations can be used:
-
ds["Append",x] append x to ds time: O(1) ds["Copy"] return a copy of ds time: O(n) ds["DropAll"] drop all the elements from ds time: O(n) ds["DropFirst"] drop the first element of ds time: O(1) ds["DropLast"] drop the last element of ds time: O(1) ds["Elements"] return a list of the elements of ds time: O(n) ds["EmptyQ"] True, if ds has no elements time: O(1) ds["Fold",fun] apply fun to the elements of ds, accumulating a result time: O(n) ds["Fold",fun,init] apply fun to the elements of ds, starting with init, accumulating a result time: O(n) ds["JoinBack",elems] join elems to the back of ds time: O(nelems) ds["JoinFront",elems] join elems to the front of ds time: O(nelems) ds["Length"] number of elements stored in ds time: O(1) ds["Part",i] give the i
part of dstime: O(n) ds["Prepend",x] prepend x to ds time: O(1) ds["SetPart",i,elem] update the i
part of dstime: O(n) ds["SwapPart",i,j] swap the i
and j
parts of dstime: O(n) ds["Visualization"] return a visualization of ds time: O(n) - The following functions are also supported:
-
dsi===dsj True, if dsi equals dsj ds["Part",i]=val set i
element of ds to valFullForm[ds] full form of ds Information[ds] information about ds InputForm[ds] input form of ds Normal[ds] convert ds to a normal expression
Examples
open all close allBasic Examples (2)
A new "DoublyLinkedList" can be created with CreateDataStructure:
ds = CreateDataStructure["DoublyLinkedList"]ds["Append", f[1]]ds["Prepend", f[2]]ds["Length"]ds["Part", 1]ds["Part", 1] = f[3]ds["Part", 1]Return an expression version of ds:
Normal[ds]ds["DropLast"];
Normal[ds]ds = CreateDataStructure["DoublyLinkedList"];
Do[ds["Append", i], {i, 1000}]A visualization of the data structure can be generated:
ds["Visualization"]ds["Fold", Plus, 0]Scope (1)
Information (1)
A new "DoublyLinkedList" can be created with CreateDataStructure:
ds = CreateDataStructure["DoublyLinkedList"]Information about the data structure ds:
Information[ds]See Also
CreateDataStructure DataStructure
Data Structures: LinkedList DynamicArray FixedArray RingBuffer Deque
Related Guides
History
Introduced in 2020 (12.1)