最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

帶你了解如何用C++合并兩個(gè)有序鏈表

 更新時(shí)間:2021年08月19日 09:43:23   作者:久病成良醫(yī)  
這篇文章主要介紹了c++ 如何合并兩個(gè)有序鏈表,小編感覺這篇文章還不錯(cuò),希望能幫助大家更好的理解和學(xué)習(xí)C++,感興趣的朋友可以了解下

將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過(guò)拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。

示例 1:

輸入:l1 = [1,2,4], l2 = [1,3,4]

輸出:[1,1,2,3,4,4]

在這里插入圖片描述

示例 2:

輸入:l1 = [], l2 = []

輸出:[]

示例 3:

輸入:l1 = [], l2 = [0]

輸出:[0]

思路

可以簡(jiǎn)單理解為: 同時(shí)遍歷兩個(gè)鏈表, 當(dāng)前遍歷的結(jié)點(diǎn),誰(shuí)的結(jié)點(diǎn)小,就把誰(shuí)的結(jié)點(diǎn)“摘下來(lái)”,“安裝”在新鏈表上就可以了吧。

這里為了簡(jiǎn)單方便的處理, 給新鏈表先“安裝”一個(gè)頭結(jié)點(diǎn)

在這里插入圖片描述

代碼

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        // 使用帶頭結(jié)點(diǎn)的鏈表解決問(wèn)題
        // 待輸出鏈表的頭部
        ListNode* head = new ListNode;  //節(jié)點(diǎn)是個(gè)指針,需要new來(lái)開辟空間
        // 待輸出鏈表的 last 結(jié)點(diǎn)
        ListNode* last = head;   //last和head是一個(gè)東西,只是為了最后輸出的時(shí)候找到head
        while(l1 != nullptr && l2 != nullptr){  //循環(huán)條件
            if(l1->val < l2->val){
                last->next = l1;    //last->next指向l1
                l1 = l1->next;      //將l1的下一個(gè)節(jié)點(diǎn)改為l1
            }
            else{
                last->next = l2;
                l2 = l2->next;
            }
            last = last->next;   //將last的下一個(gè)節(jié)點(diǎn)改為last
        }
         // l1 或 l2 可能還有剩余結(jié)點(diǎn)沒有合并, 
        // 由于從上面的 while 循環(huán)中退出, 那么鏈表 l1 和 l2 至少有一個(gè)已經(jīng)遍歷結(jié)束
        if(l1 != nullptr){
            last->next = l1;
        }
        else if(l2 != nullptr){
            last->next = l2;
        }
        return head->next;
    }
};

鏈表Listnode詳細(xì)介紹

Listnode定義 。

struct ListNode {
       int val;    //定義val變量值,存儲(chǔ)節(jié)點(diǎn)值
       struct ListNode *next;   //定義next指針,指向下一個(gè)節(jié)點(diǎn),維持節(jié)點(diǎn)連接
  }

1.節(jié)點(diǎn)存儲(chǔ)了兩個(gè)變量:value 和 next。

value 是這個(gè)節(jié)點(diǎn)的值,

next 是指向下一節(jié)點(diǎn)的指針,

當(dāng) next 為空指針時(shí),這個(gè)節(jié)點(diǎn)是鏈表的最后一個(gè)節(jié)點(diǎn)。

2.注意val只代表當(dāng)前指針的值,

比如p->val表示p指針的指向的值;

而p->next表示鏈表下一個(gè)節(jié)點(diǎn),也是一個(gè)指針。

