0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何判斷兩個鏈表是否相交,假設(shè)兩個鏈表都沒有環(huán)?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2023-08-08 17:08 ? 次閱讀

如何判斷兩個鏈表是否相交,假設(shè)兩個鏈表都沒有環(huán)?

首先,很多同學會存在一個誤區(qū),認為兩個鏈表相交應該這樣的。

wKgZomTSBjiAZV4DAAjk1nPjtWA235.jpg

如果把它用結(jié)點的形式來表示就這樣的。

wKgaomTSBjiAelYeAAhO_dD3txc954.jpg

很顯然,相交的這個結(jié)點的next指針既指向了這個這個結(jié)點,又指向了這個結(jié)點,明顯不科學。

真正相交的鏈表,應該是這樣的。

wKgZomTSBjiAEwIuAAhhbbET980184.jpg

如果兩個鏈表相交,那么一定有重合的結(jié)點,所以可以逐個判斷第一個鏈表里面的結(jié)點是否在第二個鏈表中,這種辦法可行,就是效率太低,放在筆試題中往往時間復雜度滿足不了。

我們稍微分析一下就會發(fā)現(xiàn),相交的兩個鏈表,他們的最后一個結(jié)點一定是重合的。

所以只要讓第一個鏈表的指針指向最后一個結(jié)點,第二個鏈表的指針也指向最后一個結(jié)點,判斷這兩個結(jié)點是否相同,就能解決問題。

這個時候,往往面試官會接著問,如何找出相交的那個結(jié)點。

剛才的方法只適用于判斷是否相交,如果想找出相交的結(jié)點,好像不太容易。

我們得換個方法,既能判斷是否相交,又能找出相交的那個結(jié)點。

如果兩個鏈表的長度一樣,只要同時移動指針,最先相等的那個結(jié)點一定就是相交的結(jié)點。

所以可以先計算兩個鏈表的長度差,然后先移動一個指針,保證長度一樣后,再同時向后走。代碼也沒什么難度,直接附上。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單鏈表
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    6912
  • 數(shù)據(jù)鏈表
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    2453

原文標題:如何判斷兩個鏈表是否相交?

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    兩個沒有耦合關(guān)系的電感串聯(lián)或者并聯(lián)會發(fā)生什么

    ,則兩個電感之間的磁場只是沒有相互作用而已,各自獨立,各自在自己的磁路中循環(huán);再者,沒有耦合關(guān)系的電感我們也不談同名端和異名端的問題,因為同名端和異名端是對于兩個及以上的具有耦合關(guān)系的
    的頭像 發(fā)表于 03-02 15:16 ?1w次閱讀

    如何判斷鏈表是否環(huán)

    如何判斷鏈表是否環(huán)
    發(fā)表于 08-10 17:07 ?635次閱讀
    如何<b class='flag-5'>判斷</b><b class='flag-5'>鏈表</b><b class='flag-5'>是否</b>有<b class='flag-5'>環(huán)</b>

    數(shù)據(jù)結(jié)構(gòu):判斷鏈表回文結(jié)構(gòu)

    給定一鏈表,判斷鏈表是否為回文結(jié)構(gòu)?;匚氖侵冈撟址蚰嫘蛲耆恢隆H绠斴斎?b class='flag-5'>鏈表 {1,2
    的頭像 發(fā)表于 12-01 13:26 ?585次閱讀
    數(shù)據(jù)結(jié)構(gòu):<b class='flag-5'>判斷</b><b class='flag-5'>鏈表</b>回文結(jié)構(gòu)

    multisim 如何疊加兩個兩個信號

    的正弦信號濾除掉),而信號發(fā)生器只能產(chǎn)生一信號,我該怎么辦?謝謝啊,困擾我好幾天了,百度了好久都沒有答案,求各位大俠賜教。我的qq 79836573
    發(fā)表于 03-03 17:55

    Linux內(nèi)核的鏈表操作

    處理。Linux鏈表自己考慮的安全性主要有兩個方面:a) list_empty()判斷基本的list_empty()僅以頭指針的next是否指向自己來
    發(fā)表于 08-29 11:13

    鏈表——求兩個城市的距離

    用單鏈表,鍵盤輸入城市名稱和城市的坐標,可以在菜單中選擇你要進行的內(nèi)容
    發(fā)表于 11-26 15:45 ?1次下載

    合并兩個排序的鏈表

    合并兩個排序的鏈表一、題目要求 輸入兩個單調(diào)遞增的鏈表,輸出兩個鏈表合成后的
    發(fā)表于 01-16 22:02 ?569次閱讀

    如何測量兩個光源的相對強度?

    Q: 是否可以使用儀表放大器測量兩個光源之間的差異?A: 是的,用兩個光敏電阻替換儀表放大器的主設(shè)定電阻就可
    的頭像 發(fā)表于 02-03 12:45 ?5876次閱讀
    如何測量<b class='flag-5'>兩個</b>光源的相對強度?

    Linux USB總線的兩個鏈表

    USB 總線引出兩個首要 的鏈表,一為 USB 設(shè)備鏈表,一為 USB 驅(qū)動
    發(fā)表于 04-20 10:33 ?954次閱讀

    移動旋轉(zhuǎn)鏈表的每個節(jié)點

    接下來設(shè)置兩個指針 former、latter 均指向鏈表的頭節(jié)點,這兩個指針的目的是去尋找出旋轉(zhuǎn)之前的尾節(jié)點位置、旋轉(zhuǎn)成功之后的尾節(jié)點位置。
    的頭像 發(fā)表于 10-25 18:05 ?1103次閱讀

    如何使用兩個LED和Arduino

    電子發(fā)燒友網(wǎng)站提供《如何使用兩個LED和Arduino.zip》資料免費下載
    發(fā)表于 01-30 11:28 ?1次下載
    如何使用<b class='flag-5'>兩個</b>LED和Arduino

    兩個LED和兩個按鈕的使用

    電子發(fā)燒友網(wǎng)站提供《兩個LED和兩個按鈕的使用.zip》資料免費下載
    發(fā)表于 01-30 16:04 ?1次下載
    <b class='flag-5'>兩個</b>LED和<b class='flag-5'>兩個</b>按鈕的使用

    兩個相同電路的電流是否相等?

    圖1(a)、(b)所示兩個電路其電路結(jié)構(gòu)和元件參數(shù)均相同,是完全相同的電路。那么兩個圖中的I是否相同?
    的頭像 發(fā)表于 03-10 09:42 ?1405次閱讀
    <b class='flag-5'>兩個</b>相同電路的電流<b class='flag-5'>是否</b>相等?

    C語言入門之鏈表概述

    鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)。它是動態(tài)地進行存儲分配的一種結(jié)構(gòu),是根據(jù)需要開辟內(nèi)存單元。 鏈表有一“頭指針”變量,它存放一地址,該地址指向一
    的頭像 發(fā)表于 03-24 15:04 ?1214次閱讀

    兩個網(wǎng)絡(luò)IP地址是否在同一段中的判斷方法

    我們知道IP地址是由“網(wǎng)絡(luò)號+子網(wǎng)號+主機號”組成,判斷兩個IP地址是否在同一網(wǎng)段主要看“網(wǎng)絡(luò)號”,如果網(wǎng)絡(luò)號一樣,那么他們就在同一網(wǎng)段
    的頭像 發(fā)表于 06-02 14:31 ?1.3w次閱讀
    <b class='flag-5'>兩個</b>網(wǎng)絡(luò)IP地址<b class='flag-5'>是否</b>在同一<b class='flag-5'>個</b>段中的<b class='flag-5'>判斷</b>方法