鏈表相交問題

本來想自己寫,寫了一半發現一篇文章,解釋寫得簡單易懂,我就直接拿過來了。

這個問題值得反復地寫,鍛煉鏈表coding能力的好題。

?

?


//如果兩個鏈表都不帶環
int NotCycleCheckCross(pLinkNode head1,pLinkNode head2)
{pLinkNode list1 = head1->next;pLinkNode list2 = head2->next;if ((NULL==list1 )||(NULL==list2)){return 0;      //不相交}while (NULL != list1->next){list1 = list1->next;}while (NULL != list2->next){list2 = list2->next;}if (list1==list2){return 1;      //相交}return 0;          //不相交
}//鏈表帶環,判斷兩個鏈表是否相交
int CycleCheckCross(pLinkNode meet1, pLinkNode meet2)
{pLinkNode cur = meet1->next;if (meet1 == meet2){return 1;     //鏈表相交}while ((cur != meet1)&&(cur!=meet2)){cur = cur->next;}if (cur == meet2){return 1;   //鏈表相交}return 0;       //不相交
}
//將上面兩個函數封裝成一個函數int CheckCross(pLinkNode head1, pLinkNode head2)          //參數為兩個頭結點{pLinkNode fast = NULL;pLinkNode slow = NULL;pLinkNode meet1 = NULL;pLinkNode meet2 = NULL;if (head1->next == NULL || head2->next == NULL){return 0;          //至少一個鏈表為空鏈表,則兩個鏈表一定不相交}fast = head1->next;slow = head1->next;while (fast&&fast->next)           //判斷鏈表head1是否帶環{fast = fast->next->next;slow = slow->next;if (fast == slow){meet1 = fast;break;}}fast = head2->next;slow = head2->next;while (fast&&fast->next)           //判斷鏈表head2是否帶環{fast = fast->next->next;slow = slow->next;if (fast == slow){meet2 = fast;break;}}if ((meet1 == NULL) && (meet2 == NULL))       //如果兩個鏈表都不帶環{return NotCycleCheckCross(head1, head2);}else if (meet1&&meet2)                        //如果兩個鏈表都帶環{return CycleCheckCross(meet1, meet2);}//如果兩個鏈表一個帶環一個不帶環,則一定不相交直接返回0return 0;            //不相交}

原文https://blog.csdn.net/lf_2016/article/details/51756644

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445569.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445569.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445569.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用JS寫了一個模擬串行加法器

在重溫《編碼:隱匿在計算機軟硬件背后的語言》第12章——二進制加法器時,心血來潮用JS寫了一個模擬串行加法器。 測試斷言工具TestUtils.js function assertTrue(actual){if(!actual)throw "Error actual: " actual " is not true.&q…

Android學習路線總結

title: Android學習路線總結,絕對干貨 tags: Android學習路線,Android學習資料,怎么學習android grammar_cjkRuby: true --- 一、前言 不知不覺自己已經做了幾年開發了,由記得剛出來工作的時候感覺自己能牛X,現在回想起來感覺好無知。懂的越…

雙棧

利用棧底位置相對不變的特性,可以讓兩個順序棧共享一個空間。 具體實現方法大概有兩種: 一種是奇偶棧,就是所有下標為奇數的是一個棧,偶數是另一個棧。但是這樣一個棧的最大存儲就確定了,并沒有起到互補空缺的作用&a…

Error when loading the SDK:解決方案

錯誤情況: 當打開eclipse時出現如下窗口(內容如下) Error when loading the SDK: Error: Error parsing \Android\adt-bundle-windows-x86_64-20140702\sdk\system-images\android-22\android-wear\armeabi-v7a\devices.xml cvc-complex-type…

單調隊列優化的背包問題

對于背包問題,經典的背包九講已經講的很明白了,本來就不打算寫這方面問題了。 但是吧。 我發現,那個最出名的九講竟然沒寫隊列優化的背包。。。。 那我必須寫一下咯嘿嘿,這么好的思想。 我們回顧一下背包問題吧。 01背包問題 …

用Python去除掃描型PDF中的水印

內容概述 含水印掃描型PDF文件,其中某頁如下圖所示,用Python去除其頁頂及頁底的水印。 處理思路:PDF中的每一頁的水印的相對位置基本相同,將PDF每一頁輸出成圖片,然后進行圖片編輯,用白色填充方形覆蓋水印…

鏈表實現棧

棧&#xff0c;是操作受限的線性表&#xff0c;只能在一端進行插入刪除。 其實就是帶尾指針的鏈表&#xff0c;尾插 #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define Status int #define SElemType int //只在頭部進行插入和刪除(…

二階有源濾波器

濾波器是一種使用信號通過而同時抑制無用頻率信號的電子裝置, 在信息處理、數據傳送和抑制干擾等自動控制、通信及其它電子系統中應用廣泛。濾波一般可分為有源濾波和無源濾波, 有源濾波可以使幅頻特性比較陡峭, 而無源濾波設計簡單易行, 但幅頻特性不如濾波器, 而且體積較大。…

用JS寫了一個30分鐘倒計時器

效果圖 額外功能 左鍵單擊計時器數字區&#xff0c;不顯示或顯示秒鐘區。左鍵雙擊計時器數字區&#xff0c;暫停或啟動計時器。計時完畢&#xff0c;只能刷新頁面啟動計時器。輸入框可輸入備注信息&#xff0c;輸入框失去焦點或計時完畢后&#xff0c;時間戳附帶備注信息會存入…

為什么高手離不了Linux系統?我想這就是理由!

通過本文來記錄下我在Linux系統的學習經歷&#xff0c;聊聊我為什么離不了Linux系統&#xff0c;同時也為那些想要嘗試Linux而又有所顧忌的用戶答疑解惑&#xff0c;下面將為你介紹我所喜歡的Linux系統&#xff0c;這里有一些你應該知道并為之自豪的事實。 這里你應該首先拋開W…

python學習實例(1)

# #1.2 計算機編程的基本概念 ## #1.2.2 從Python語言進入計算機語言的世界 ##<程序&#xff1a;例子1> def F(x,y):return(x*xy*y) print("F(2,2)",F(2,2)) print("F(3,2)",F(3,2))#<程序&#xff1a;例子2> def Pr():for i in range(0,10)…

用JS寫一個電影《黑客帝國》顯示屏黑底綠字雨風格的唐詩欣賞器

效果圖 放碼過來 <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html;charsetutf-8"/><title>Black Screen And Green Characters</title><style type"text/css">table…

python學習實例(2)

# #2.2 不同進制間的轉換 ## #2.2.1. 二進制數轉換為十進制數 ##<程序&#xff1a;2-to-10進制轉換> binput("Please enter a binary number:") d0; for i in range(0,len(b)):if b[i] 1:weight 2**(len(b)-i-1)d dweight; print(d)#<程序&#xff1a;改…

元器件封裝大全:圖解+文字詳述

先圖解如下&#xff1a; 元器件封裝類型&#xff1a; A.Axial  軸狀的封裝&#xff08;電阻的封裝&#xff09;AGP &#xff08;Accelerate raphical Port&#xff09; 加速圖形接口 AMR(Audio/MODEM Riser) 聲音/調制解調器插卡BBGA&#xff08;Ball Grid Array&#xff09;…

python學習實例(3)

# #3.4 關于Python的函數調用 ## #3.4.2 Python函數入門 ##<程序&#xff1a;計算43*22> #函數f def f(x, y):return x*y*y#主函數部分 c4f(3, 2) print (c)# #3.4.3 局部變量(Local variables)與全局變量(Global variables) ##<程序&#xff1a;打印局部變量a和全局…

用JS寫一個丐版《2048》小游戲

效果圖 放馬過來 <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html;charsetutf-8"/><title>2048</title><style type"text/css">.basic{height:80px;width:80px;back…

如何有效申請TI的免費樣片

轉自如何有效申請TI的免費樣片 TI公司愿意為支持中國大學的師生們的教學、實驗、創新實踐、競賽和科研項目&#xff0c;提供有限數量的免費樣片。首先需要指出的是&#xff1a;所有的樣片申請應該是誠實正當的&#xff0c;所有不恰當的申請&#xff08;包括不必要或多余的&…

python學習實例(4)

# #第四章的python程序 ## #4.1 簡潔的Python ##<程序&#xff1a;Python數組各元素加1> arr [0,1,2,3,4] for e in arr:tmpe1print (tmp)## #4.2 Python內置數據結構 ## #4.2.1 Python基本數據類型 ##<程序&#xff1a;產生10-20的隨機浮點數> import random f …

用Python批量生成字幕圖片用于視頻剪輯

說明 視頻剪輯時需要為視頻添加字幕&#xff0c;添加字幕方法之一&#xff1a;根據字幕文本文件批量生成透明底只有字幕內容的圖片文件&#xff0c;如下圖&#xff0c;然后將這些圖片文件添加到視頻剪輯軟件軌道中。 于是用pillow這Python圖片工具庫執行本次批量生成工作。 …

關于接地:數字地、模擬地、信號地、交流地、直流地、屏蔽地、浮

除了正確進行接地設計、安裝,還要正確進行各種不同信號的接地處理。控制系統中&#xff0c;大致有以下幾種地線&#xff1a; &#xff08;1&#xff09;數字地&#xff1a;也叫邏輯地&#xff0c;是各種開關量&#xff08;數字量&#xff09;信號的零電位。 &#xff08;2&…