针对数据结构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线性表——反转链表(拓展)相关推荐

  1. 头歌实践教学平台数据结构与算法:02线性表

    针对数据结构02线性表在头歌平台练习过程中的完成代码,关卡数目较多,每题思路单独在每一关中解释.如有其他需求请留言. 第一关 可以把问题转换为:遍历B中的元素,如果该元素不在A中,则把该元素插入到A中 ...

  2. 头歌实践教学平台数据结构与算法链式线性表——课上练

    针对数据结构链式表在头歌平台练习过程中的完成代码,仅仅为作者一次通过(可能并未按照题目要求时间复杂度或空间复杂度),仍有较大优化空间,如有其他需求可留言. #include <stdio.h&g ...

  3. 头歌实践教学平台 MIPS CPU设计(HUST)

    实验简介 本实训项目将帮助学生掌握 CPU 控制器设计的基本原理,能利用硬布线控制器的设计原理在 Logisim 平台中设计实现支持五条指令的 MIPS 单周期 CPU,该处理器能运行简单的内存冒泡排 ...

  4. 头歌实践教学平台上如何建项目且通过git上传

    头歌实践教学平台上如何建项目且通过git上传 目标:在头歌上建立项目test,并通过git工具将文件上传至头歌中. (1) 首先在https://code.educoder.net/explore页面 ...

  5. 头歌实践教学平台-Linux网络实战(一)-DNS配置(Ubuntu系统)——保姆级教程

    头歌实践教学平台-Linux网络实战(一)-DNS配置(Ubuntu系统) ***写在前面*** 知识补充 相关知识 实验环境准备 安装DNS服务器并开启服务 一.标题配置域名和IP的正解与反解zon ...

  6. 头歌实践教学平台答案(Java实训作业答案)

    搜集整理了一份最新最全的头歌(EduCoder)Java实训作业答案,分享给大家.(EduCoder)是信息技术类实践教学平台.(EduCoder)涵盖了计算机.大数据.云计算.人工智能.软件工程.物 ...

  7. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  8. 头歌实践教学平台——计算机数据表示实验(HUST)

    当你看到到这篇文章的时候,想必你已经被计算机组成原理实验折磨的不成样子了,没错我也是,经过我这几天的努力终于将这些实验一一完成. 我将源码放在压缩包里了,大家只需要复制代码,放进头歌里,满分过! 点击 ...

  9. 头歌实践教学平台软件工程答案

    目录 面向数据流的设计方法-2 第1关:将数据流图转换为模块结构图-认识StarUML中的相关元素 相关知识 闯关要求 第2关:将数据流图转换为模块结构图-画出主模块 闯关要求 第3关:将数据流图转换 ...

最新文章

  1. GT Transceiver中的重要时钟及其关系(4)CPLL的工作原理介绍
  2. UDT协议实现分析——bind、listen与accept
  3. 前端学习(1885)vue之电商管理系统电商系统之首页路由的重定向
  4. Linux 文件打乱顺序
  5. 腾讯云对象存储 python_GitHub - fushall1104/cos-python3-sdk: 腾讯云对象存储服务(cos)Python3.5版本SDK...
  6. 华为云发布“华为鲲鹏”培训认证体系,助力开发者“化鲲为鹏”
  7. Hive报错:Hive JDBC:Permission denied: user=anonymous, access=EXECUTE, inode=”/tmp”
  8. php 正则匹配 文件,php – 正则表达式匹配.htaccess中的一系列文件类型
  9. matlab实验是啥,实验一 MATLAB的实验环境及基本命令.ppt
  10. 禅道项目管理工具环境搭建
  11. UISearchBar 点击取消回到原来位置时会跳动的解决方法
  12. cutftp连接server-U中文乱码问题解决
  13. dll文件编辑器(Resource Hacker)下载
  14. 用C#做了个小工具,取名【微图寻码】,可以自动检测微信接收的图片,把含有二维码的图片挑出来,并分类好
  15. 天正对应cad版本_2014的天正适用于哪些版本的cad
  16. java地理位置的获取_Java 根据 IP 获取地理位置
  17. RabbitMQ极速入门
  18. Python:实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)
  19. Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记
  20. XMind2020介绍、下载

热门文章

  1. caffe+鉴黄︱yahoo+open_nsfw 中resnet_50_1by2、遇到问题
  2. 鸿蒙系统手机mate30lite,为鸿蒙铺路 华为Mate 30 Lite要用鸿蒙系统
  3. Mediacodec 华为P9 绿屏
  4. Gem5模拟器,如何在linux系统中查看内存、CPU、硬盘、进程、网络等信息(十二)
  5. 关于SQL常见的问题
  6. 这次是真的再见了,oi退役回忆录
  7. 阿里云(表格OCR)API调用流程
  8. 华为电脑Linux怎么恢复出厂设置,华为MateBook笔记本怎么恢复出厂设置还原系统?详细教程...
  9. H5方面(H5适配手机屏幕等)
  10. C语言十进制转16进制