暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

反转链表

305


示例:

    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL
    此题的思路是逐个反转,先变成 NULL<-1  2->3->4->5->NULL; 然后是 1<-2  3->4->5->NULL; 接着是 1<-2<-3  4->5->NULL,以此类推。那么我们首先就要先创建一个空节点为 prev,使得 1 指向它,但是,需要先把 2 这个节点保存起来,不然当 1 指向 NULL 后就失去了 2 以后的数据。完成第一次反转后就一直迭代下去。可能表达得不太行,看代码吧:
      /**
      * Definition for singly-linked list.
      * public class ListNode {
      * int val;
      * ListNode next;
      * ListNode(int x) { val = x; }
      * }
      */
      class Solution {
      public ListNode reverseList(ListNode head) {
      ListNode prev = null;
      while(head != null) {
      ListNode next = head.next;
      head.next = prev; // 翻转


      prev = head;
      head = next;
      }
      return prev;
      }
      }


      文章转载自大数据的奇妙冒险,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论