链表的基本操作

常用的链表操作比较多.

构造函数:

  • new(), 创建一个新的链表, 不包含任何节点

元素访问:

  • front(), 返回第一个元素的引用
  • front_mut(), 返回第一个元素的可变更引用
  • back(), 返回最后一个元素的引用
  • back_mut(), 返回最后一个元素的可变更引用
  • contains(value), 检查链表中是否包含给定的元素

链表容量:

  • len(), 返回节点个数
  • is_empty(), 链表是否为空

修改链表:

  • clear(), 移除链表中的所有节点, 移除之后, len() 函数返回 0
  • insert_at(pos, value), 在给定的特定位置插入新的节点
  • insert_iter(pos, iter), 在给定的特定位置插入一系列的节点
  • pop(), 从链表中移除特定值相等的第一个节点
  • pop_at(pos), 在给定的特定位置移除节点, 并返回该节点的值
  • pop_if(), 从链表中移除满足特定条件的所有节点
  • push_back(), 在链表尾部追加新的节点
  • pop_back(), 移除链表尾部的节点
  • push_front(), 在链表头部加入新的节点
  • pop_front(), 移除链表头部的节点
  • resize(new_size), 调整链表中节点的个数, 如果需要追加新的节点, 就使用默认值
  • resize_with(new_size, new_value), 调整链表中节点的个数, 如果需要追加新的节点, 就使用 new_value
  • append(list), 在链表尾部追加一系列的节点
  • prepend(list), 在链表头部加入一系列的节点

链表操作:

  • merge(), 合并两个链表
  • splice(), 将节点从一个链表转移到另一个链表
  • reverse(), 将链表中的节点反转
  • unique(), 从链表中移除有相同值的相邻的节点
  • sort(), 对链表中的节点进行排序, 排序相关的函数放在了后面排序算法章节
  • sort_by(), 依照相应的条件函数对链表中的节点进行排序
  • sort_by_key(), 依照相应的条件对链表中的节点进行排序

实现的 traits:

  • Debug
  • Clone
  • PartialEq
  • Eq
  • Hash
  • Drop
  • FromIterator
  • Extend

迭代器:

  • iter(), 返回一个迭代器
  • iter_mut(), 返回一个迭代器, 可以通过它修改链表中节点的值
  • into_iter()
  • DoubleEndedIterator, 对于双链表, 返回的迭代器需要实现双向迭代

插入 Insertion

在链表中插入一个新的节点, 分好几种情况:

  • 在链表的头部插入节点
  • 在链表的尾部插入节点
  • 在给定的索引位置插入节点
  • 在给定的节点后面插入节点