zoukankan      html  css  js  c++  java
  • LeetCode OJ:Reverse Linked List (反转链表)

    Reverse a singly linked list.

    做II之前应该先来做1的,这个倒是很简单,基本上不用考虑什么,简单的链表反转而已:

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode* reverseList(ListNode* head) {
    12         if(head == NULL) return NULL;
    13         ListNode * prev = NULL;
    14         ListNode * p = head;
    15         ListNode * next;
    16         while(p != NULL){
    17             next = p->next;
    18             p->next = prev;
    19             prev = p;
    20             p = next;
    21         }
    22         return prev;
    23     }
    24 };

     java版本的如下所示,基本上没什么区别,就是普通解法:

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) { val = x; }
     7  * }
     8  */
     9 public class Solution {
    10     public ListNode reverseList(ListNode head) {
    11         if(head == null)return null;
    12         ListNode helper = new ListNode(-1);
    13         helper.next = head;
    14         ListNode p = helper;
    15         ListNode pPre = helper.next;
    16         ListNode tmp = null;
    17         while(p.next!=null){
    18             tmp = p.next;
    19             p.next = pPre;
    20             pPre = p;
    21             p = tmp;
    22         }
    23         p.next = pPre;
    24         helper.next.next = null; //记得将尾节点的下一个指向null
    25         return p;
    26     }
    27 }

    其实翻转链表还可以使用一种递归的方式,代码如下:

     1 ListNode * ReverseListIncur(ListNode * node, ListNode * prev)
     2 {
     3     if (node == NULL)
     4         return NULL;
     5     ListNode * tmp = ReverseListIncur(node->next, node);
     6     node->next = prev;
     7     if (tmp == NULL)
     8         return node;
     9     else
    10         return tmp;
    11 }
  • 相关阅读:
    基于Vue.js的表格分页组件
    浅谈Vue.js
    利用js2image把代码压缩成圣诞树
    在AngularJS中的使用Highcharts图表控件
    使用Uploadify(UploadiFive)多文件上传控件遇到的坑
    iOS开源项目周报0323
    安卓开源项目周报0322
    前端开源项目周报0321
    iOS开源项目周报0316
    安卓开源项目周报0315
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4874295.html
Copyright © 2011-2022 走看看