有一个带头结点的单链表L={a1,b1,a2,b2,...,an,bn},设计一个算法将其拆分成两个带头结点的单链表A和B,正序链表A={a1,a2,a3...,an},逆序链表B={bn,bn-1,

【第四周】项目3-单链表应用 1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。 #ifndef LINKLIST_H_INCLUDED #define LINKLIST_H_INCLUDED #include #include #include"lin 阅读详情

有一个带头结点的单链表L={a1,b1,a2,b2,...,an,bn},设计一个算法将其拆分成两个带头结点的单链表A和B,正序链表A={a1,a2,a3...,an},逆序链表B={bn,bn-1,,...b1}.要求链表A使用链表L的头结点。


#include "stdio.h"
#include "stdlib.h"
//节点
typedef struct List {
    int data;         	//数据域
    struct List *next;  //指针域
} List;

//尾插法构建链表作为初始数据
void TailCreatList(List *L)
{
    List *s, *r;//s用来指向新生成的节点。r始终指向L的终端节点。  
    r = L;      //r指向了头节点,当前的头节点是终端节点。 
    for (int i = 0; i < 6; i++) {
        s = (struct List*) malloc(sizeof(struct List));//为新节点s申请空间
        scanf("%d",&(s->data));
        r->next = s; //尾指针指向s
        r = s;       //让s变成尾指针
    }
    r->next = NULL; //元素已经全部装入链表L中的终端节点指针域为NULL,L建立完成 
}

void split(List *&headL, List *&headA,List *&headB)
{
	int count = 1;     //count来标识奇偶数
     List  *p = headL; //p指向headL的头节点
     List  *temp;      //用temp来暂时保存偶数序号的节点
	 headB->next = NULL;
     while(p->next != NULL)
     {
		  //当count能被2整除的时候,代表处理的是bi
          if(count % 2 == 0)
          {	  
			 /*
			  //尾插法代码
			  q->next = p->next;
              q = q->next;
		      p->next = p->next->next;
              q->next = NULL;
			 */
			  //偶数节点移到headB中,并且使用头插法来满足逆序要求。

			  temp = p->next->next;
			  p->next->next = headB->next;
			  headB->next = p->next;
			  p->next = temp;

          } 
		  ////当count不能被2整除的时候,代表处理的是ai
		  else 
		  { //奇数节点留在HeadL中
              p = p->next;
          }
		  count++;
     }
	 headA = headL;
}

//打印单链表
void DisPlay(List *L) {
    List *p = L->next;
    while (p != NULL) {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}


int main() {
	//原始单链表
	List *origin = (struct List*) malloc(sizeof(struct List));
	//奇数单链表
	List *newHeadA = (List*) malloc(sizeof(List));
    //偶数单链表
	List *newHeadB = (List*) malloc(sizeof(List));
    TailCreatList(origin);
    DisPlay(origin);
    split(origin,newHeadA,newHeadB);
	DisPlay(newHeadB);

}


endnote让参考文献整整齐齐 这篇文章主要是针对利用 endnote 插入参考文献时,参考文献第一行和后面的行对不齐的问题 下面是示意图 可以看到我们的参考文献对的整整齐齐的,比较好看。 下面介绍具体步骤 1、打开endnote。编辑我们使用的参考文献样式。我这儿是叫 ZZ_MODIFIED_GEEBINF 复制 2、找到布局,每个参考开头,将光标放在在参考开头后面,点插入字段,制表符 3、右下角悬挂式输出哪儿选择全部段... 阅读详情

相关推荐

告别Visual Studio!用MSYS2+GCC+CMake在Windows上打造Linux式C++开发环境(保姆级避坑)

本文详细介绍了如何在Windows上使用MSYS2+GCC+CMake搭建Linux式C++开发环境,替代Visual Studio。从MSYS2的安装配置、MinGW-w64 GCC工具链的部署,到CMake项目的创建与构建,提供了保姆级教程和常见问题解决方案,帮助开发者高效过渡到命令行开发模式。

weixin_30298497的博客 324

设带头结点的单链表表示的线性表L=(a1,a2,a3,a4,……,an),试用复杂度为O(n)的算法,原地将L改造为L=(a1,a3, ……,a2,a4, ……)。

【问题描述】 设带头结点的单链表表示的线性表L=(a1,a2,a3,a4,……,an),试用复杂度为O(n)的算法,原地将L改造为L=(a1,a3, ……,a2,a4, ……)。 【输入形式】 第一行输入单链表元素个数n; 第二行输入n个整数。 【输出形式】 输出改造后的单链表。 【样例输入】 9 1 2 3 4 5 6 7 8 9 【样例输出】 1 3 5 7 9 2 4 6 8 【测试代码】 #include <stdio.h> #include <std..

qq_61484496的博客 1932

ros2 humble cartographer 2D激光雷达建图

Cartographer是一个支持多平台和传感器配置的SLAM的系统。 本文主要讲述在ros2 humble系统上cartographer的安装方法,以及如何配置参数实现自己的ros2 bag包的离线建图。

weixin_43087302的博客 6938

数据结构——带头结点的单链表

pragma once include include include

xiaoxiaoyu 2137

数学建模美赛O奖论文研读启示录——从模仿开始

数学建模美赛O奖论文哪些地方比较出彩?我们可以从中学到什么东西?可以从哪些地方进行模仿?我总结了一些O奖论文里我认为比较好的地方,跟大家一起学习交流!

小宇的修炼之路 5429

jmeter5.4.1 使用案例

jmeter主要用于接口压力测试,模拟海量请求并发访问接口 1.下载jmeter https://jmeter.apache.org/download_jmeter.cgi 2.启动jemter 双击即可 3.配置jmeter 1.先更改语言 2.创建线程组 配置线程执行规划 3.创建http请求默认值 4.创建http请求 5.创建http信息头管理器 指定 Content-Type:application/json 6.创建响应断言 7.创建察看结果数 直接点击 执行 按.

SpringHASh的博客 1221

单链表的应用实例

1、有一个带头结点的单链表L=(a1,b1,a2,b2,a3,b3…an,bn),设计一个算法将其拆分为两个带头结点的单链表L1和L2,其中L1=(a1,a2,a3,a4…an),L2=(bn,…b3,b2,b1),要求L1使用L的头节点。 解:利用原单链表L中的所有结点通过改变指针域重组成两个单链表L1和L2。由于L1中结点的相对顺序与L中的相同,所以采用尾插法建立单链表L1;由于L2中结点的相对顺序与L中的相反,所以采用头插法建立单链表L2。代码如下: void split(LinkNode * &am

monkey_wei的博客 1443

位置点位到达判断FC(Easy+Codesys+博途平台)

IN rActPositon REAL 轴当前实际位置 1IN arAbsPosition REAL[10] 各工作点位坐标 2IN rDeadZone REAL 位置达到判断域值 范围 3OUT abInAbsPos BOOL[10] 到达各绝对定位点位标志 位置到达输出 4VAR i INT 循环计数 5VAR rErr REAL 位置偏差 6。

RXXW_Dor的博客 535

已知带头结点的单链表L={a1,a2,...an},试编写一个算法,将L中的元素进行逆置,即L ={an,an-1,...a1}

已知带头结点的单链表L={a1,a2,...an},试编写一个算法,将L中的元素进行逆置,即L ={an,an-1,...a1}

liiuyizeliuyize的博客 1341

一文读懂 SAP BTP Application Router 的 Resource Files:从 xs-app.json 到本地开发的默认设置

本文详解SAP BTP中Application Router的资源文件配置与本地开发实践。核心包括:xs-app.json定义路由规则与安全策略,package.json声明依赖与启动脚本,resources/存放静态资源,default-services.json和local-destinations.json用于本地模拟云服务。文章通过真实案例展示如何配置静态资源直出、反向代理后端服务,并强调本地开发时的注意事项与常见问题解决路径。关键配置均提供示例代码,帮助开发者快速实现业务应用的部署与联调。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 176

60、新型共轴直升机建模与事件触发积分强化学习研究

本文研究了新型共轴直升机的动力学建模与控制方法,基于牛顿-欧拉方程建立了6自由度非线性模型,并设计了四通道闭环控制器实现稳定飞行。同时,提出一种事件触发积分强化学习方法,用于解决非零和博弈中的最优跟踪控制问题,在减少通信开销的同时保证系统性能。通过仿真验证了控制器的轨迹跟踪能力,并证明了算法下跟踪误差与神经网络权重估计误差的一致最终有界性。两种方法协同可提升飞行器的自主性与鲁棒性,未来可拓展至多智能体协作、智能交通等复杂系统应用。

rl6adventurer的博客 118

第1章第2节练习题15 拆分并逆序单链表

设C={a1,b1,a2,b2,...,an,bn}为线性表,采用带头结点的hc单链表存放,设计一个就地算法,将其拆分为两个线性表,使得A={a1,a2,a3,...an}, B={bn,...,b2,b1}

法海你懂不? 1775

SQL注入详解

SQL注入(SQL Injection)是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱库、被删除、甚至整个服务器权限陷)。 即:注入产生的原因是后台服务器接收相关参数未经过滤直接带入数据库查询...

渗透之路,攻防之间皆学问 26万+

数据结构每日一题day16(链表)★★★★★

题目描述:编写算法将一个带头结点的单链表 A={a1,b1,a2,b2.…an,bn}分解为两个带头结点的单链表 A和 B,使得A={a1,a2,……,an},B={bn,……如果 count 为奇数(aᵢ),将当前节点保留在 A 中,并更新 tailA。如果 count 为偶数(bᵢ),将当前节点头插法插入 B(实现逆序)。定义指针 p 遍历原链表 A,tailA 指向 A 的当前尾节点。遍历结束后,确保 A 的尾节点的 next 为 NULL。时间复杂度:O(n)空间复杂度:O(1)

weixin_52952158的博客 551

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

第1章第2节练习题16 归并并逆序单链表

假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。试编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来的两个单链表结点存放归并后的单链表

法海你懂不? 1884

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

1105. 链表合并(25分)

给定两个单链表 L1​=a1​→a2​→⋯→an−1​→an​ 和 L2​=b1​→b2​→⋯→bm−1​→bm​。如果 n≥2m,你的任务是将比较短的那个链表逆序,然后将之并入比较长的那个链表,得到一个形如 a1​→a2​→bm​→a3​→a4​→bm−1​⋯ 的结果。例如给定两个链表分别为 6→7 和 1→2→3→4→5,你应该输出 1→2→7→3→4→6→5。输入首先在第一行中给出两个链表 L1​ 和 L2​ 的头结点的地址,以及正整数 N (≤105),即给定的结点总数。一个结点的地址是一个 5 位

风间琉璃c 412

链表重构(两个经典例题)

题目 将链表{a1,b1,a2,b2,a3,b3…an,bn}转换为{a1,a2…an}、{bn,bn-1…b1}b为逆序(逆序使用头插法) 解题思路 #include <stdio.h> #include <stdlib.h> #include<stdbool.h> typedef int Elemtype; typedef struct LNode { Elemtype data; struct LNode *next; } LNode,*

weixin_46503238的博客 397

合并链表

【问题描述】 1、建立两个有序的单链表,表中元素的数据类型自己指定; 2、将建立的两个链表合并为一个新的有序的单链表; 3、输出显示已合并好的有序的单链表。 【输入形式】输入表1的元素个数,表1的元素值(逆序),同表1,输入表2的数据。【输出形式】输出合并后的元素值。【样例输入】 3 //表1元素个数 22 21 19 //表1的元素值(逆序) 4 ...

weixin_30532759的博客 153

数据结构和算法系列2 线性表之链表

上一篇我们总结完了顺序表,这一篇我们要总结的是线性表的链表,我想从以下几点进行总结。 1,为什么要使用链表? 2,链表的存储结构? 3,链表的常用操作代码实现? 1,为什么要使用链表 通过上一篇的学习,我们知道顺序表存在一些问题,主要有以下两个方面。 1,顺序表的长度是固定的,如果超出分配的长度就会造成溢出,如果存放的数据太少则会造成空间浪费。 2,在插入元素和删除元素...

weixin_33728268的博客 88

小白算法积累——单链表11#带头结点单链表 +分解+逆序

题目:设C={a1,b1,a2,b2,…an,bn}为线性表,采用带头结点的hc单链表存放, 设计一个就地算法,将其拆分为两个线性表, 使得A={a1,a2,…an},B={bn,bn-1,…b2,b1} 关键字:带头结点单链表 +分解+逆序 思路1 采用第10题的思路,借助访问序号小助手 思路2 不使用序号小助手 while循环中的代码改为将结点插入到表A中并将下一个结点插入到B中, 然后逐步循...

aprilzj123的博客 737

已知一个带头结点的单链表lc={a1,b1,...an,bn}共2n个元素,试设计一个算法将其拆分成二个带头结点的单向链表la 与lb,其中la={a1,a2..an},lb={b1,b2,..bn}

已知一个带头结点的单链表lc={a1,b1,...an,bn}共2n个元素,试设计一个算法将其拆分成二个带头结点的单向链表la 与lb,其中la={a1,a2..an},lb={b1,b2,..bn}

liiuyizeliuyize的博客 528

单链表第十一题

设计一个就地算法,将其拆分为两个线性表,使得A={a1,a2,..........,an},B={b1,b2,........,bn};11.设C={a1,b1,a2,b2,......an,bn}为线性表,采用带头节点的hc单链表存放,

loveajiao的博客 234

线性表相关读书笔记

在单链表中,假设每个节点的类型用LinkList表示,它应包括存储元素的数据域,这里用data表示,其类型用通用类型标识符ElemeType表示,还包括存储直接后继节点位置的指针域,这里用next表示。 LinkList类型的定义如下:typedef struct LNode //定义单链表节点类型 { ElemeType data; //数据域 struct LNod

vistadk的博客 630

在带头结点的有序单向链表L={a1,a2,...an}中,试设计一个算法,使得在单链表中插入一个元素后仍然有序。

在带头结点的有序单向链表L={a1,a2,...an}中,试设计一个算法,使得在单链表中插入一个元素后仍然有序。

liiuyizeliuyize的博客 353

单链表分离(头插法和尾插法的结合,理解指针变换)

强调,这两步不能颠倒,我们建立链表肯定会进行这两步操作是无疑的, 但是当我们覆盖一个指针的时候,要考虑这个指针里面是否存着我们需要的信息, 插入前,L2->next 里面存放的是第一个结点 的位置, 我们还要用到, 所以要先进行这一步, 然后再把新节点的位置给 头结点的尾指针.当判断bn 后面没有结点的时候, 我们就可以结束了, 刚才我们用 q 来存放 b 断开联系后的下一个结点 ,那当bn的尾指针是NULL的时候 , 我们就可以结束了, 意思就是不用连接了, 因为 bn 断开后, 没有后继节点了.

qq_57484399的博客 1117

数据结构作业

【代码】数据结构作业。

wayt123321的博客 346

单链表的基本操作

#include "stdio.h" #include "stdlib.h" typedef struct linknode { int data; struct linknode *next; }linklist; int create_linklistT(linklist *L,int a[],int n) { int i; linklist *r,*p; r=L; for(i=0;i<n;i++) { p=(linklist...

pandahong的博客 304
上一篇: 由先序遍历和中序遍历构造二叉树的二叉链表代码
下一篇: 我的苹果开发学习笔记
ilikeprograming
博客等级 码龄14年 46粉丝 18原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值