C++基礎(⑤刪除鏈表中的重復節點(鏈表 + 遍歷))

題目描述
給定一個排序好的鏈表(升序),刪除所有重復的元素,使每個元素只出現一次。
示例:
輸入:1 → 1 → 2 → 3 → 3
輸出:1 → 2 → 3
解題思路
核心觀察:鏈表已排序,重復節點一定「相鄰」(無需考慮非相鄰重復)。
遍歷邏輯:用一個指針 current 從表頭開始遍歷:
若 current 的值 == current->next 的值(發現重復),則跳過 current->next(讓 current->next 指向 current->next->next);
若不重復,current 移動到下一個節點(current = current->next)。
邊界處理:鏈表為空或只有 1 個節點時,直接返回原鏈表(無重復可刪)。


C++ 代碼實現

#include <iostream>
using namespace std;// 先定義鏈表節點(復用你熟悉的結構)
struct ListNode {int val;ListNode* next;ListNode(int v = 0, ListNode* n = nullptr) : val(v), next(n) {}
};// 打印鏈表(輔助函數)
void printList(ListNode* head) {ListNode* curr = head;while (curr != nullptr) {cout << curr->val << " → ";curr = curr->next;}cout << "nullptr" << endl;
}// 核心函數:刪除重復節點
ListNode* deleteDuplicates(ListNode* head) {// 邊界:空鏈表或只有1個節點,直接返回if (head == nullptr || head->next == nullptr) {return head;}ListNode* current = head;  // 遍歷指針while (current != nullptr && current->next != nullptr) {if (current->val == current->next->val) {// 發現重復:跳過 current->next(先存臨時指針避免內存泄漏)ListNode* temp = current->next;current->next = current->next->next;delete temp;  // 釋放重復節點的內存} else {// 不重復:移動到下一個節點current = current->next;}}return head;
}// 測試代碼
int main() {// 構造示例鏈表:1 → 1 → 2 → 3 → 3ListNode* head = new ListNode(1);head->next = new ListNode(1);head->next->next = new ListNode(2);head->next->next->next = new ListNode(3);head->next->next->next->next = new ListNode(3);cout << "原鏈表:";printList(head);head = deleteDuplicates(head);cout << "刪除重復后:";printList(head);// 釋放鏈表內存(避免泄漏)ListNode* curr = head;while (curr != nullptr) {ListNode* temp = curr;curr = curr->next;delete temp;}return 0;
}

123

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

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

相關文章

摩搭api 實現

AI圖片生成器前端實現詳解本文詳細解析一個功能完整的AI圖片生成器前端實現&#xff0c;包含主題切換、參數配置、圖片生成與預覽等核心功能。項目概述 這是一個基于ModelScope平臺的AI圖片生成器前端實現&#xff0c;用戶可以通過輸入提示詞、選擇模型和調整參數來生成高質量圖…

c++--線程休眠/sleep

線程休眠<unistd.h>--sleep()<thread>--std::this_thread::sleep_for()ros--rclcpp::sleep_for()以上的三個sleep也就是休眠會占用CPU嗎簡單直接的回答是&#xff1a;不會。一個正確使用、正在休眠的線程不會占用CPU資源。核心原理當你調用像 std::this_thread::sl…

人工智能基礎概念

The brain happens to be a meat machine. —— Marvin Lee Minsky 目錄 人類智能 人工智能 三個階段 三大學派 四個要素 關系辨析 維度分類 發展簡史 技術方向 應用領域 產業圖譜 發展趨勢 人類智能 人工智能的目的是通過探索智慧的實質&#xff0c;擴展人類智能…

企業數字資產管理怎么轉型更高效?一文打通策略與實踐

核心要點 問題&#xff1a; 傳統的內容管理方式效率低、協作難、版本混亂&#xff0c;企業轉型 DAM 系統面臨選型難和落地難兩大挑戰。 答案&#xff1a; 采用階段性轉型策略&#xff0c;結合智能化工具和標準化流程&#xff0c;能幫助企業構建可擴展、易協作、強治理的內容資…

python pyqt5開發DoIP上位機【源碼】

目錄 文章合集 文章合集 python pyqt5開發DoIP上位機【介紹】 python pyqt5開發DoIP上位機【代碼里發送常用uds命令是怎么實現的?】 python pyqt5開發DoIP上位機【代碼里是怎么獲取診斷回復的?】 python pyqt5開發DoIP上位機【診斷回復的函數都是怎么調用的?】 python …

IIC (I2C)通信

一、IIC的特點I2C&#xff08;Inter IC Bus&#xff09;又成為&#xff08;愛方C I2C&#xff09;是由Philips公司開發的一種通用數據總線兩根通信線&#xff1a;SCL&#xff08;Serial Clock&#xff09;、SDA&#xff08;Serial Data&#xff09;同步&#xff0c;半雙工帶數據…

【圖像處理 - 基礎知識】ISP(Image Signal Processor)處理

文章目錄1. 圖像傳感背景2. 圖像數據格式2.1. 【RAW】Bayer濾色陣列&#xff08;Bayer Filter Array&#xff09;2.2. 【RGB】2.3. 【YUV】3. ISP&#xff08;Image Signal Processor&#xff09;3.1. ISP定義3.2. 分類概括1 RAW 域&#xff08;Raw Domain&#xff09;2 RGB 域…

