單鏈表經典算法題之分割鏈表

給定一個頭結點和一個值x,是鏈表中所有小于x的值都在x前面

?typedef struct ListNode ListNode;

struct ListNode* partition(struct ListNode* head, int x) {

? ? //思路一:在原鏈表上進行修改

? ? //思路二:創建新鏈表,使用哨兵位,比x大的尾插,比x小的頭插

? ? //思路三:創建兩個鏈表,一個是大鏈表,一個是小鏈表,都整一個哨兵位

? ? if(head == NULL)

? ? {

? ? ? ? return head;

? ? }

? ? ListNode* lesshead = (ListNode*)malloc(sizeof(ListNode));

? ? ListNode* greaterhead = (ListNode*)malloc(sizeof(ListNode));

? ? ListNode* lesstail = lesshead;

? ? ListNode* greatertail = greaterhead;

? ? ListNode* pcur = head;

? ? while(pcur)

? ? {

? ? ? ? if(pcur->val < x)

? ? ? ? {

? ? ? ? ? ? lesstail->next = pcur;

? ? ? ? ? ? lesstail = lesstail->next;

? ? ? ? }

? ? ? ? else

? ? ? ? {

? ? ? ? ? ? greatertail->next = pcur;

? ? ? ? ? ? greatertail = greatertail->next;

? ? ? ? }

? ? ? ? pcur = pcur->next;

? ? }

? ? //小鏈表的尾節點與大鏈表的第一個有效節點結合

? ? greatertail->next = NULL;//防止死循環,并將next指針初始化

? ? lesstail->next = greaterhead->next;

? ? ListNode* ret = lesshead->next;

? ?

? ? free(lesshead);

? ? free(greaterhead);

? ? lesshead = greaterhead = NULL;

? ? return ret;

}

//超出時間限制只有一種情況:就是代碼出現了死循環

//創建新鏈表時,若進行尾插,則要考慮

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

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

相關文章

Modbus TCP轉DeviceNet網關連接ABB變頻器配置案例

某工廠需要將支持Modbus TCP協議的上位機控制系統&#xff08;如PLC或SCADA&#xff09;與支持DeviceNet協議的變頻器&#xff08;如ABB ACS880、施耐德ATV320等&#xff09;進行通信。為實現協議轉換&#xff0c;采用開疆智能Modbus TCP轉DeviceNet網關KJ-DVCZ-MTCPS作為中間設…

【力扣 簡單 C++】206. 反轉鏈表

目錄 題目 解法一&#xff1a;迭代 解法二&#xff1a;遞歸 題目 待添加 解法一&#xff1a;迭代 class Solution { private:ListNode* reverse(ListNode* head){ListNode* newHead {};while (head){ListNode* nextNode {head->next};head->next newHead;newHead …

計算機視覺之三維重建(深入淺出SfM與SLAM核心算法)—— 1. 攝像機幾何

文章目錄 1. 針孔相機1.1. 針孔成像1.2. 光圈對成像的影響 2. 透視投影相機2.1. 透鏡成像2.2. 失焦2.3. 徑向畸變2.4. 透視投影的性質 3. 世界坐標系到像素坐標系的變換4. 其它相機模型4.1. 弱透視投影攝像機4.2. 正交投影攝像機4.3. 各種攝像機模型的應用場合 課程視頻鏈接&am…

第十三節:第七部分:Stream流的中間方法、Stream流的終結方法

Stream流常見的中間方法 Stream流常見的終結方法 代碼 學生類&#xff08;代碼一與代碼二共涉及到的類&#xff09; package com.itheima.day28_Stream;import java.util.Objects;public class Student implements Comparable<Student> {private String name;private i…

深入理解 Go 中的字節序(Endianness)檢測代碼

深入理解 Go 中的字節序&#xff08;大小端&#xff09;檢測代碼 在計算機系統中&#xff0c;字節序&#xff08;Endianness&#xff09; 是指多字節數據類型&#xff08;如 int16、int32 等&#xff09;在內存中的存儲順序。Go 語言標準庫提供了對大端&#xff08;Big-endian&…

JAVA:RabbitMQ 消息持久化機制的技術指南

?? 1、簡述 在使用 RabbitMQ 構建可靠消息系統時,消息丟失是必須避免的問題。為此,RabbitMQ 提供了消息持久化機制(Message Durability),可以保障在 Broker 異常宕機后數據不會丟失。 本篇博客將從原理出發,結合 Spring Boot 實戰講解如何正確實現 RabbitMQ 消息持久…

tabs頁簽嵌套表格,切換表格保存數據不變并回勾

需求&#xff1a;點擊左邊的tab頁簽&#xff0c;請求右側表格數據&#xff1b;如果返回的接口數據存在taskuser字段并不為null&#xff0c;那么按照這個字段去回勾數據。如果存在數據&#xff0c;但與后面所勾選的數據項不同&#xff0c;按照后面勾選的為主。 <el-tabs tab-…

Java Kafka消費者

