(names: Vec<&str>, num: usize)
| 37 | } |
| 38 | |
| 39 | fn 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 | |
| 61 | fn main() { |
| 62 | let names = vec!["Mon", "Tom", "Kew", "Lisa", "Marry", "Bob"]; |