【數據結構OJ題】反轉鏈表

原題鏈接:https://leetcode.cn/problems/reverse-linked-list/description/

目錄

1. 題目描述

2. 思路分析

3. 代碼實現


1. 題目描述

2. 思路分析

方法一三指針翻轉法

使用三個結構體指針n1n2n3,原地修改結點指向。

就是讓n1先指向空指針NULLn2指向頭結點n3指向頭結點下一個結點

用n2進行遍歷。然后讓n1指向n2n2指向n3n3指向n3的下一個結點。如此循環遍歷直到n2指向空指針NULL時停止

最后返回n1即可

?

這里為什么要用三個指針呢?

因為如果只用兩個指針,那么我們讓n1指向n2后,鏈表的連接就斷了,找不到原鏈表n2的下一個結點了。

同時,我們需要注意一些臨界條件特殊情況

比如鏈表是空的,我們就讓最后返回空即可

一般情況至少有一個結點存在,所以我們得在n2不為空的情況下(即if(n2)),讓n3指向n2的下一個結點。(n3=n2->next

遍歷過程中,n3要指向下一個結點那么n3就不能是空指針(即if(n3) n3=n3->next

方法二頭插法

對每一個結點都進行頭插

3. 代碼實現

方法一:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/struct ListNode* reverseList(struct ListNode* head){struct ListNode *n1,*n2,*n3;n1=NULL;n2=head;if(n2)n3=n2->next;while(n2){n2->next=n1;n1=n2;n2=n3;if(n3)n3=n3->next;}return n1;
}

?

方法二:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/struct ListNode* reverseList(struct ListNode* head){struct ListNode *cur=head;struct ListNode *newhead=NULL;while(cur){struct ListNode *next=cur->next;//頭插cur->next=newhead;newhead=cur;cur=next;}return newhead;
}

?

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

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

相關文章

VSCode如何設置高亮

一、概述 本文主要介紹在 VSCode 看代碼時,怎樣使某個單詞高亮顯示,主要通過以下三步實現: 安裝 highlight-words 插件 配置 highlight-words 插件 設置高亮快捷鍵F8 工作是嵌入式開發的,代碼主要是C/C的,之前一直用…

【Linux】高級IO

目錄 IO的基本概念 釣魚五人組 五種IO模型 高級IO重要概念 同步通信 VS 異步通信 阻塞 VS 非阻塞 其他高級IO 阻塞IO 非阻塞IO IO的基本概念 什么是IO? I/O(input/output)也就是輸入和輸出,在著名的馮諾依曼體系結構當中…

ROS學習筆記(三)---好用的終端Terminator

ROS學習筆記文章目錄 01. ROS學習筆記(一)—Linux安裝VScode 02. ROS學習筆記(二)—使用 VScode 開發 ROS 的Python程序(簡例) 一、Terminator是什么? 在前面的學習中,為了運行hello.py我是在vscode頻繁的點擊運行窗口的“”號…

智谷星圖趙俊:讓人才和區塊鏈產業“雙向奔赴”丨對話MVP

區塊鏈產業需要什么樣的人才?趙俊很有發言權。 趙俊是北京智谷星圖科技有限公司的技術總監,也是FISCO BCOS官方認證講師。他2017年接觸區塊鏈,隨后選擇人才培育領域深耕。“為區塊鏈行業引進更多人才這件事很有價值,跟我的職業理…

菜單和內容滾動的聯動原理及代碼

之前寫代碼有個需求:左側是一個菜單,右邊是內容,點擊左側菜單右邊內容滾動到對應位置,右邊內容滾動到某位置時,左側菜單也會選中對應的菜單項。UI如下:這是大多網站的移動端都會有的需求。 解決方案一&…

高憶管理:什么是一碼通?有什么好處?

在經過券商開戶后,除了其間的財物賬戶、滬深股賬戶外,還有一個一碼通賬戶,什么是一碼通?它有什么好處?關于這些,高憶管理為大家預備了以下參閱內容。 什么是一碼通? 一碼通賬戶,一般…

CSDN編程題-每日一練(2023-08-15)

CSDN編程題-每日一練(2023-08-15) 一、題目名稱:新型美麗數列二、題目名稱:會議安排三、題目名稱:小豚鼠搬家一、題目名稱:新型美麗數列 時間限制:1000ms內存限制:256M 題目描述: 定義美麗數列A: 1. 數列中相鄰的數越是靠內相對大小加一,a[2]=a[1]+1,a[n-2]=a[n-1]+1…

【C語言】小游戲-掃雷(清屏+遞歸展開+標記)

大家好&#xff0c;我是深魚~ 目錄 一、游戲介紹 二、文件分裝 三、代碼實現步驟 1.制作簡易游戲菜單 2. 初始化棋盤(11*11) 3.打印棋盤(9*9) 4.布置雷 5.計算(x,y)周圍8個坐標的和 6.排查雷 <1>清屏后打印棋盤 <2>遞歸展開 <3>標記雷 四、完整代…

視頻監控有哪些存儲方式?安防監控應該如何選擇存儲模式?

視頻監控系統涉及到大量的視頻數據&#xff0c;需要對這些數據進行存儲&#xff0c;以備日后查看或備份。視頻監控的存儲需求需要根據場所的實際情況進行選擇&#xff0c;以保證監控數據的有效存儲和日后的調閱、回溯。 當前視頻監控的存儲方式&#xff0c;通常有以下幾種&…

Golang協程,通道詳解

進程、線程以及并行、并發 關于進程和線程 進程&#xff08;Process&#xff09;就是程序在操作系統中的一次執行過程&#xff0c;是系統進行資源分配和調度的基 本單位&#xff0c;進程是一個動態概念&#xff0c;是程序在執行過程中分配和管理資源的基本單位&#xff0c;每…

【BASH】回顧與知識點梳理(二十三)

【BASH】回顧與知識點梳理 二十三 二十三. Linux 賬號管理&#xff08;二&#xff09;23.1 賬號管理新增與移除使用者&#xff1a; useradd, 相關配置文件, passwd, usermod, userdelusermoduserdel 23.2 用戶功能&#xff08;普通用戶可使用&#xff09;idfingerchfnchsh 23.3…

【數據庫系統】--【2】DBMS架構

DBMS架構 01DBMS架構概述02 DBMS的物理架構03 DBMS的運行和數據架構DBMS的運行架構DBMS的數據架構PostgreSQL的體系結構RMDB的運行架構 04DBMS的邏輯和開發架構DBMS的層次結構DBMS的開發架構DBMS的代碼架構 05小結 01DBMS架構概述 02 DBMS的物理架構 數據庫系統的體系結構 數據…

騰訊Perfdog支持Windows PC端體驗性能測試

一、背景 最近在做抖音的小玩法&#xff0c;其基于unity引擎&#xff0c;然后掛載到直播伴侶。以及Perfdog近期也支持了Windows的測試&#xff0c;所以做一個體驗測試。 二、如何做 查看PC端的支持&#xff0c;目前是beat版本 選擇或搜索自己需要的對應的程序&#xff0c;如…

python實現文本相似度排名計算

項目中&#xff0c;客戶突然提出需要根據一份企業名單查找對應的內部系統用戶信息&#xff0c;然后根據直接的企業社會統一信用號和企業名稱進行匹配&#xff0c;發現匹配率只有2.86%&#xff0c;低得可憐。所以根據客戶的要求&#xff0c;需要將匹配率提高到70-80%左右&#x…

vue2+百度地圖web端開發

在Vue 2中開發百度地圖Web端應用&#xff0c;你可以使用百度地圖JavaScript API來實現地圖功能。以下是一個簡單的示例&#xff1a; 簡單的示例&#xff1a; 首先&#xff0c;在你的Vue項目中安裝vue-baidu-map插件&#xff1a; npm install vue-baidu-map --save在你的Vue組…

大數據Flink(五十九):Flink on Yarn的三種部署方式介紹以及注意

文章目錄 Flink on Yarn的三種部署方式介紹以及注意 一、Pre-Job 模式部署作業

對任意類型數都可以排序的函數:qsort函數

之前我們學習過冒泡排序&#xff1a; int main() {int arr[] { 9,7,8,6,5,4,3,2,1,0 };int sz sizeof(arr)/sizeof(arr[0]);int i 0;for (i 0; i < sz-1; i) {int j 0;for (j 0; j < sz-1-i; j) {if (arr[j] > arr[j 1]){int temp 0;temp arr[j];arr[j] ar…

接口測試及接口抓包常用的測試工具

接口 接口測試是測試系統組件間接口的一種測試。接口測試主要用于檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換&#xff0c;傳遞和控制管理過程&#xff0c;以及系統間的相互邏輯依賴關系等。 接口測試的重要性 是節省時間前后端不…

七、dokcer-compose部署springboot的jar

1、準備 打包后包名為 ruoyi-admin.jar 增加接口 httpL//{ip}:{port}/common/test/han #環境變量預application.yml 中REDIS_HOSTt的值&#xff0c;去環境變量去找&#xff1b;如果找不到REDIS_HOST就用myredis 1、Dockerfile FROM hlw/java:8-jreRUN ln -sf /usr/share/z…

私密相冊管家-加密碼保護私人相冊照片安全

App Store史上最安全、最強大、最卓越的私密相冊App&#xff01;再也不用擔心私密照片視頻被別人看見了&#xff01;?私密相冊為你提供多重密碼保護機制、簡單便捷的照片存儲空間&#xff0c;完美地將你的私密照片遠離一切惡意偷窺者的窺探&#xff01; 【產品功能】? √ 支…