C语言笔试题之重排链表

重排链表

实例要求

  • 1、给定一个单链表 L 的头节点 head ,单链表 L 表示为:
L0 → L1 → … → Ln - 1 → Ln
  • 2、请将其重新排列后变为:
L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
  • 3、不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换;
  • 示例:
    在这里插入图片描述

实例分析

  • 1、找到链表的中间节点,可以使用快慢指针法
  • 2、将链表分为两部分,前半部分和后半部分。
  • 3、将后半部分反转。
  • 4、将两个部分交替合并

示例代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
void reorderList(struct ListNode* head) {if (head == NULL || head->next == NULL || head->next->next == NULL) return;// 快慢指针找中间节点struct ListNode *slow = head;struct ListNode *fast = head;while (fast->next != NULL && fast->next->next != NULL) {slow = slow->next;fast = fast->next->next;}// 将链表分为两部分struct ListNode *secondHalf = slow->next;slow->next = NULL;// 反转后半部分链表struct ListNode *prev = NULL;struct ListNode *curr = secondHalf;struct ListNode *nextNode;while (curr != NULL) {nextNode = curr->next;curr->next = prev;prev = curr;curr = nextNode;}secondHalf = prev;// 合并两个部分struct ListNode *firstHalf = head;while (secondHalf != NULL) {struct ListNode *nextFirst = firstHalf->next;struct ListNode *nextSecond = secondHalf->next;firstHalf->next = secondHalf;secondHalf->next = nextFirst;firstHalf = nextFirst;secondHalf = nextSecond;}
}

运行结果

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

http协商缓存和强缓存

强缓存 强缓存则不需要向服务器发送请求,而是从浏览器读取缓存内容(内存缓存|硬盘缓存) 内存缓存:存储在浏览器内存中,一般刷新浏览器会从内存缓存中获取到缓存内容,优点速度快,缺…

C# 异步编程模型(APM)的深入理解

在现代软件开发中,异步编程已经成为了一种不可或缺的技能。特别是在需要处理I/O密集型任务或长时间运行的操作时,异步编程能够显著提高应用程序的性能和用户体验。C# 作为一种流行的编程语言,提供了多种异步编程模型,其中最经典的…

2024新版大学计算机基础教程47集全(组成原理+网络+操作系统)

不上学不上班,走,去上香! 不抽烟不喝酒,走,去抽奖! 不买基金不买股票,走,去买彩票! 知乎上我一路乞讨,大街上我狂翻垃圾! 后现代暴富主义&#xf…

ORACLE 中varchar2类型的日期数字,例如20230814,转为2023-08-14

ORACLE 中varchar2类型的日期数字,例如20230814,转为2023-08-14 引言场景一:简单格式转换场景二:更新字段为日期类型场景三:在WHERE子句中处理varchar日期场景四:联合其他日期操作总结 引言 在Oracle数据库…

Linux下基本指令-掌握

目录 为什么要学命令行 Linux下基本指令-掌握 ls 指令 pwd命令 cd 指令 touch指令 mkdir指令(重要): rmdir指令 && rm 指令(重要): man指令(重要): cp指…

网盘——进入文件夹

本文主要讲解网盘的文件操作中进入文件夹的部分,具体实现步骤如下: 1、具体步骤如下: A、客户端发送进入文件夹的请求(该请求包含目录信息以及要进入的文件夹名字) B、服务器收到该请求之后,服务器首先判…

STL-string类的使用及其模拟实现

string类的使用 string 类是 C 标准库提供的用于处理字符串的类,它相比 C 语言中的字符串处理函数更为高级、灵活和安全。 string 类提供了丰富的成员函数和操作符,用于处理字符串的拼接、查找、替换、截取、插入等操作。string 类自动处理字符串的内存分…

Linux:强制用户访问加密(强制让用户使用https访问)

