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(

你可能感兴趣的:(rust,rust,学习,开发语言)