当前位置: 首页 > article >正文

rust学习-LinkedList

介绍

A doubly-linked list with owned nodes.
自有节点的双向链表

pub struct LinkedList<T, A = Global>
where
    A: Allocator,
{
    /* private fields */ }

使用 Vec 或 VecDeque 几乎总是更好,因为基于数组的容器通常更快、内存效率更高,并且可以更好地利用 CPU 缓存

方法

// 初始化
pub const fn new() -> LinkedList<T, Global>

// 追加
pub fn append(&mut self, other: &mut LinkedList<T, Global>)

// 前向迭代
pub fn iter(&self) -> Iter<'_, T>
// Provides a forward iterator
pub fn iter_mut(&mut self) -> IterMut<'_, T>
// Provides a forward iterator with mutable references

// 是否为空
pub fn is_empty(&self) -> bool

// 长度
pub fn len(&self) -> usize

// 移除所有元素
pub fn clear(&mut self)

// 包含
pub fn contains(&self, x: &T) -> bool

// 位置
pub fn front(&self) -> Option<&T>
pub fn front_mut(&mut self) -> Option<&mut T>
pub fn back(&self) -> Option<&T>
pub fn back_mut(&mut self) -> Option<&mut T>
pub fn push_front(&mut self, elt: T)
pub fn pop_front(&mut self) -> Option<T>
pub fn push_back(&mut self, elt: T)
pub fn pop_back(&mut self) -> Option<T>

// 拆分
// 在给定索引处将列表分成两部分,返回给定索引之后的所有内容,包括索引
// 将一个链表分割为两个独立的链表。
// 该方法会从指定的位置将原链表拆分成两个链表,并返回新创建的链表
pub fn split_off(&mut self, at: usize) -> LinkedList<T, A>
where
    A: Clone,

示例

use std::collections::LinkedList;

fn main() {
   
	let mut list1 = LinkedList::new();
	assert!(list1.is_empty());
	assert_eq!(list1.len(), 0);
	list1.push_back('a');
	assert!(!list1.is_empty());
	assert_eq!(list1.len(), 1);
	assert_eq!(list1.contains(&'a'), true);
	assert_eq!(list1.contains(&'b'), false);

	let mut list2 = LinkedList::new();
	list2.push_back('b');
	list2.push_back('c');
	
	list1.append(&mut list2);
	
	let mut iter = list1.iter();
	assert_eq!(iter.next(

http://www.kler.cn/news/109244.html

相关文章:

  • 物联网和互联网医院小程序:如何实现医疗设备的远程监测和管理?
  • H5游戏源码分享-接苹果游戏拼手速
  • Python requests之Session
  • Knife4j使用教程(三) -- 实体类的配置注解(@ApiModel与@ApiModelProperty 的 认识与使用)
  • 多线程---定时器
  • 【网络安全】Seeker内网穿透追踪定位
  • 0基础学习PyFlink——用户自定义函数之UDF
  • LeetCode热题100 旋转图像
  • 抓包分析DSCP字段在FTP/RSTP协议中的应用
  • 分布式:一文吃透Redis/Zookeeper/MySQL实现分布式锁
  • 【C】C语言文件操作
  • Java-API简析_java.io.FilterOutputStream类(基于 Latest JDK)(浅析源码)
  • mysql 计算两个坐标距离
  • 电路器件认识与KV STUDIO的实践(二)
  • 计算机网络重点概念整理-第三章 数据链路层【期末复习|考研复习】
  • 2.flink编码第一步(maven工程创建)
  • ES性能优化最佳实践- 检索性能提升30倍!
  • word页脚设置,页脚显示第几页共有几页设置步骤
  • hadoop权威指南第四版
  • 天气数据可视化平台-计算机毕业设计vue
  • Java通过工具类判断前端给定的实体类属性中是否为空
  • 深度学习之基于yolov8的安全帽检测系统
  • H5游戏源码分享-命悬一线
  • 软考-网络安全审计技术原理与应用
  • Fedora Linux 38下Mariadb数据库设置utf8mb4字符编码
  • 【2023年冬季】华为OD统一考试(B卷)题库清单(已收录345题),又快又全的 B 卷题库大整理
  • c 从avi 视频中提取图片
  • linux中好玩的数据流定向和管道命令一
  • 【蓝桥每日一题]-前缀和与差分(保姆级教程 篇3)#涂国旗 #重新排序
  • VBA宏查找替换目录下所有Word文档中指定字符串