国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++解決合并兩個排序的鏈表問題

C++解決合并兩個排序的鏈表問題

2022-03-10 14:29翟天保Steven C/C++

本文主要介紹了通過C++解決合并兩個排序的鏈表并使新鏈表中的節點仍然是遞增排序的。文中代碼講解詳細,有需要的朋友可以參考一下

題目描述:

輸入兩個遞增的鏈表,單個鏈表的長度為n,合并這兩個鏈表并使新鏈表中的節點仍然是遞增排序的。

數據范圍: n為0~1000,節點值為-1000~1000

要求:空間復雜度 O(1),時間復雜度 O(n)

如輸入{1,3,5},{2,4,6}時,合并后的鏈表為{1,2,3,4,5,6},所以對應的輸出為{1,2,3,4,5,6},轉換過程如下圖所示:

C++解決合并兩個排序的鏈表問題

或輸入{-1,2,4},{1,3,4}時,合并后的鏈表為{-1,1,2,3,4,4},所以對應的輸出為{-1,1,2,3,4,4},轉換過程如下圖所示:

C++解決合并兩個排序的鏈表問題

示例:

輸入:

{1,3,5},{2,4,6}

返回值:

{1,2,3,4,5,6}

解題思路:

本題考察數據結構鏈表的使用。有兩種解法:

  1. 遍歷比較。建立一個新的頭節點head后,用cur指針指向下一節點;然后依次比較兩個子鏈表節點的值大小,誰小先塞誰,塞完就將其指向下一個節點;直到某個子鏈表遍歷完,將cur的next指向沒遍歷完的那個鏈表當前的節點。
  2. 遞歸。從pHead1和pHead2的頭節點開始比較,誰小就返回誰,然后其下一個指向,指向Merge函數的結果,Merge輸入的兩個鏈表為小的一方的next和大的一方的頭節點,也就是用下一個值和它繼續比誰更小;依次類推,遞歸中斷的標志是有其中一個子鏈表指向nullptr,返回另一方即可。

測試代碼:

解法一,遍歷:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        ListNode *head=new ListNode(-1);
        ListNode *cur=head;
        while(pHead1&&pHead2)
        {
            if(pHead1->val<=pHead2->val)
            {
                cur->next=pHead1;
                pHead1=pHead1->next;
            }
            else{
                cur->next=pHead2;
                pHead2=pHead2->next;
            }
            cur=cur->next;
        }
        cur->next=pHead1?pHead1:pHead2;
        return head->next;
    }
};

解法二,遞歸:  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        if(!pHead1)
            return pHead2;
        if(!pHead2)
            return pHead1;
        if(pHead1->val<=pHead2->val)
        {
            pHead1->next=Merge(pHead1->next,pHead2);
            return pHead1;
        }
        else{
            pHead2->next=Merge(pHead1,pHead2->next);
            return pHead2;
        }
    }
};

到此這篇關于C++解決合并兩個排序的鏈表問題的文章就介紹到這了,更多相關C++ 合并兩個排序的鏈表內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/zhaitianbao/article/details/121767253

延伸 · 閱讀

精彩推薦
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
主站蜘蛛池模板: 精品国产乱码久久久久久牛牛 | 精品日韩一区二区三区 | 久久成人精品 | 久久成人国产 | 99热激情| 美女视频一区 | 国产欧美日韩一区二区三区 | 午夜欧美一区二区三区在线播放 | 国产乱码久久久久久一区二区 | 日韩免费高清在线 | 日本一区二区视频 | 久久国产精品免费一区二区三区 | 丁香亚洲| 国产精品欧美一区二区 | 成人在线小视频 | 91网站入口 | 美日韩在线 | 国产免费一区二区 | 狠久久| 91免费版在线观看 | 中文字幕在线一区 | 亚洲精品视频一区二区三区 | 韩国精品一区二区 | 综合色九九 | 精品日韩一区 | 亚洲一区二区中文字幕 | 欧美精品一二三 | 国产精品99久久久久久久vr | 一区二区国产在线观看 | 在线一级黄色片 | 日一区二区| 亚洲免费观看视频网站 | 久久99蜜桃综合影院免费观看 | 依人久久久 | 黄色美女网站在线观看 | 青青草成人在线 | 欧美在线视频网站 | 欧美一区二区三区在线观看视频 | 久久久久久麻豆 | 91高清视频 | 97色在线视频 |