數據結構與算法-反轉單鏈表

數據結構與算法-反轉單鏈表

大家好,歡迎回到我們的算法學習系列。今天,我們將探討一個在算法面試中非常經典的問題——反轉單鏈表。

什么是單鏈表?

在介紹問題之前,我們先簡單了解一下單鏈表。單鏈表是一種線性數據結構,由一系列節點組成,每個節點包含兩個部分:存儲數據的部分和指向下一個節點的指針。鏈表的第一個節點稱為頭節點,最后一個節點的指針指向 null,表示鏈表的結束。

反轉單鏈表問題描述

給定一個單鏈表的頭節點,反轉這個鏈表,使得鏈表的尾節點變為頭節點,并返回新的頭節點。

示例

  • 輸入:1 -> 2 -> 3 -> 4 -> 5 -> null
  • 輸出:5 -> 4 -> 3 -> 2 -> 1 -> null

解決思路

我們可以通過迭代的方法來反轉單鏈表。基本思路是遍歷鏈表,并將當前節點的指針指向前一個節點,從而改變鏈表的方向。

實現代碼

下面是用JavaScript實現這個算法的代碼:

function ListNode(val) {this.val = val;this.next = null;
}function reverseList(head) {let prev = null;let curr = head;while (curr !== null) {let nextTemp = curr.next;curr.next = prev;prev = curr;curr = nextTemp;}return prev;
}

代碼解析

  1. 定義節點結構ListNode 是一個鏈表節點的構造函數,每個節點有一個值 val 和一個指向下一個節點的指針 next
  2. 初始化指針:我們定義兩個指針 prevcurr,分別表示前一個節點和當前節點。初始時,prevnullcurr 為頭節點 head
  3. 遍歷鏈表
    • 保存下一個節點:我們用 nextTemp 保存當前節點的下一個節點。
    • 反轉指針:將當前節點的指針指向前一個節點。
    • 移動指針:更新 prevcurr 指針,進入下一個節點。
  4. 返回新的頭節點:遍歷結束后,prev 指向反轉后的新頭節點,返回 prev

圖解

讓我們通過圖解來理解反轉過程:

初始鏈表:

head -> 1 -> 2 -> 3 -> 4 -> 5 -> null
prev  curr

第一步:

head -> 1 -> null
prev  curr

第二步:

head -> 2 -> 1 -> null
prev      curr

第三步:

head -> 3 -> 2 -> 1 -> null
prev         curr

依次類推,直到 currnull,鏈表反轉完成。

小結

今天,我們介紹了反轉單鏈表的問題及其解決方法。通過迭代的方法,我們可以高效地反轉一個單鏈表,這是一個在面試中經常遇到的經典問題。

感謝大家的閱讀!如果你有任何問題或建議,歡迎在評論區留言。

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

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

相關文章

氣缸前端鎖緊技術探討:從四個方面、五個方面、六個方面和七個方面深度解析

氣缸前端鎖緊技術探討:從四個方面、五個方面、六個方面和七個方面深度解析 在工業自動化領域,氣缸作為關鍵的執行元件,其前端鎖緊技術的穩定性與可靠性直接影響到整個系統的運行效率。本文將從四個方面、五個方面、六個方面和七個方面&#…

python 面對對象 類 補充

isinstance isinstance():判斷一個實例化對象是否屬于這個類的,isinstance(對象,類) class Man():passclass Women():passa Man()print(isinstance(a, Man)) # True print(isinstance(a, Women)) # False 類的屬性操作 getattr() 獲…

小白windows系統從零開始本地部署大模型全記錄

大家好,最近兩年大語言模型風靡全球,最近,不少開源大模型,將模型部署到自己的電腦上,用個性化的數據微調想必是不少人的愿望,這次,讓我來分享從hugging face上下載部署chatglm3-6b中的經驗。 1.…

自動控制: 最小二乘估計(LSE)、加權最小二乘估計(WLS)和線性最小方差估計

