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

Function hot_potato

publication/code/chapter04/hot_potato.rs:39–59  ·  view source on GitHub ↗
(names: Vec<&str>, num: usize)

Source from the content-addressed store, hash-verified

37}
38
39fn hot_potato(names: Vec<&str>, num: usize) -> &str {
40 // 初始化队列、名字入队
41 let mut q = Queue::new(names.len());
42 for name in names {
43 let _nm = q.enqueue(name);
44 }
45
46 while q.len() > 1 {
47 // 出入栈名字,相当于传递山芋
48 for _i in 0..num {
49 let name = q.dequeue().unwrap();
50 let _rm = q.enqueue(name);
51 }
52
53 // 出入栈达到 num 次,删除一人
54 let _rm = q.dequeue();
55 }
56
57 // 最后剩下的人
58 q.dequeue().unwrap()
59}
60
61fn main() {
62 let names = vec!["Mon", "Tom", "Kew", "Lisa", "Marry", "Bob"];

Callers 1

mainFunction · 0.70

Calls 3

lenMethod · 0.45
enqueueMethod · 0.45
dequeueMethod · 0.45

Tested by

no test coverage detected