3.構(gòu)造函數(shù)包含兩個(gè)參數(shù) _value 和 _next ,分別用來(lái)給節(jié)點(diǎn)賦值和指定下一節(jié)點(diǎn)

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 一篇文章帶你了解C++中的異常

    一篇文章帶你了解C++中的異常

    這篇文章主要為大家詳細(xì)介紹了C++中的異常,使用數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 利用C++實(shí)現(xiàn)計(jì)算機(jī)輔助教學(xué)系統(tǒng)

    利用C++實(shí)現(xiàn)計(jì)算機(jī)輔助教學(xué)系統(tǒng)

    我們都知道計(jì)算機(jī)在教育中起的作用越來(lái)越大。這篇文章主要為大家詳細(xì)介紹了如何利用C++編寫一個(gè)計(jì)算機(jī)輔助教學(xué)系統(tǒng),感興趣的可以了解一下
    2023-05-05
  • QT實(shí)現(xiàn)串口通信的完整步驟

    QT實(shí)現(xiàn)串口通信的完整步驟

    如果用qt寫程序作為上位機(jī),然后通過(guò)和usb和下位機(jī)通信的時(shí)候,就需要用到qt中的串口通信了,下面這篇文章主要給大家介紹了關(guān)于QT實(shí)現(xiàn)串口通信的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • C++中求數(shù)組長(zhǎng)度的方法詳解

    C++中求數(shù)組長(zhǎng)度的方法詳解

    C++中沒有直接提供求數(shù)組長(zhǎng)度的方法,提供了sizeof(),begin(),end()等方法,可以供求數(shù)組長(zhǎng)度使用,文中通過(guò)代碼示例給大家講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-12-12
  • 基于C++自制屠夫躲貓貓小游戲

    基于C++自制屠夫躲貓貓小游戲

    這篇文章主要為大家詳細(xì)介紹了如何基于C++自制屠夫躲貓貓小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C語(yǔ)言實(shí)現(xiàn)冒泡排序的思路以及過(guò)程

    C語(yǔ)言實(shí)現(xiàn)冒泡排序的思路以及過(guò)程

    冒泡排序是最簡(jiǎn)單的排序方法,理解起來(lái)容易。雖然它的計(jì)算步驟比較多,不是最快的,但它是最基本的,初學(xué)者一定要掌握。本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值
    2021-09-09
  • 基于Windows API實(shí)現(xiàn)遍歷所有文件并刪除的方法

    基于Windows API實(shí)現(xiàn)遍歷所有文件并刪除的方法

    這篇文章主要介紹了基于Windows API實(shí)現(xiàn)遍歷所有文件并刪除的方法,是win32應(yīng)用程序的一個(gè)比較典型的文件操作應(yīng)用技巧,需要的朋友可以參考下
    2015-04-04
  • C語(yǔ)言的程序環(huán)境與預(yù)處理你真的了解嗎

    C語(yǔ)言的程序環(huán)境與預(yù)處理你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的程序環(huán)境與預(yù)處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 使用C++和Direct3D (d3d)獲取屏幕截圖并根據(jù)傳入分辨率進(jìn)行縮放圖片大小(最新推薦)

    使用C++和Direct3D (d3d)獲取屏幕截圖并根據(jù)傳入分辨率進(jìn)行縮放圖片大小(最新推薦)

    這篇文章主要介紹了使用C++和Direct3D (d3d)獲取屏幕截圖并根據(jù)傳入分辨率進(jìn)行縮放圖片大小,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 深入解析C++編程中范圍解析運(yùn)算符的作用及使用

    深入解析C++編程中范圍解析運(yùn)算符的作用及使用

    這篇文章主要介紹了C++編程中范圍解析運(yùn)算符的使用方法,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-01-01

最新評(píng)論

金平| 黄梅县| 弥渡县| 大同县| 陈巴尔虎旗| 吉木乃县| 泗水县| 建阳市| 徐州市| 乌苏市| 北碚区| 金坛市| 英吉沙县| 自治县| 内乡县| 沽源县| 和静县| 沂水县| 德令哈市| 龙州县| 广平县| 宁强县| 五河县| 那曲县| 托克托县| 青神县| 汾西县| 阳谷县| 扎囊县| 成安县| 全椒县| 海丰县| 景泰县| 将乐县| 来凤县| 拉萨市| 怀来县| 通辽市| 诸暨市| 汝州市| 汕尾市|