自動控制: 最小二乘估計(LSE)、加權最小二乘估計(WLS)和線性最小方差估計 在數據分析和機器學習中,參數估計是一個關鍵步驟。最小二乘估計(LSE)、加權最小二乘估計(WLS&…

conda環境里安裝ffmpeg

遇到的問題 在執行腳本的時候提示: /home/xxx/anaconda3/envs/llm-asr/lib/python3.9/site-packages/pydub/utils.py:170: RuntimeWarning: Couldnt find ffmpeg or avconv - defaulting to ffmpeg, but may not workwarn("Couldnt find ffmpeg or avconv - …

wifi貼碼推廣哪家靠譜?

如今越來越多的人想輕資產創業,WIFI貼碼是共享行業最無成本的創業項目了,而在選擇廠商的時候,大家就想要知道哪家公司靠譜,更好、更便宜、可靠。那么wifi貼碼推廣哪家靠譜?別急,下面小編將帶你一起了解。 目…

OpenAI開始訓練新的前沿模型——但GPT-5至少在90天內不會推出

ChatGPT 制造商 OpenAI 今早宣布,已開始訓練其新的“前沿模型”,并成立了一個新的安全委員會,由現任董事會成員 Bret Taylor(OpenAI 董事會主席兼客戶服務初創公司 Sierra AI 聯合創始人、前谷歌地圖負責人和前 Facebook 首席技術…

BGP路由策略實驗

一、實驗拓撲 二、IP分配(骨干) R1: 0/0/0 15.0.0.1 24 0/0/1 18.0.0.2 24 0/0/2 19.0.0.1 24 R2: 0/0/0 16.0.0.1 24 0/0/1 15.0.0.2 24 R3: 0/0/0 17.0.0.2 24 0/0/1 18.0.0.1 24 R4: 0/0/0 16.0…

元宇宙vr工業產品展示空間降低研發成本

元宇宙產品虛擬展廳搭建編輯器為您提供了一個自助式元宇宙場景搭建的絕佳平臺。無論您是設計公司、攝影公司、營銷公司還是教育機構,我們都能為您量身打造專屬的元宇宙解決方案,滿足您的多樣化需求。 元宇宙產品虛擬展廳搭建編輯器具備強大的3D編輯功能&…

藍牙設備中的UUID

文章目錄 一、Device UUID二、Service UUID 一、Device UUID Device UUID也可以被稱作為DeviceID。 Android 設備上掃描獲取到的 deviceId 為外圍設備的 MAC 地址,相對固定。iOS 設備上掃描獲取到的 deviceId 是系統根據外圍設備 MAC 地址及發現設備的時間生成的 …

如何成為AI工程師

AI工程師(不是打標員)已經成為新一代的熱門崗位(高薪、有前景),無論你是計算機科學專業的學生,還是已經在其他技術領域工作的專業人士,可以通過以下幾點來大概了解如何成為AI工程師。 1. 技術技…

【吊打面試官系列】Java高并發篇 - ThreadLocal 是什么?有什么用?

大家好,我是鋒哥。今天分享關于 【ThreadLocal 是什么?有什么用?】面試題,希望對大家有幫助; ThreadLocal 是什么?有什么用? ThreadLocal 是一個本地線程副本變量工具類。主要用于將私有線程和該…

dust3r部署踩坑全記錄

目前dust3r是三維重建最新最好的技術,運用了ViT編碼器、Transformer、注意力機制、回歸等技術,無需相機參數標定。 但是我部署過程中有很多坑,記錄一下。 1.OSError: CUDA_HOME environment variable is not set. Please set it to your CU…

Itme4 對象使用前進行初始化

fun(){ int a; printf("%d\n", a); cout << a << endl; //會報錯 使用了未初始化的變量a } //若a是全局變量則不會報錯 會默認初始化為0 在對象中優先使用初始化列表&#xff1a; ABEntry::ABEntry(const std::string& name, const std::string&…

數字工廠管理系統可以和哪些軟件集成

隨著工業4.0時代的到來&#xff0c;數字工廠管理系統已成為制造業轉型升級的核心驅動力。數字工廠管理系統通過集成各種軟件和技術&#xff0c;實現了生產過程的數字化、網絡化和智能化&#xff0c;大大提高了生產效率和管理水平。本文將探討數字工廠管理系統可以與哪些軟件集成…

Axure RP軟件漢化操作步驟

隨著互聯網產業的發展&#xff0c;設計師已經成為一個越來越受歡迎的職業&#xff0c;設計軟件已經成為設計師必不可少的工具。說到設計軟件&#xff0c;不得不說的是 Axure rp &#xff0c;越來越多的設計師使用它來設計產品原型&#xff0c;作為美國 Axure Software Solution…

OrangePi Kunpeng Pro體驗——安裝Hass與驅動SPI小屏幕

OrangePi Kunpeng Pro 是一款面向開發者和愛好者的高性能開發板。在本次測評中&#xff0c;主要將以前的一些代碼在該開發板上實現&#xff0c;包括docker部署hass&#xff0c;引腳驅動SPI小屏幕。中間遇到了一些小小問題&#xff0c;但都成功了&#xff0c;一起來試試吧~ 一、…

IDM有哪些優勢?

IDM&#xff08;Internet Download Manager&#xff09;作為一款功能強大的文件下載工具&#xff0c;其優勢主要體現在以下幾個方面&#xff1a; 高速下載&#xff1a; IDM采用動態分段算法&#xff0c;將文件分成多個段同時下載&#xff0c;從而顯著加快了下載速度。支持從多個…

刪除中間節點

題目鏈接 刪除中間節點 題目描述 注意點 node既不是鏈表頭節點&#xff0c;也不是鏈表尾節點 解答思路 將當前節點的值替換為下一個節點的值&#xff0c;并將當前節點的next指針設置為下一個節點的next指針&#xff0c;可以理解為刪除了當前節點 代碼 /*** Definition f…

考研計組chap1計算機系統概述

目錄 一、計算機發展歷程(不考了) 二、計算機硬件的基本組成 3 1.五個部分 &#xff08;1&#xff09;輸入設備 &#xff08;2&#xff09;控制器 &#xff08;3&#xff09;運算器 &#xff08;4&#xff09;&#xff08;主&#xff09;存儲器 &#xff08;5&#xff0…