"DoublyLinkedList" (数据结构)

"DoublyLinkedList"

表示一个双向链表,其中的元素是普通表达式.

更多信息

  • 双向链表对于有效地从第一个和最后一个位置添加和删除元素非常有用:
  • CreateDataStructure["DoublyLinkedList"]创建新的空 "DoublyLinkedList"
    CreateDataStructure["DoublyLinkedList",elems]创建包含 elems 的新 "DoublyLinkedList"
    Typed[x,"DoublyLinkedList"]指定 x 的类型为 "DoublyLinkedList"
  • 对于类型为 "DoublyLinkedList" 的数据结构,可进行以下操作:
  • ds["Append",x]x 追加到 ds 末端时间:O(1)
    ds["Copy"]返回 ds 的副本时间:O(n)
    ds["DropAll"]删除 ds 中的所有元素时间:O(n)
    ds["DropFirst"]删除 ds 的第一个元素时间:O(1)
    ds["DropLast"]删除 ds 的最后一个元素时间:O(1)
    ds["Elements"]返回 ds 参数的列表时间:O(n)
    ds["EmptyQ"]如果 ds 中没有元素则返回 True时间:O(1)
    ds["Fold",fun,init]fun 应用于以 init 开始的 ds 的元素,并累计结果时间:O(n)
    ds["JoinBack",elems]elems 添加到 ds 的后部时间:O(nelems)
    ds["JoinFront",elems]elems 添加到 ds 的前部时间:O(nelems)
    ds["Length"]存储在 ds 中的元素的数量时间:O(1)
    ds["Part",i]给出 ds 中的第 i 个元素时间:O(n)
    ds["Prepend",x]x 追加到 ds 首端时间:O(1)
    ds["SetPart",i,elem]更新 ds 的第 i 个元素时间:O(n)
    ds["SwapPart",i,j]ds 的第 i 个元素和第 j 个元素互换时间:O(n)
    ds["Visualization"]返回 ds 的可视化时间:O(n)
  • 还支持以下函数:
  • dsi===dsj如果 dsi 等于 dsj 则为 True
    ds["Part",i]=valds 的第 i 个元素设为 val
    FullForm[ds]ds 的完全形式
    Information[ds]关于 ds 的信息
    InputForm[ds]ds 的输入形式
    Normal[ds]ds 转换成普通表达式

范例

打开所有单元关闭所有单元

基本范例  (2)

可用 CreateDataStructure 创建新的 "DoublyLinkedList"

可以追加元素:

也可将元素添加到开头:

返回总长度:

提取第一个元素:

改变元素:

该元素已被更新:

返回表达式形式的 ds

去掉最后一个元素:

快速追加元素:

可视化数据结构:

求所有元素的和:

范围  (1)

信息  (1)

可用 CreateDataStructure 创建新的 "DoublyLinkedList"

数据结构 ds 的信息: