數據結構之單鏈表和環形鏈表的應用(二)-

目錄

  • 一、相交鏈表
  • 二、環形鏈表I
  • 三、環形鏈表II
  • 總結


一、相交鏈表

相交鏈表
在這里插入圖片描述
在這里插入圖片描述

首先理解什么是鏈表相交,相交即存在共用的節點,鏈表相交有三種情況,

  1. 中間位置相交
  2. 頭部就開始相交
  3. 尾部相交

在這里插入圖片描述
如圖pcurA和pcurB就都有一個next指針指向同一個節點
這幾種鏈表結構畫成圖如下
在這里插入圖片描述
為什么說鏈表中沒有第一種結構呢?
在這里插入圖片描述
相交點即一個節點,其包括兩個組成部分,一個是存儲的數據,一個是next指針,一個節點的next指針不可能同時指向兩個節點

這里也可以總結出兩個鏈表相交的條件:
兩個鏈表的尾節點相同,兩個鏈表一定相交

思路:求兩個鏈表的長度,長鏈表先走長度差步,長短鏈表開始同步遍歷,找相同的節點

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

return NULL把結果給遠程服務器,會把結果包裝一下,最后輸出沒有相交點


二、環形鏈表I

環形鏈表I
簡單來說,如果鏈表帶環,鏈表尾節點的next指針不會直接置為空,且遍歷鏈表是一個死循環的
補充:環形鏈表的尾節點甚至可以指向自己
在這里插入圖片描述

思路:快慢指針,慢指針每次走一步,快指針每次走兩步,如果slow和fast指向同一節點,說明鏈表帶環,類似于表盤的時鐘和分鐘

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
補充:快慢指針在一個鏈表上開始遍歷,如果該鏈表不是帶環的,那節點一定為空,這種鏈表又分為奇數和偶數情況
在這里插入圖片描述

證明1:接下來最重要的部分來了,為什么在帶環鏈表里面,慢指針每次走一步,快指針每次走兩步,最終一定會相遇

在這里插入圖片描述
圖中slow的位置是入環點,入環之后是一個圓,其運動路徑是一個圓。假設slow走到入環點,fast已經走到如圖位置,此時slow和fast之間的距離最大,為N,此時slow走一步,fast走兩步
在這里插入圖片描述
二者之間距離變為N+1-2=N-1,繼續就是N-2,N-3,如圖最后變為0,也就是相遇,所以慢指針走一步,快指針走兩步,如果是環形鏈表一定會相遇,就像表盤當中的時針和分針一樣。

證明2:在環形鏈表中,慢指針每次走一步,快指針每次走3,4,5步,快慢指針在環形鏈表中還會相遇嗎?

在這里插入圖片描述
這里就以慢指針每次走一步,快指針每次走三步為例,依舊假設此時slow剛入環,此時slow和fast之間的距離最大,為N。
此時slow走一步,fast走三步,二者距離變為N+1-3=N-2。再一次就是N-2+1-3=N-4。
在這里插入圖片描述
此時二者之間距離想要變為0,N必須要是偶數才行,這一圈才可以追上。若N為奇數(比如說N=7),7-2=5,5-2=3,3-2=1,1-2=-1。這一圈便追不上了
這樣本來fast在追slow,二者距離變為-1,fast在slow前面,變為slow追fast。
當套圈之后,slow和fast的距離便變為了下圖紅線的長度,加入一圈的周長是C,套圈之后二者的距離便變為了C-1
在這里插入圖片描述
在C-1的距離又要slow走一步,fast走三步,繼續開始追逐
在這里插入圖片描述
如果會相遇,說明在環形鏈表里面,fast走三步也能判斷鏈表是否是帶環的,反之

接下來就要證明C-1到底是奇數還是偶數
在這里插入圖片描述
這是在第二圈開始追逐,這里fast的位置不代表fast第一圈入環之后到此處,slow就入環,在此之前fast可能已經走了好幾圈,下圖給出fast和slow的路程關系
在這里插入圖片描述
由于快指針無論在圈里走幾圈,都不影響其在圈里的位置,所以(n+1)可以忽略掉,就剩下C-N,前面明確的規定N是個奇數,所以C也一定為奇數。

所以得出結論N為奇數,C也一定為奇數,所以在下一圈,快慢指針也一定會相遇

最終結論就是下圖:
在這里插入圖片描述


三、環形鏈表II

環形鏈表II
在這里插入圖片描述
前一道題用快慢指針判斷了鏈表是否帶環,如果是一個帶環的鏈表,快慢指針一定會相遇,但是相遇節點不一定是入環節點,可以是環內的任意一個節點

思路:首先,快慢指針一定會在環里相遇,相遇點到入環節點的距離 == 頭節點到入環節點的距離

在這里插入圖片描述
在這里插入圖片描述
接下來要找起始節點,就一個從頭出發,一個從相遇點出發,同步遍歷,當走到了同一個節點,那這個節點一定是入環節點

代碼如下:
在這里插入圖片描述

證明:為什么在帶環鏈表中,快慢指針相遇點到入環節點的距離 == 頭節點到入環節點的距離

在這里插入圖片描述
圖中有一處標注有些偏差,頭節點到入環節點的距離為L,假設環的周長為R
在這里插入圖片描述
(n-1)R是快指針在環里面饒了多少圈,快指針無論繞多少圈都是在相遇點和slow相遇,所以(n-1)R可以忽略,所以最后得出紅字部分結論


總結

真寫爽了,數據結構這部分的題寫的想吐了,創作不易,三連支持~

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

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

相關文章

屬性關鍵字

屬性關鍵字深拷貝與淺拷貝類型各類對象深淺拷貝判斷完全深拷貝的實現屬性關鍵字property、synthesize和dynamic原子操作讀寫權限內存管理strong 🆚 copy總結深拷貝與淺拷貝 先前學習OC時已經對深淺拷貝進行了一次學習,這里進行一個復習總結和補充&#…

突發奇想,還未實踐,在Vben5的Antd模式下,將表單從「JS 配置化」改寫成「模板可視化」形式(豆包版)

在 Vben5 的 Antd 模式下,完全可以將表單從「JS 配置化」改寫成「模板可視化」形式,把表單項直接寫在 Vue 模板中,更直觀且符合傳統 Vue 開發習慣。以下是完整的改寫示例,保留原功能但結構更清晰: 改寫思路 放棄 JS 中…

【更新完畢】2025數學建模國賽E題思路代碼文章高教社杯全國大學生數學建模-AI 輔助智能體測

全部更新完畢 包含完整的文章全部問題的代碼、結果、圖表 完整內容請看文末最后的推廣群基于AI姿態識別的立定跳遠運動分析與個性化訓練優化研究 隨著《國家學生體質健康標準》的頒布實施,通過AI技術輔助體育運動分析已成為提升學生體質健康水平的重要手段。本研究針…

小白友好,無需基礎也能快速上手的AI部署工具,一鍵部署

AI大模型相信已經成為許多人工作和生活中的得力助手。然而,對于大多數普通用戶而言,將強大的AI模型部署到自己的電腦上,似乎是一項遙不可及的技術活,往往涉及到復雜的命令行操作、環境配置和代碼調試。那有沒有一種工具&#xff0…

《Python復刻植物大戰僵尸開源項目實戰:Pygame框架+JSON關卡設計,解鎖塔防游戲開發新技能》?

📌 大家好,我是智界工具庫,每天分享好用實用且智能的開源項目,以及在JAVA語言開發中遇到的問題,如果本篇文章對您有所幫助,請幫我點個小贊小收藏小關注吧,謝謝喲!😘 博主…

CCS——將工程中的 include / lib 修改為相對路徑,方便工程分享

在使用 Code Composer Studio (CCS) 開發 DSP 或 ARM 工程時,經常會遇到這樣一個問題:在 A 電腦上能正常編譯的工程,拷貝到 B 電腦上后就報錯。錯誤的原因通常是 工程使用了絕對路徑,而不同電腦上的文件路徑不一致,比如…

java解析網絡大端、小端解析方法

文章目錄一、背景介紹二、說明核心概念:什么是字節序(Endianness)?大端字節序 (Big-Endian)小端字節序 (Little-Endian)三、不同解析方式介紹一、背景介紹 中轉臺通過SNMP協議V1\V2上報中轉臺IP,然后程序解析入庫&…

【數據分享】土地利用矢量shp數據分享-甘肅

今天要說明數據就是土地利用shp數據分享-甘肅。數據介紹▲ 1km土地利用數據(2020年)▲ 土地利用數據(2025年)▲土地利用數據(2018年)▲ 30m土地利用數據(2023年)▲ 公路鐵路道路河流…

java log相關:Log4J、Log4J2、LogBack,SLF4J

目錄測試maven依賴logback.xml測試主程序測試輸出arthas查看logger總結使用參考文檔測試 maven依賴 <dependencies><!-- SLF4J API --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>…

AES加密算法詳細加密步驟代碼實現--身份證號碼加解密系統

系統概述 本系統是一個基于AES-256-CBC加密算法的身份證號碼加解密工具&#xff08;手搓底層步驟&#xff09;&#xff0c;針對的是上一篇文章對的AES加密原理的講解&#xff0c;雖說是演示&#xff0c;但功能完善&#xff0c;可單獨提供接口給項目調用&#xff0c;采用Python…

LangChain: Models, Prompts 模型和提示詞

獲取openapikey #!pip install python-dotenv #!pip install openai import osimport openai ? from dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv()) # read local .env file openai.api_key os.environ[OPENAI_API_KEY] # account for deprecat…

ACMESSL自動續簽教程

目錄 1、選擇申請證書 ?編輯2、選擇CA機構 ?編輯3、選擇自動驗簽 ?編輯4、證書續簽設置 5、自動發布設置 本教程實現ACMESSL自動續簽&#xff0c;請按照此教程實現。 1、選擇申請證書 點擊快捷入口或者訂單或證書列表中的【創建證書】按鈕&#xff1a; 2、選擇CA機構 …

基于飛算JavaAI的在線圖書借閱平臺設計實現

項目概述與需求分析 1.1 項目背景與意義 隨著數字化時代的快速發展&#xff0c;傳統圖書館管理模式已無法滿足現代讀者的需求。在線圖書借閱平臺通過互聯網技術將圖書資源數字化&#xff0c;為讀者提供便捷的檢索、借閱和管理服務&#xff0c;有效解決了傳統圖書館開放時間有…

通過API接口管理企業微信通訊錄案例

1.開始前需要登錄企業微信管理員后臺&#xff0c;開啟通訊錄同步&#xff0c;同時添加企業可信IP地址&#xff0c;記錄下Secret信息和企業ID&#xff0c;后面的程序會用到這兩個參數。2.下面是用python寫的創建企業微信賬號的具體案例。#!/usr/bin/env python3 # -*- coding: u…

硬件開發_基于物聯網的自動售賣機系統

一.系統概述 物聯網自動售賣機系統的主要功能如下&#xff1a; 核心控制器&#xff1a;采用STM32單片機作為系統核心&#xff0c;負責整體數據處理和各設備的統一控制。商品選擇&#xff1a;支持語音識別及按鍵方式&#xff0c;方便用戶在售賣機內選擇商品。語音播報&#xff1…

AGENTS.md: AI編碼代理的開放標準

每個項目都有一個 README.md 文件供人類閱讀。但隨著 AI 編碼代理和 AI 輔助開發的興起,我們需要一個新標準:AGENTS.md。這個 Markdown 文件定義了代理如何構建、測試和協作。 這就是 AGENTS.md 的作用。 它是一個簡單的 Markdown 文件,告訴 AI 助手如何在你的項目中操作:…

如何解決 OutOfMemoryError 內存溢出 —— 原因、定位與解決方案

網羅開發&#xff08;小紅書、快手、視頻號同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企業從事人工智能項目研發管理工作&#xff0c;平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

阿里云服務器配置ssl-docker nginx

# 切換到您當前的目錄 cd /AAAAAAAAAAAA# 創建存放nginx配置、證書和日志的目錄結構 mkdir -p nginx-config/conf.d nginx-ssl nginx-logs# 為掛載做準備&#xff0c;您可能需要將當前dist目錄內容移動到新的html目錄 # 首先查看當前dist目錄的內容 ls -la dist/# 如果html目錄…

2025全球生成式引擎優化(GEO)服務商發展趨勢與企業賦能白皮書

引言&#xff1a;人工智能技術的迅猛發展&#xff0c;特別是在生成式AI領域的突破&#xff0c;正以前所未有的力量重塑商業世界的競爭格局。對于尋求提升在線可見性、優化品牌互動及實現可持續增長的企業而言&#xff0c;生成式引擎優化&#xff08;GEO&#xff09;已然成為數字…

海康威視工業相機SDK開發實戰:使用C/C++實現軟件觸發圖像采集(含詳細中文注釋代碼)

一、前言 在機器視覺、自動化檢測、智能制造等領域&#xff0c;工業相機是獲取圖像數據的核心設備。海康威視作為國內領先的機器視覺廠商&#xff0c;其工業相機產品線豐富&#xff0c;廣泛應用于各類工業場景。 本文將帶你從零開始&#xff0c;使用 海康MVS SDK&#xff08;Ma…