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

    题目:

    反转一个单链表。

    示例:

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

    进阶:
    你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

    解题思路:

    1、迭代方法,从前往后扫描一遍,以此改变当前指针p的指向,其中用到三个指针,当前指针p,上一指针last,头指针pHead。

    2、递归方法,一层一层的递归到最后一个节点,再以此返回改变指向。

    代码:

    解法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 || !head->next)
    13             return head;
    14         ListNode* pHead = head;
    15         ListNode* p = pHead->next;
    16         ListNode* pre = (ListNode*)malloc(sizeof(ListNode));
    17         pre->next = head;
    18         ListNode* last = head;
    19         while(p)
    20         {
    21             last->next = p->next;
    22             p->next = pHead;
    23             pHead = p;
    24             p = last->next;
    25         }
    26         return pHead;
    27     }
    28 };

    解法2:递归

     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* reverse(ListNode* pHead, ListNode* last)
    12     {
    13         ListNode* ans;
    14         if(pHead->next != NULL)
    15             ans = reverse(pHead->next, pHead);
    16         else
    17             ans = pHead;
    18         pHead->next = last;
    19         return ans;
    20     }
    21     ListNode* reverseList(ListNode* head) {
    22         if(!head || !head->next)
    23             return head;
    24         ListNode* ans;
    25         ans = reverse(head, NULL);
    26         return ans;
    27     }
    28 };
  • 相关阅读:
    洛谷 P1939 矩阵加速(数列)
    【模板】矩阵快速幂
    洛谷 P3128 [USACO15DEC]最大流Max Flow
    洛谷 P1967 货车运输
    【模板】最近公共祖先(LCA)
    【模板】高斯消元法
    java从基础知识(七)java集合
    java基础知识(六)日期处理
    java基础知识(五)java类
    会员体系-系统豆的获取与消费
  • 原文地址:https://www.cnblogs.com/moxiangfeng/p/10734088.html
Copyright © 2011-2022 走看看