头歌实践教学平台数据结构与算法:02线性表——反转链表(拓展)
针对数据结构02线性表——反转链表(拓展)在头歌平台练习过程中的完成代码,每题思路单独在每一关中解释。如有其他需求请留言.
第一关
已知一个带头结点的单链表L,将L反转并返回反转后的单链表。要求将L的结点空间进行反转,而不仅仅是修改每个结点的值。
对于反转链表的操作,作者习惯使用头插法来实现,主要步骤如下:
1.先把设置两个指针,一个指向头节点,另一个指向头节点的下一个节点。
2.将头节点的指针域设置成空,变成一个空链表。
3.另一个指针遍历链表,每个节点用在链表头插入的方法插入新的空链表。
void ReverseList(LinkList L) { /*--------------代码开始----------------*/LinkList c = L;LinkList p = L -> next;c -> next = NULL;while(p != NULL){LinkList q = p;p = p -> next;q ->next = c -> next;c -> next = q;}/*--------------代码结束----------------*/
}
第二关
已知一个带头结点的单链表L,每k个结点一组进行反转,返回反转后的单链表。 k是一个正整数,它的值小于或等于L的长度。如果L中结点总数不是k的整数倍,那么请将最后剩余的结点保持原有顺序。 要求将L的结点空间进行反转,而不仅仅是修改每个结点的值。
我们先思考对于一个长度位k的区间进行反转,对于整个链表逆置时,我们操作的区间相当于是对长度1-length的区间操作,所以我们对某个长度为k的区间操作时只需要改变区间的长度,原理一样,把区间第一个节点的前一个节点看成头节点,最后一个节点看作尾节点,用指针来记录即可。
和第一关的操作一样,先把该区间从链表上取下来,然后依次采用头插法,头节点即是我们每次递归传递的节点。
同时可以观察到,每个区间的第一个节点逆置之后相当于下一个连续区间的头节点,我们把那个节点标记下来,当我们完整对目前区间的操作后,用递归的思想往后递归。
递归的终止条件就是剩余节点数目小于k,注意判断的位置否则可能陷入死循环。
void ReverseKGroup(LinkList L,int k) { /*--------------代码开始----------------*/if(k == 1) return ;LinkList a = L;LinkList q = L -> next;LinkList p = L -> next;for(int i = 1 ; i < k ; i ++){if(p == NULL) return ;p = p -> next;if(p == NULL) return ;}LinkList c = a -> next;a -> next = p ->next;p -> next = NULL;while(q != NULL){LinkList t = q;q = q -> next;t -> next = a -> next;a -> next = t;}ReverseKGroup(c,k);return ;/*--------------代码结束----------------*/
}
头歌实践教学平台数据结构与算法:02线性表——反转链表(拓展)相关推荐
- 头歌实践教学平台数据结构与算法:02线性表
针对数据结构02线性表在头歌平台练习过程中的完成代码,关卡数目较多,每题思路单独在每一关中解释.如有其他需求请留言. 第一关 可以把问题转换为:遍历B中的元素,如果该元素不在A中,则把该元素插入到A中 ...
- 头歌实践教学平台数据结构与算法链式线性表——课上练
针对数据结构链式表在头歌平台练习过程中的完成代码,仅仅为作者一次通过(可能并未按照题目要求时间复杂度或空间复杂度),仍有较大优化空间,如有其他需求可留言. #include <stdio.h&g ...
- 头歌实践教学平台 MIPS CPU设计(HUST)
实验简介 本实训项目将帮助学生掌握 CPU 控制器设计的基本原理,能利用硬布线控制器的设计原理在 Logisim 平台中设计实现支持五条指令的 MIPS 单周期 CPU,该处理器能运行简单的内存冒泡排 ...
- 头歌实践教学平台上如何建项目且通过git上传
头歌实践教学平台上如何建项目且通过git上传 目标:在头歌上建立项目test,并通过git工具将文件上传至头歌中. (1) 首先在https://code.educoder.net/explore页面 ...
- 头歌实践教学平台-Linux网络实战(一)-DNS配置(Ubuntu系统)——保姆级教程
头歌实践教学平台-Linux网络实战(一)-DNS配置(Ubuntu系统) ***写在前面*** 知识补充 相关知识 实验环境准备 安装DNS服务器并开启服务 一.标题配置域名和IP的正解与反解zon ...
- 头歌实践教学平台答案(Java实训作业答案)
搜集整理了一份最新最全的头歌(EduCoder)Java实训作业答案,分享给大家.(EduCoder)是信息技术类实践教学平台.(EduCoder)涵盖了计算机.大数据.云计算.人工智能.软件工程.物 ...
- 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)
C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...
- 头歌实践教学平台——计算机数据表示实验(HUST)
当你看到到这篇文章的时候,想必你已经被计算机组成原理实验折磨的不成样子了,没错我也是,经过我这几天的努力终于将这些实验一一完成. 我将源码放在压缩包里了,大家只需要复制代码,放进头歌里,满分过! 点击 ...
- 头歌实践教学平台软件工程答案
目录 面向数据流的设计方法-2 第1关:将数据流图转换为模块结构图-认识StarUML中的相关元素 相关知识 闯关要求 第2关:将数据流图转换为模块结构图-画出主模块 闯关要求 第3关:将数据流图转换 ...
最新文章
- GT Transceiver中的重要时钟及其关系(4)CPLL的工作原理介绍
- UDT协议实现分析——bind、listen与accept
- 前端学习(1885)vue之电商管理系统电商系统之首页路由的重定向
- Linux 文件打乱顺序
- 腾讯云对象存储 python_GitHub - fushall1104/cos-python3-sdk: 腾讯云对象存储服务(cos)Python3.5版本SDK...
- 华为云发布“华为鲲鹏”培训认证体系,助力开发者“化鲲为鹏”
- Hive报错:Hive JDBC:Permission denied: user=anonymous, access=EXECUTE, inode=”/tmp”
- php 正则匹配 文件,php – 正则表达式匹配.htaccess中的一系列文件类型
- matlab实验是啥,实验一 MATLAB的实验环境及基本命令.ppt
- 禅道项目管理工具环境搭建
- UISearchBar 点击取消回到原来位置时会跳动的解决方法
- cutftp连接server-U中文乱码问题解决
- dll文件编辑器(Resource Hacker)下载
- 用C#做了个小工具,取名【微图寻码】,可以自动检测微信接收的图片,把含有二维码的图片挑出来,并分类好
- 天正对应cad版本_2014的天正适用于哪些版本的cad
- java地理位置的获取_Java 根据 IP 获取地理位置
- RabbitMQ极速入门
- Python:实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)
- Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记
- XMind2020介绍、下载
热门文章
- caffe+鉴黄︱yahoo+open_nsfw 中resnet_50_1by2、遇到问题
- 鸿蒙系统手机mate30lite,为鸿蒙铺路 华为Mate 30 Lite要用鸿蒙系统
- Mediacodec 华为P9 绿屏
- Gem5模拟器,如何在linux系统中查看内存、CPU、硬盘、进程、网络等信息(十二)
- 关于SQL常见的问题
- 这次是真的再见了,oi退役回忆录
- 阿里云(表格OCR)API调用流程
- 华为电脑Linux怎么恢复出厂设置,华为MateBook笔记本怎么恢复出厂设置还原系统?详细教程...
- H5方面(H5适配手机屏幕等)
- C语言十进制转16进制