package main import ( "fmt" ) func main() { num := 0 for { n, _ := fmt.Scan(&num) if n == 0 { break } else { stack := make([]int, num) stack2 := make([]int, 0) for i:=0; i<num; i++ { fmt.Scan(&stack[i]) } process(stack, &stack2) for i:=num; i>0; i-- { if i == 1 { fmt.Println(stack2[len(stack2)-1]) } else { fmt.Printf("%+v ", stack2[len(stack2)-1]) } stack2 = stack2[:len(stack2)-1] } } } } func process(stack []int, stack2 *[]int) { if len(stack) == 0 { return } // 先序遍历,拿到数据压入栈stack2中 popv := stack[len(stack)-1] stack = stack[:len(stack)-1] *stack2 = append(*stack2, popv) process(stack, stack2) }