Linux:强制用户访问加密(强制让用户使用https访问) [rootserver100 ~]# vim /etc/nginx/conf.d/vhosts.conf# 修改扩展配置文件如下#下面是对访问http进行重写,自动导向到https server{listen 80;server_name login.timinglee.o…

Leetcode哈希表刷题(一)

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入&#xff…

MySQL双层游标嵌套循环方法

文章目录 1、需求描述2、思路3、创建存储过程 1、需求描述 1、在项目中,需要将A表中主键id,逐个取出,作为条件,在B表中去逐一查询,将B表查询到的结果集(A表B表关系:一对多)&#xf…

在CentOS7中wget命令显示not found怎么解决

实验需要,在本机上安装了一个CentOS7虚拟机,运行wget命令时显示not found。按照网上的教程,使用命令sudo yum install wget,依然失败。 怎么回事呢?会不会是网络的原因呢?想到这,ping了一下www…

达梦(DM) SQL日期操作及分析函数

达梦DM SQL日期操作及分析函数 日期操作SYSDATEEXTRACT判断一年是否为闰年周的计算确定某月内第一个和最后一个周末某天的日期确定指定年份季度的开始日期和结束日期补充范围内丢失的值按照给定的时间单位查找使用日期的特殊部分比较记录 范围处理分析函数定位连续值的范围查找…

DNA序列k-mers哈希映射和相似序列查找

对DNA序列的k-mer进行哈希映射和相似序列查找是生物信息学中常见的任务之一。使用哈希函数对DNA序列的k-mer进行映射,并使用哈希表进行相似序列的查找。这种方法可以加速相似序列的搜索,并在处理大规模DNA序列数据时具有较好的性能。 哈希函数是一种将输…

C++系列-输入输出

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” C输入和输出 我们都知道C语言的输出是用printf函数来实现的&#xff0c;那么C呢&#xff0c;它的实现逻辑是什么呢&#xff0c;让我们一起来看一下&#xff0c; #include<i…

docker入门级命令

基本概念 docker的连个基本概念&#xff1a;镜像、容器。 docker镜像可以理解为是存储docker安装包的地方&#xff0c;比如&#xff1a;mcr.microsoft.com/mssql/server:2017-latest是sqlserver的docker镜像。 可以通过docker pull命令拉取远程镜像到本地。比如&#xff1a;…

K8S 调试运行中报错的 Pod

开始调试有问题的 Pod 准备环境 创建一个例子用于测试&#xff1a; apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deploymentnamespace: apps spec:selector:matchLabels:app: nginxreplicas: 2template:metadata:labels:app: nginxspec:containers:- name: …

Linux系统安全及应用(1)

目录 一.账号安全控制 系统账号清理 二.密码安全控制 密码安全控制 三.命令历史限制 命令历史限制 四.限制su切换用户 1&#xff09;将信任的用户加入到wheel组中 2&#xff09;修改su的PAM认证配置文件 ​编辑五.PAM认证的构成 六.使用sudo机制提升权限…

android 上传视频

1.在页面按钮或图标控件中添加点击事件&#xff0c;并调用选择文件动作 //点击图片选择视频按钮事件public void uploadvideo(View view){Intent intent new Intent(Intent.ACTION_GET_CONTENT); // 选择文件动作intent.setType("video/*"); …

python数据分析与可视化

Python数据分析与可视化是数据科学领域的重要技能&#xff0c;它涉及到使用Python语言及其丰富的库来分析数据、提取信息、并将其转换为易于理解的图表和图形。以下是Python数据分析与可视化的一些关键点&#xff1a; ### 1. 数据分析库 - **Pandas**&#xff1a;用于数据处理…

IDEA离线安装插件

1、下载地址 https://plugins.jetbrains.com/idea 如果去其他编辑器&#xff0c;点击下拉&#xff0c;选择即可。 2.搜索 在输入框输入关键词&#xff0c;按照提示选择即可&#xff0c;点击搜索按钮&#xff0c;查看结果。 3、选择版本 按照自己的版本选择合适的版本 4、安…