基礎 Java Kafka消費者主要通過以下核心類實現&#xff1a; KafkaConsumer&#xff1a;消費者的核心類&#xff0c;用于創建消費者對象進行數據消費1ConsumerConfig&#xff1a;獲取各種配置參數&#xff0c;如果不配置就使用默認值1ConsumerRecord&#xff1a;每條數據都要封…

Git操作問題及解決方案-記錄5

Git操作問題及解決方案 問題一&#xff1a;本地更改與遠程更新沖突 問題描述 當本地文件有未提交的更改&#xff0c;同時遠程倉庫也有更新時&#xff0c;執行git pull會導致沖突。 $ git pull origin main error: Your local changes to the following files would be overw…

一[3]、ubuntu18.04環境 利用 yolov8 訓練開源列車數據集,并實現列車軌道檢測

一、開源車載數據集地址 (7 封私信) 軌道交通數據集-OSDaR23: Open Sensor Data for Rail 2023 - 知乎 二、參考資料 https://zhuanlan.zhihu.com/p/692608487 YOLOv8訓練自己的數據集-CSDN博客 https://download.csdn.net/blog/column/12710137/140991739

C語言數據結構筆記5:Keil 編譯器優化行為_malloc指針內存分配問題

記錄倆個keil5 STM32 的c語言編程中 &#xff0c;編譯器優化行為 和 指針內存分配問題。 目錄 關閉Keil 編譯器優化行為&#xff1a; malloc指針內存分配問題 多層嵌套的結構體&#xff1a; 用指針取值&#xff1a; 發現問題&#xff1a; 解決問題&#xff1a; 示例代碼 關閉Ke…

每日八股文6.12

每日八股-6.12 計算機網絡1.當我們在瀏覽器中輸入一個 URL 并按下回車后&#xff0c;到頁面最終顯示出來&#xff0c;這中間都發生了哪些關鍵步驟&#xff1f;2.請簡述一下 JWT&#xff08;JSON Web Tokens&#xff09;的原理和校驗機制3.DNS 是如何進行域名解析的&#xff1f;…

什么是云計算的邊緣原生應用?

關于作者&#xff1a;John Bradshaw阿卡邁公司歐洲、中東和非洲地區云計算技術與戰略總監 當談及云計算時&#xff0c;人們往往會聯想到那些坐落于國際大都會核心地帶的大型數據中心集群&#xff0c;這些設施作為數字時代的重要樞紐&#xff0c;承載著海量數據處理任務。盡管這…

Linux常用命令速查與面試高頻命令總結

&#x1f427; Linux常用命令速查與面試高頻命令總結 本文旨在幫助初學者快速掌握 Linux 的常用命令&#xff0c;同時為即將參加技術面試的朋友們提供一份高頻命令清單和實用技巧。 &#x1f530; 一、基礎命令&#xff1a;熟練使用命令行從這里開始 這些是你在 Linux 中最常用…

基礎測試工具使用經驗

背景 vtune&#xff0c;perf, nsight system等基礎測試工具&#xff0c;都是用過的&#xff0c;但是沒有記錄&#xff0c;都逐漸忘了。所以寫這篇博客總結記錄一下&#xff0c;只要以后發現新的用法&#xff0c;就記得來編輯補充一下 perf 比較基礎的用法&#xff1a; 先改這…

淺談DaemonSet

1. DaemonSet 概述 ?定義?&#xff1a;DaemonSet 確保 Kubernetes 集群的每個節點上運行一個 Pod 實例。?特性?&#xff1a; 每個節點上只有一個 Pod 實例。新節點加入集群時&#xff0c;會自動在新節點上創建 Pod。舊節點被刪除時&#xff0c;其上的 Pod 會被回收。 2.…

計算機系統(6)

◆指令尋址方式&#xff1a; 順序尋址方式&#xff1a;執行一段程序時&#xff0c;是一條指令接著一條指令的順序執行。 跳躍尋址方式:下一條指令的地址碼不是由程序計數器給出&#xff0c;而是由本條指令直接給出。程序跳躍后&#xff0c;按新的指令地址開始順序執行。因此&…

基于服務器使用 apt 安裝、配置 Nginx

&#x1f9fe; 一、查看可安裝的 Nginx 版本 首先&#xff0c;你可以運行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core輸出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…

python打卡訓練營打卡記錄day51

復習日 作業&#xff1a;day43的時候我們安排大家對自己找的數據集用簡單cnn訓練&#xff0c;現在可以嘗試下借助這幾天的知識來實現精度的進一步提高 數據預處理 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transfor…

網絡安全:OWASP防護守則

目錄 一、OWASP十大WEB弱點防護守則 二、防護守則 1、權限控制失效 2、加密失誤 3、注入 4、不安全設計 5、安全配置缺陷 6、易受攻擊和過時的組件 7、身份認證和會話管理失效 8、缺乏完整性校驗 9、缺乏監控與日志記錄 10、服務端請求偽造 三、核心防護原則總結 …