王道c语言-链表分为两半,逆置后一半,与前一半轮流合并

王道c语言-链表分为两半,逆置后一半,与前一半轮流合并

设线性表 L = ( a 1 , a 2 , a 3 , ⋯ , a n − 2 , a n − 1 , a n ) L=(a_1,a2,a3,\cdots,a_{n-2},a_{n-1},a_{n}) L=(a1,a2,a3,,an2,an1,an) 采用带头结点的单链表保存,设计一个空间复杂度为 O ( 1 ) O(1) O(1)且时间上尽可能高效的算法,重新排列 L 中的各结点,
得到线性表 L ′ = ( a 1 , a n , a 2 , a n − 1 , a 3 , a n − 2 , ⋯ ) L'=(a_1,a_n,a_2,a_{n-1},a_3,a_{n-2},\cdots) L=(a1,an,a2,an1,a3,an2,)

#include <stdio.h>
#include <stdlib.h>#define END 33typedef int ElemType;typedef struct LNote {ElemType data;struct LNote *next;
} LNote, *LinkList;void list_tail_insert(LinkList &L) {ElemType x;L = (LinkList) malloc(sizeof(LNote));L->next = NULL;scanf("%d", &x);LinkList s, r = L;while (x != END) {s = (LinkList) malloc(sizeof(LNote));s->data = x;r->next = s;r = s;scanf("%d", &x);}r->next = NULL;
}void print_list(LinkList L) {L = L->next;while (L) {printf("%d   ", L->data);L = L->next;}printf("\n");
}//双指针法遍历链表,找到链表中的中间结点
void find_middle(LinkList L, LinkList &L2) {L2 = (LinkList) malloc(sizeof(LNote));LinkList ppre, pcur; //pcur走两步,ppre走一步ppre = pcur = L->next;while (pcur) {pcur = pcur->next;//pcur=pcur->next->next;这种写法错误,当pcur->next=NULL,出错if (pcur == NULL || pcur->next == NULL) {break;}pcur = pcur->next;ppre = ppre->next;}L2->next = ppre->next; //L2指向后一半链表L2ppre->next = NULL;  //前一半链表在中间结点结束,指向NULL
}//逆置L2
void reverse(LinkList &L) {LinkList r, s, t;r = L->next;if (r == NULL || r->next == NULL) { // L为空或只有一个结点,翻转失败return;}s = r->next;t = s->next;while (t) {s->next = r; //开始逆置r = s;s = t;t=t->next;}s->next = r;L->next->next=NULL;//原第一个结点的next为nullL->next=s;
}//将L与L2链表结点,轮流放入合并为新结点
void merge(LinkList L,LinkList L2){LinkList p,q,pcur;p=L->next; //始终指向L1待处理结点p=p->next;q=L2->next; //始终指向L2待处理结点pcur=L->next;//始终指向组合后链表的最后一个结点while (p&&q){ //原列表中至少有三个结点pcur->next=q;q=q->next;pcur=pcur->next;pcur->next=p;p=p->next;pcur=pcur->next;}if(p!=NULL){pcur->next=p;}if(q!=NULL){pcur->next=q;}
}
int main() {LinkList L;//链表头,是结构体指针类型LinkList L2 = NULL;//寻找中间结点,并返回第二条链表;加不加NULL都行LinkList search;//用来存储拿到的某一个节点list_tail_insert(L);printf("------L initialize is-------------------\n");print_list(L);find_middle(L, L2); //初试试卷只要写明下面三个子函数就行,main上面那几行可不写printf("------L1 L2 is-------------------\n");print_list(L);print_list(L2);reverse(L2);printf("------ L2 reverse is-------------------\n");print_list(L2);merge(L,L2);printf("------ L merge is-------------------\n");print_list(L);free(L2);return 0;
}

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

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

相关文章

【Unity】从0到1的横版2d制作笔记-DAY1

写在前面&#xff1a; 感谢旻子提供的Unity2d课程捏&#xff0c;红豆泥阿里嘎多 创建项目 测试Visual Studio的使用 右键选择【create】&#xff0c;右键创建C# Script&#xff0c;待文件创建完毕后双击查看能否正确跳转。 正确跳转的结果是能看见代码中注释标注有&#xff1a;…

mysql - 查询成本 - 优化器

查询成本 我们之前老说MySQL执行一个查询可以有不同的执行方案&#xff0c;它会选择其中成本最低&#xff0c;或者说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模糊的&#xff0c;其实在MySQL中一条查询语句的执行成本是由下边这两个方面组成的&…

低代码开发与数据可视化

随着数字化转型的深入发展&#xff0c;软件开发在各行各业中的重要性日益凸显。近年来&#xff0c;低代码开发与数据可视化技术的兴起&#xff0c;为软件开发带来了革命性的变革。本文将深入探讨低代码开发与数据可视化的概念、优势以及应用场景&#xff0c;旨在帮助读者更好地…

分布式搜索引擎elasticsearch专栏二

上一篇的传送门&#xff1a; 分布式搜索引擎elasticsearch专栏一-CSDN博客 这一篇博文主要讲解elasticsearch的数据搜索功能。下面会分别使用DSL和RestClient实现搜索。 1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsea…

[PwnThyBytes 2019]Baby_SQL

[PwnThyBytes 2019]Baby_SQL 查看源码发现 下载源码&#xff0c;首先观察index.php 首先进入index.php&#xff0c;会执行session_start();启动session这里通过foreach将所有的环境变量的值都遍历了一遍&#xff0c;并且都使用了addslashes()进行转义&#xff0c;然后就定义了…

cuda从入门到精通(六)共享内存和循环分块实现CUDA矩阵乘

本文系转载&#xff0c;出处&#xff1a;https://mp.weixin.qq.com/s/1w1WFPoUEvVECsurqmvJDw 在CUDA编程中&#xff0c;共享内存和循环分块&#xff08;loop tiling&#xff09;是两种常见的优化策略&#xff0c;它们可以帮助我们提高矩阵乘法的性能。 共享内存&#xff08;Sh…

GO语言:函数、方法、面向对象

本文分享函数的定义、特性、defer陷阱、异常处理、单元测试、基准测试等以及方法和接口相关内容 1 函数 函数的定义 func 函数名(参数列表) (返回值列表) { // 函数体&#xff08;实现函数功能的代码&#xff09; } 匿名函数的定义就是没有函数名&#xff0c;可以当做一个函…

使用华为云HECS服务器+nodejs开启web服务

简介: 在华为云HECS服务器上使用nodejs开启一个web服务。 目录 1.开通华为云服务器 2.远程登录 2.1 使用华为官方的网页工具登录 ​编辑 2.2 使用MobaXterm登录 3 安装node 3.1 下载 2. 配置环境变量 4. 安装express模块 5.开启外网访问 1.开通华为云服务器 这…

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试)

MySQL与金蝶云星空对接集成SELECT语句连通销售订单新增(销售订单集成测试) ​​ ​​ 数据源系统:MySQL MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQLAB公司开发&#xff0c;属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在WEB应用方…

ASPICE规范之系统追溯矩阵

系统追溯矩阵的需求来自 ISO26262 举例在描述系统追溯矩阵时&#xff1a;客户需求->系统需求&#xff1b;系统需求->客户需求&#xff1b;系统需求->软件需求&#xff1b;系统需求->硬件需求

【LabVIEW FPGA入门】使用FPGA实现串行同步接口(SSI)

SSI&#xff08;串行同步接口&#xff09;是连接绝对位置传感器和控制器的广泛应用的串行接口。SSI利用控制器发出一个时钟脉冲序列&#xff0c;初始化传感器的门限输出。 传感器不断更新位置数据&#xff0c;并传送到移位寄存器中。在每一个时钟脉冲序列之间&#xff…

条件随机场(CRF)笔记

Filed, Random Field, Conditional Random Field 场&#xff08;field&#xff09;是一个关于位置的函数。这个概念来自物理学&#xff0c;一个典例是引力场&#xff1a;一个有质量的物体 A 会对其它有质量的物体产生引力&#xff0c;可用一个函数来描述在各位置受到来自 A 的…

在Ubuntu20.04(原为cuda12.0, gcc9.几版本和g++9.几版本)下先安装cuda9.0后再配置gcc-5环境

因为自己对Linux相关操作不是很熟悉&#xff0c;所以因为之前的代码报错之后决定要安cuda9.0&#xff0c;于是先安装了cuda9.0。里面用到的一些链接&#xff0c;链接文件夹时直接去copy它的路径&#xff0c;就不那么容易错了。 今天运行程序之后发现gcc环境不太匹配cuda9.0&am…

Python 第三方库 | python-dotenv

1. 简介 在一些项目中&#xff0c;处于安全性的要求&#xff0c;一般不将密码&#xff0c;key等放入到配置文件中。然而这些代码又是上传在 git等平台上。为了方便管理。一般采用系统变量的方式来实现。从而实现配置和代码分开。 2. 安装 pip install python-dotenv 3. 使用…

FX-数组的使用

1一维数组 1.1一维数组的创建和初始化 1.1.1数组的创建 //代码1 int arr1[10]; char arr2[10]; float arr3[1]; double arr4[20]; //代码2 //用宏定义的方式 #define X 3 int arr5[X]; //代码3 //错误使用 int count 10; int arr6[count];//数组时候可以正常创建&#xff1…

【十三】【算法分析与设计】二分查找(1)

704. 二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4…

实时数仓的另一种构建方法starRocks的物化视图

一、 StarRocks是什么 StarRocks是一个分布式的、高性能的OLAP(联机分析处理)数据库,物化视图在StarRocks中具有重要作用。 二、 StarRocks物化视图能干啥 物化视图(Materialized Views)是数据库中的预先计算结果的存储。它们是由一个或多个基础表的聚合数据组成的,这…

win10笔记本在显示设置中不慎将主显示器禁用掉导致开机黑屏的解决方案

因为笔记本电脑的显示扩展接口有问题&#xff0c;所以在电脑开机之后&#xff0c;会误识别出几个不存在的扩展屏幕&#xff0c;所以我就想从显示设置中将这几个误识别出来的扩展屏幕禁用掉&#xff08;不然鼠标总是移动到主屏幕边界之外的地方&#xff09;&#xff0c;在显示设…

2024年腾讯云GPU服务器价格表_1小时费用_一个月价格和一年优惠

腾讯云GPU服务器怎么收费&#xff1f;GPU服务器1小时多少钱&#xff1f;一个月收费价格表和一年费用标准&#xff0c;腾讯云百科txybk.com分享腾讯云GPU服务器GPU计算型GN10Xp、GPU服务器GN7、GPU渲染型 GN7vw等GPU实例费用价格&#xff0c;以及NVIDIA Tesla T4 GPU卡和V100详细…

【SZU计算机网络实验】实现流式视频传输

前言 一百年没有更新博客了&#xff0c;都怪开学一堆杂活&#xff08;x 那就顺手把实验报告转到这边吧owo 本实验为SZU原创实验&#xff0c;实验开发团队的老师和助教们都很有耐心。。大赞&#xff0c;环境没配好去群里问是秒回的 相关资料&#xff1a; 实验文档&#xff…