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

Method insert

code/chapter03/lvec.rs:78–97  ·  view source on GitHub ↗
(&mut self, mut index: usize, elem: T)

Source from the content-addressed store, hash-verified

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

Callers 6

mainFunction · 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