从尾到头打印链表
从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
方法1:递归版本
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func reversePrint(head *ListNode) []int { if head == nil { return nil } return appendData(head) } func appendData(head *ListNode) []int { if head.Next != nil{ list := appendData(head.Next) list = append(list, head.Val) return list } return []int{head.Val} }
方法2:直接顺序获取值放到数组,再反转结果
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func reversePrint(head *ListNode) []int { if head == nil { return nil } res := []int{} for head != nil { res = append(res, head.Val) head = head.Next } for i, j := 0, len(res)-1; i < j; { res[i], res[j] = res[j], res[i] i++ j-- } return res }