题解 | #反转链表#

反转链表

http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 
 * @param pHead ListNode类 
 * @return ListNode类
*/
//递归
func ReverseList( pHead *ListNode ) *ListNode {
   if pHead == nil || pHead.Next == nil {
     return pHead
   }
    
  last := ReverseList(pHead.Next)  
  pHead.Next.Next = pHead
  pHead.Next = nil
  return last
}


//迭代
func ReverseList( pHead *ListNode ) *ListNode {
    if pHead == nil || pHead.Next == nil {
        return pHead
    }
    
    var prev *ListNode
    for pHead != nil {
        curr := pHead
        pHead = pHead.Next
        
        curr.Next = prev
        prev = curr
        
        
    }
    
    return prev
    
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务