欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實現(xiàn)LeetCode(206.倒置鏈表)

 更新時間:2021年08月06日 16:30:04   作者:Grandyang  
這篇文章主要介紹了C++實現(xiàn)LeetCode(206.倒置鏈表),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

[LeetCode] 206.Reverse Linked List 倒置鏈表

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL

Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

 之前做到 Reverse Linked List II 的時候我還納悶怎么只有二沒有一呢,原來真是忘了啊,現(xiàn)在才加上,這道題跟之前那道比起來簡單不少,題目為了增加些許難度,讓我們分別用迭代和遞歸來實現(xiàn),但難度還是不大。我們先來看迭代的解法,思路是在原鏈表之前建立一個空的newHead,因為首節(jié)點會變,然后從head開始,將之后的一個節(jié)點移到newHead之后,重復(fù)此操作直到head成為末節(jié)點為止,代碼如下:

解法一:

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *newHead = NULL;
        while (head) {
            ListNode *t = head->next;
            head->next = newHead;
            newHead = head;
            head = t;
        }
        return newHead;
    }
};

下面我們來看遞歸解法,代碼量更少,遞歸解法的思路是,不斷的進入遞歸函數(shù),直到head指向倒數(shù)第二個節(jié)點,因為head指向空或者是最后一個結(jié)點都直接返回了,newHead則指向?qū)ead的下一個結(jié)點調(diào)用遞歸函數(shù)返回的頭結(jié)點,此時newHead指向最后一個結(jié)點,然后head的下一個結(jié)點的next指向head本身,這個相當(dāng)于把head結(jié)點移動到末尾的操作,因為是回溯的操作,所以head的下一個結(jié)點總是在上一輪被移動到末尾了,但head之后的next還沒有斷開,所以可以順勢將head移動到末尾,再把next斷開,最后返回newHead即可,代碼如下:

解法二:

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if (!head || !head->next) return head;
        ListNode *newHead = reverseList(head->next);
        head->next->next = head;
        head->next = NULL;
        return newHead;
    }
};

到此這篇關(guān)于C++實現(xiàn)LeetCode(206.倒置鏈表)的文章就介紹到這了,更多相關(guān)C++實現(xiàn)倒置鏈表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言rewind與fseek函數(shù)之隨機讀寫文件的用法詳解

    C語言rewind與fseek函數(shù)之隨機讀寫文件的用法詳解

    這篇文章主要介紹了C語言rewind與fseek函數(shù)之隨機讀寫文件的用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C++?右值引用與?const?關(guān)鍵字詳解

    C++?右值引用與?const?關(guān)鍵字詳解

    C++中的const關(guān)鍵字的用法非常靈活,而使用const將大大改善程序的健壯性,const關(guān)鍵字是一種修飾符,這篇文章主要介紹了C++?右值引用與?const?關(guān)鍵字,需要的朋友可以參考下
    2022-10-10
  • windows?使用ffmpeg?.a靜態(tài)庫讀取Wav音頻并保存PCM的方法

    windows?使用ffmpeg?.a靜態(tài)庫讀取Wav音頻并保存PCM的方法

    這篇文章主要介紹了windows?使用ffmpeg?.a靜態(tài)庫讀取Wav音頻并保存PCM,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-02-02
  • c++函數(shù)名指針和函數(shù)指針

    c++函數(shù)名指針和函數(shù)指針

    這篇文章主要介紹了c++函數(shù)名指針和函數(shù)指針,函數(shù)指針和數(shù)據(jù)類似,C++當(dāng)中函數(shù)也有地址,函數(shù)的地址是存儲函數(shù)機器語言代碼的內(nèi)存地址。我們可以將另外一個函數(shù)的地址作為參數(shù)傳入函數(shù),從而實現(xiàn)函數(shù)的靈活調(diào)用,下面詳細內(nèi)容需要的小伙伴可以參考一下
    2022-02-02
  • QT實現(xiàn)簡單音樂播放器

    QT實現(xiàn)簡單音樂播放器

    這篇文章主要為大家詳細介紹了QT實現(xiàn)簡單的音樂播放器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++教程(超長最全入門)

    C++教程(超長最全入門)

    這篇文章主要介紹了C++教程(超長最全),需要的朋友可以參考下
    2023-05-05
  • C++中的vector容器對象學(xué)習(xí)筆記

    C++中的vector容器對象學(xué)習(xí)筆記

    這篇文章主要介紹了C++中的vector容器對象學(xué)習(xí)筆記,其中文章最后標紅的resize與reserve方法的差別特別需要注意,需要的朋友可以參考下
    2016-05-05
  • 利用C語言實踐OOP,以及new,delete的深入分析

    利用C語言實踐OOP,以及new,delete的深入分析

    本篇文章是對用C語言實踐OOP,new,delete進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++多線程編程詳解

    C++多線程編程詳解

    這篇文章主要介紹了c語言多線程編程使用示例,小編覺得這篇文章寫的還不錯,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • C++實現(xiàn)播放音頻的示例詳解

    C++實現(xiàn)播放音頻的示例詳解

    這篇文章主要為大家詳細介紹了C++如何利用第三方庫實現(xiàn)播放音頻的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01

最新評論