链表分割-----------lg

现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。

我们可以假设x为36,则小于36都排在前边,>36排在后面。

则大致可以分为两个区域来存储数据:区域一存储小于36,区域二存储大于36.

同时,不能改变数据顺序,那这里就要用到尾插法。将数据逐个插进去。

这里我们可以看到,当所有数据插入后,中间部分是要连接起来的,我们不妨创建4个节点bs(表头),be(表尾),as(表头),ae(表尾),最后可以通过be和as将数据连接起来。

具体步骤:

1.创建4个节点,并都置为空,同时创建一个cur节点,作为链表的头。

 ListNode bs = null;ListNode be = null;ListNode as = null;ListNode ae = null;ListNode cur = pHead;

2.头节点不为空,从头节点开始,比较x与cur的值,若<x,若此时bs为空(第一次插入),则将bs和be均置为cur(头/末节点),让cur++,到达下一位置(0x89),  此时再次比较,23<36,1且 bs!=null,此时将尾节点置为第二个元素(0x89):

be.next = cur ;      be = be.next  ()

若>x:

第一次插入时,as,ae均为0,则将as与be置为cur(对接前边元素),同时cur++,

二次比较时,和上述类似:

ae.next = cur;  ae = ae.next;

while(cur !=null){if(cur.val<x){//第一次插入if(bs == null){bs = be = cur;}else{be.next = cur;be = be.next;}}else{if(as ==null){as = ae = cur;}else{ae.next = cur;ae= ae.next;}}cur = cur.next;}

3.结尾收工:bs或as两者之一有可能为空,哪个为空,就返回不为空的那个,两个清况都要写。

其次,在尾插区域二时,最后一个元素的地址可能为空,所以当as!=null时,我们要将ae.next置为空,防止越界。

if(bs == null){return as;}be.next = as;if(as!=null){ae.next = null;}return bs;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149326.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

html+css(交河故城css)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>故城</title><link rel"stylesheet&q…

css实现类似歌词字体渐变的效果

1、HTML <view class"title">哈哈哈哈哈</view> 2、CSS animation: hue 6s infinite linear;background-image: linear-gradient(135deg, #fc00c7 0%, #1c4efd 54%, #00aded 100%);-webkit-text-fill-color: transparent;color: transparent;-webkit-ba…

使用jQuery处理Ajax

使用jQuery处理Ajax HTTP协议 超文本传输协议&#xff08;HTTP&#xff0c;HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 所有的WWW文件都必须遵守这个标准 一次HTTP操作称为一个事务&am…

Pandas -----------------------基础知识(三)

dataframe添加列 删除行与列去重修改列自定义函数 加载数据 import pandas as pd# 加载数据集 ./data/b_LJdata.csv df pd.read_csv(./data/b_LJdata.csv).head(10) df dataframe添加列 在后面追加 df[城市] 北京 df df[区县] [朝阳区, 朝阳区, 西城区, 昌平区, 朝阳区,朝阳…

2024年中国研究生数学建模竞赛B题 (WLAN组网吞吐量机理建模+GBDT+LSTM 进阶建模文章)

2024年中国研究生数学建模竞赛B题 (WLAN组网吞吐量机理建模GBDTLSTM 进阶建模文章) 全文请从 底部名片 处获取哦~ 问题重述和分析 问题重述 本题旨在基于实际测量的WLAN&#xff08;无线局域网&#xff09;数据&#xff0c;建立一个精确的系统吞吐量预测模型。具体而言&…

计算机毕业设计 校园志愿者管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

示例说明:分布式系统实战经验

在分布式系统中&#xff0c;实战经验是非常宝贵的&#xff0c;因为它涉及到系统的高可用性、数据一致性、性能优化等多个方面。以下是一些具体的实战经验举例&#xff1a; 1. 高可用性设计 案例: 在电商系统中&#xff0c;订单服务需要保证高可用性。为了防止单点故障&#x…

kettle发邮件:使用Kettle实现自动化发信?

kettle发邮件配置教程&#xff1f;Kettle如何实现邮件发送功能&#xff1f; Kettle&#xff0c;作为一款强大的开源ETL工具&#xff0c;不仅在数据转换和加载方面表现出色&#xff0c;还能通过其内置的功能实现自动化发邮件。AokSend将详细探讨如何使用Kettle发邮件&#xff0…

【LLM多模态】文生视频综述From Sora What We Can See: A Survey of Text-to-Video Generation

note 现在很多主流的文生视频应该还是Diffusion-based 基于扩散模型的方法这篇综述将现有研究按照三个维度进行分类&#xff1a;进化生成器&#xff08;Evolutionary Generators&#xff09;、卓越追求&#xff08;Excellent Pursuit&#xff09;、现实全景&#xff08;Realis…

在IntelliJ IDEA中设置文件自动定位

当然&#xff0c;以下是一个整理成博客格式的内容&#xff0c;关于如何在IntelliJ IDEA中设置文件自动定位功能。 在IntelliJ IDEA中设置文件自动定位 背景 最近由于公司项目开发的需求&#xff0c;我从VSCode转到了IntelliJ IDEA。虽然IDEA提供了许多强大的功能&#xff0c;…

【机器学习】——支持向量机

文章目录 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;概述SVM 的工作原理线性不可分数据&#xff1a;软间隔与核技巧SVM 的数学形式SVM 的优势SVM 的缺点SVM 的应用 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;概述 支持向量机&#…

Linux基本命令总结(佛系更)

目录 前言 一、Linux的基本目录 目录&#xff1a; 前缀&#xff1a; 二、Linux基本命令 文件相关 1.pwd&#xff1a; 2.ls [option] [file]: 3.cd [xxx]: 4.mkdir [option] directory: 5.rmdir [option] directory: rm 6.touch file: 7.cp&#xff1a; 8.mv&…

0-1开发自己的obsidian plugin DAY 1

官网教程有点mismatch&#xff0c;而且从0-100跨度较大&#xff0c;&#x1f4dd;记录一下自己的踩坑过程 首先&#xff0c;官网给的example里只有main.ts&#xff0c;需要自己编译成main.js 在视频教程&#xff08;https://www.youtube.com/watch?v9lA-jaMNS0k&#xff09;里…

同一网络下两台电脑IP一样吗?探究局域网内的IP分配机制

在日常生活和工作中&#xff0c;我们经常会在同一网络环境下使用多台电脑。这时&#xff0c;一个常见的问题就会浮现&#xff1a;同一网络下两台电脑IP一样吗&#xff1f;这个问题看似简单&#xff0c;但实际上涉及到局域网内的IP分配机制。本文将深入探讨这一问题&#xff0c;…

付费电表系统的通用功能和应用过程参考模型(上)

Generic functions and application process reference model for the Payment Metering System 付费电表系统的通用功能和应用过程参考模型 1. 参考模型 Reference model 1.1 在参考模型中的符号的说明 Legend of symbols used in the reference model 功能框 (function bo…

c++9月23日

1.My_string 头文件 #ifndef MY_STRINGHEAD_H #define MY_STRINGHEAD_H#include <iostream> #include <cstring> using namespace std;class My_string { private:char *ptr;//指向字符数组的指针int size;//字符数组的最大容量int len ;//当前字符串的长度 publ…

IMX6UL开发板中断实验(三)

在上一节我们编写完成了中断驱动文件和中断驱动头文件&#xff0c;那么这一讲我们将继续中断实验 下面就是GPIO的中断设置&#xff0c;第一步要设置中断GPIO的触发方式&#xff0c;首先我们先看到寄存器&#xff0c;一共有GPIOx_ICR1和ICR2&#xff0c; 图如上&#xff0c;ICR1…

【采集软件】小红书评论高级爬取工具

用python开发了一个爬虫采集软件&#xff0c;叫【爬小红书搜索评论软件】&#xff0c;支持2种模式的评论采集&#xff1a; 1. 根据关键词采集评论&#xff0c;爬取思路&#xff1a;笔记关键词->笔记链接->评论 2. 根据笔记链接采集评论&#xff0c;爬取思路&#xff1a;…

每日一练:翻转二叉树

226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 一、题目要求 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff…

MATLAB Function模块用法案例

Simulink中的MATLAB Function模块是一个非常灵活的工具&#xff0c;允许用户直接在Simulink模型中嵌入MATLAB代码&#xff0c;以实现自定义的算法或功能 MATLAB Function模块的基本用法 添加模块&#xff1a; 在Simulink的模型窗口中&#xff0c;通过搜索“MATLAB Function”…