MCPcopy Create free account
hub / github.com/QMHTMY/RustBook / insert

Method insert

publication/code/chapter04/lvec.rs:79–98  ·  view source on GitHub ↗
(&mut self, mut index: usize, elem: T)

Source from the content-addressed store, hash-verified

77 }
78
79 fn insert(&mut self, mut index: usize, elem: T) {
80 if index >= self.size { index = self.size; }
81
82 // 分三种情况插入新节点
83 let mut node = Node::new(elem);
84 if self.is_empty() { // LVec 为空
85 self.head = Some(Box::new(node));
86 } else if index == 0 { // 插入链表首部
87 node.next = self.head.take();
88 self.head = Some(Box::new(node));
89 } else { // 插入链表中间
90 let mut curr = self.head.as_mut().unwrap();
91 for _i in 0..index - 1 { // 找到插入位置
92 curr = curr.next.as_mut().unwrap();
93 }
94 node.next = curr.next.take();
95 curr.next = Some(Box::new(node));
96 }
97 self.size += 1;
98 }
99
100 fn pop(&mut self) -> Option<T> {
101 if self.size < 1 {

Callers 6

basicFunction · 0.45
infix_to_postfixFunction · 0.45
enqueueMethod · 0.45
enqueueMethod · 0.45
add_rearMethod · 0.45
add_rearMethod · 0.45

Calls 1

is_emptyMethod · 0.45

Tested by

no test coverage detected