PostgreSQL 數據庫災備要點與舉例說明**

PostgreSQL 數據庫災備要點與舉例說明 數據庫災備(Disaster Recovery, DR)是確保業務連續性的核心環節,其目標是在主生產環境遭遇計劃外中斷(如硬件故障、自然災害、人為錯誤、數據損壞)時,能快速恢復數據和服務。PostgreSQL 因其強大和開源特性,提供了多種高效的災備方…

【GaussDB】在邏輯復制中剔除指定用戶的事務

【GaussDB】在邏輯復制中剔除指定用戶的事務 1. 需求背景 在邏輯復制中&#xff0c;期望對源端指定用戶的所有操作不復制到目標端。然而WAL日志中沒有用戶信息可用于過濾&#xff0c;因此考慮結合審計日志來實現這一需求。 2. 解決方案 2.1 配置審計日志 首先需要開啟事務…

C/C++---預定義常量

在C/C開發中&#xff0c;預定義常量是編譯器與標準庫提供的“隱形工具集”&#xff0c;無需開發者顯式定義&#xff0c;卻在跨平臺兼容、調試定位、數值計算安全等場景中發揮核心作用。這些常量涵蓋編譯環境標識、語言標準判斷、代碼定位信息、數值邊界限制等多個維度&#xff…

嵌入式學習筆記--LINUX系統編程--DAY03進程控制

1.進程概述進程和程序的區別程序&#xff1a;程序是存儲在存儲介質上的一個可執行文件---靜態的進程&#xff1a;進程是程序的執行實例。可以說進程就是正在執行的程序。程序是一些指令的集合&#xff0c;而進程是程序的執行過程&#xff0c;這個過程的狀態是變化的&#xff0c…

【90頁PPT】新能源汽車數字化轉型SAP解決方案(附下載方式)

篇幅所限&#xff0c;本文只提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2501_92808859/91777751 資料解讀&#xff1a;《新能源汽車數字化轉型SAP解決方案》 ??詳細資料請看本解讀文章的最后內容?? 在全球汽車產業加速向電…

LSM6DS3姿態芯片和LIS2MD磁力計芯片數據讀取(stm32)

上代碼main.c 代碼示例#include "lsm6ds3.h" #include "lis2md.h"int16_t Acc[3] {0}, GYO[3] {0},Mag[3] {0};int main(void) {I2C_GPIO_Config(); //配置IIC使用端口Delayms(500); //延時Lsm6ds3_Init( ); …

數據傳輸安全-IKE工作過程

在前面的課程中&#xff0c;你已經掌握了&#xff1a;IPSec的目標&#xff1a;提供機密性、完整性、身份認證、防重放。IPSec的執行者&#xff1a;AH和ESP協議。IPSec的規則手冊&#xff1a;SA&#xff08;安全關聯&#xff09;&#xff0c;包含了所有保護參數&#xff08;算法…

翻譯-同位協同克里金算法

同點協同克里金法 副標題: 地統計學課程 主要內容: 同點協同克里金法 摘要 同點協同克里金法是一種多元地統計學技術,用于借助次要變量(協變量)來估算主要變量。本課程介紹了同點協同克里金法,并將其與簡單克里金法和簡單協同克里金法進行了比較。通過一個假設的案例…

國家統計局數據分析01——機器學習

我們前面爬取過國家統計局數據爬取——機器學習-CSDN博客的數據,我們接下來就對爬取的數據進行分析。 這是一個完整的數據分析代碼,主要用于加載、清洗和探索政府統計數據。讓我為你詳細解釋每個部分: 1. 導入必要的庫 import pandas as pd # 數據處理和分析的核心庫 imp…

【雜談】-混沌理論能否賦予機器差異化思考能力?

混沌理論能否賦予機器差異化思考能力&#xff1f; 文章目錄混沌理論能否賦予機器差異化思考能力&#xff1f;1、AI與結構化思維的本質特征2、人類思維的獨特優勢3、混沌算法的創新實踐4、混沌算法的作用機理5、混沌算法的應用實例5.1 音樂創作革新5.2 圖像生成突破5.3 科學發現…

jQuery.print插件:網頁內容打印與導出指南

本文還有配套的精品資源&#xff0c;點擊獲取 簡介&#xff1a;在網頁開發中&#xff0c;為了實現內容的打印或導出&#xff0c;可以利用jQuery.print插件&#xff0c;該插件提供了一個簡易的解決方案&#xff0c;尤其適用于表格數據。本指南詳細介紹了如何使用jQuery.print…

w嵌入式分享合集125

自己的原文哦~ https://blog.51cto.com/whaosoft/14165530 一、常用電路基礎公式 1.歐姆定律計算 計算電阻電路中電流、電壓、電阻和功率之間的關系。 歐姆定律解釋了電壓、電流和電阻之間的關系&#xff0c;即通過導體兩點間的電流與這兩點間的電勢差成正比。說…

Docker 核心技術:Union File System

大家好&#xff0c;我是費益洲。UnionFS 作為 Docker 的技術核心之一&#xff0c;實現了 Docker 鏡像的分層輕量化構建、容器資源的隔離復用等目的。本文將從核心原理、主流技術實現簡單介紹 UnionFS。 核心原理 Linux 的聯合文件系統&#xff08;Union File System&#xff0c…