zoukankan      html  css  js  c++  java
  • 反转链表

    题目描述:

    反转一个单链表。

    示例:

    输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 

    解题思路:

    双指针迭代

    两个指针,第一个指针叫 prev,最初是指向 null 的。第二个指针是 head 本身,然后不断遍历 head。每次迭代到 head,都将 head 的 next 指向 prev,然后 prev 和 head 移动一位。都迭代完了(head 变成 null 了),prev 就是最后一个节点了。动画演示如下:

    代码:
    //go
    func reverseList(head *ListNode) *ListNode {
     var prev *ListNode
     for head != nil {
      //反转链表,注意顺序!
      next := head.Next // 先保存下一个节点,不然后面找不着
      head.Next = prev  // 当前节点指向上一个节点
      prev = head
      head = next
      // 语法性质可简写如下
      // head.Next, head, prev = prev, head.Next, head
     }
     return prev
    }
    

      地址:https://mp.weixin.qq.com/s/IVI1Wctf5-0u7dvPPqxQnw

    small_lei_it 技术无止境,追求更高。
  • 相关阅读:
    软件开发模式
    个人中心设计
    定制四则运算
    功能测试用例分析报告
    NABCD
    开发流程
    开发流程
    结对编程
    注册界面进行Toast提示
    登录注册页面修改错误
  • 原文地址:https://www.cnblogs.com/smallleiit/p/13600070.html
Copyright © 2011-2022 走看看