1impl Solution {2pub fn reverse_even_length_groups(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {3let mut head = head;4let mut data = vec![];5let mut ret = None;6let mut tail = &mut ret;7let mut sz = 1usize;89while let Some(mut node) = head {10head = node.next.take();11node.next = None;12data.push(node);13if data.len() == sz {14if sz % 2 == 0 {15data.reverse();16}17for p in data {18tail = &mut tail.insert(p).next;19}20data = vec![];21sz += 1;22}23}2425if data.len() > 0 {26if data.len() % 2 == 0 {27data.reverse();28}29for p in data {30tail = &mut tail.insert(p).next;31}32}3334ret35}36}