复盘理解/实验报告梳理 数据结构PTA实验一

新系列!!!

由于要写数据结构实验,所以我需要重新梳理一下我前面写过的实验题,顺便写一个综合性较强的博文,针对实验报告中的“调试过程”内容进行复盘,方便复习。


一、约瑟夫环

        此题内容是对于循环链表的创建,以及遍历,从链表中删除结点,然后再注意剩下最后一个结点的问题即可。

        首先先简单做一个链表,然后将最后一个结点的next指向头结点,这样就创建好了头节点为空循环链表。

        进入打印环节,将给的p传入打印函数,循环判断空头节点的next是否为空,将每次循环p次循环到的元素输出,并删除这个结点(将其前面那个结点的next置为该结点的下一个元素),第一次写这里的时候,输出到最后会一直输出最后一个元素,原因是循环检测的是headnext是否为空,然而,该链表里到最后也会剩下最后一个元素,因为这个结点的next->next和该节点的next和它本身是相同一个结点,所以会一直打印这个结点,之后,我们在下面做一个if,会检测是不是只剩下这个结点了,如果if成立,就直接输出break即可(没有人会为你一直停留在原地的)


二、重排链表

        首先分析了一下输入内容,可以采取数组依次储存的方法,或者取数组下标作为地址,两者我都尝试了一下,发现前者会在最大输出的时候超时,所以需要采用后者,数组下标作为该元素地址,然后结构体存下一个地址和val。

        由于题目要求,可以考虑将这个问题分为两部分,即存入链表,和重排链表。

        存入链表先根据上面的内容,存到线性表里,然后进入到创建双向链表的函数,设置双向是因为方便重排,进行一下读取存入,具体的操作就是进行循环,从输入的起始地址开始,直到找到下一个地址为-1的,break循环。每次元素的下一个地址和val通过尾插法进入链表。这样,就可以构成一个很棒的存有输入内容的链表。

        下一步就是重排链表。这里我们用两个指针,一个指针指向头节点,一个指向最尾的结点,之后根据题意,头一个尾一个进行重构,这里我新创建了一个链表,来接收构建的内容,在原链表上直接改觉得太麻烦。这里要注意的就是当两个指针碰到一块要怎么处理。这里我考虑了一下,发现结点当为偶数时,就不会正好碰上,而是擦肩而过,而奇数就能正好碰上(希望大家的爱情也会像奇数的情形一样)。这里可以做个结点数判断,但是我选择的是:发现重排后,奇数位是后往前读,偶数位是前往后读,所以在构建链表中设置if,检测这个点位是奇数还是偶数,奇数就读取尾的指针指向的内容,然后尾指针前移一下,偶数同理。这样就组装好了重排的链表。

        然后就是执行打印,这里就将重排好的链表扔进打印的函数,一个一个按照输出格式要求打印即可。打印时候会发现,由于起初要进入数组,我们输入的时候地址按照int型输入的,打印也势必输出int型,即缺少前面补位的0,我们这里只需要在写一个函数,例如当999=>address>=100,就要补充两个0,进行if,补充即可。完成这一步,大功告成。


 

希望不要白嫖↓↓↓


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

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

相关文章

方差分析实例

目录 方差分析步骤 相关概念 基本思想 随机误差 系统误差 组内方差 组间方差 方差的比较 方差分析的前提 1.每个总体都应服从正态分布 2.各个总体的方差必须相同 3.观察值是独立的 原假设成立 备择假设成立 单因素方差分析 提出假设 检验的统计量 水平的均值…

基于JSP+Servlet+Mysql的建设工程监管信息

基于JSPServletMysql的建设工程监管信息 一、系统介绍二、功能展示1.企业信息列表2.录入项目信息3.项目信息列表 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目名称:基于JSPServlet的建设工程监管信息 项目架构:B/S架构 开发语言:…

最大距离。

题目描述 在数列a,a2,,an中,定义两个元素ai和a;的距离为i-jai-a,即元素下标的距离加上元素值的差的绝对值,其中表示e的绝对值 给定一个数列,请问找出元素之间最大的元素距离输入描述 输入的第一行包含一个整数n。 第二行包含n个整…

2312llvm,读写位码

如何读写LLVM位码 首先,看看一些高级LLVM术语: 1,LLVM对用户代码的主要抽象是模块.它是一个包含用户编写的所有函数,全局变量和指令的类. 2,Bitcode文件是LLVM模块的序化,以便以后可在不同程序中重建它. 3,LLVM使用MemoryBuffer对象来处理文件,stdin或数组等数据. 示例中,使用…

漏刻有时数据可视化Echarts组件开发(44)提示框组件与返回多边形

CSS样式表 #lock_box {padding: 0;margin: 0;height: 100%;width: 100%;}.tipsBox {background: transparent url("images/tipsbg.png") top center no-repeat;width: 260px;height: 203px;box-shadow: none;}.tipsBox > p:first-child {padding-left: 35px;font…

git的安装及使用

git的安装及使用 git的安装 官网地址:https://git-scm.com/download/win 在任何位置输入bash或sh,进入git 设置用户名邮箱。 git config --global user.name “wfyfly” git config --global user.email 2423217861qq.com 查看配置信息 git config --list --globa…

C++核心编程思路(1):①程序的内存模型②引用的作用

文章目录 前言一、不同的存储类型变量,会被存储在什么区?①const修饰的局部变量放在栈区,全局变量放在只读数据区。②static修饰的全局和局部变量都放在静态区(即数据区中的一个小区) 二、栈区1.如果在函数A中定义了一…

基于SpringBoot和微信小程序的农场信息管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot和微信小程序的农场信息管…

2019年AMC8数学竞赛真题的典型考点和详细解析

从战争中学习战争。 对于2024年1月19日的AMC8竞赛,最后一个月的时间如何备考和冲刺取得更好的成绩?很多高分考生的经验是刷真题,查漏补缺。那么如何提高刷真题的效率呢?使用六分成长独家制作的在线真题集练习是个不错的方式&…

基于linux系统的Tomcat+Mysql+Jdk环境搭建(四)linux安装Mysql

1.切换到你需要安装mysql的路径 cd /root/usr/ 2.在线安装 安装网上的安装方式都有很多,可以自己百度一下 我们这里是自己搭建测试环境,可以直接选择在线安装,命令如下:yum install mysql-server, 但是我失败了 ┭┮…

【C++11特性篇】C++11中新增的initializer_list——初始化的小利器(2)

前言 大家好吖,欢迎来到 YY 滴C11系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.探究std::initializer_list是什么…

【MySQL】SQL通用语法 、介绍SQL分类

SQL通用语法 1.SQL语句可以单行或多行书写,以分号结尾 2.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。 3.注释: 单行注释: -- 或 # 多行注释: /* */ SQL分类 SQL分类主要分为4类 分别是 DDL DML DQL DCL

谷歌浏览器标签页显示内存使用率

Chrome 桌面浏览器的新更新现在可让您查看每个标签页占用了多少内存,这可以帮助您确定哪些标签页占用了多少内存,网站正在减慢您笔记本电脑的速度。 今年早些时候在 Google Chrome 中引入内存节省程序之后,Google 又发布了一项功能&#xff…

论文阅读:PointCLIP V2: Prompting CLIP and GPT for Powerful3D Open-world Learning

https://arxiv.org/abs/2211.11682 0 Abstract 大规模的预训练模型在视觉和语言任务的开放世界中都表现出了良好的表现。然而,它们在三维点云上的传输能力仍然有限,仅局限于分类任务。在本文中,我们首先协作CLIP和GPT成为一个统一的3D开放世…

科大讯飞(深圳)测开面试真题

一面(测试组长面) 1、上家公司项目以及团队的规模是怎么样的? 2、你负责的项目整体的流程是怎么样的? 3、自动化实施过程中,是如何和业务测试进行沟通的? 4、在上家公司你已经是专职做自动化了&#xf…

医药行业的数据安全革新者:上海迅软DSE成功案例揭秘

随着网络化办公在医药企业中不断的深入应用,企业内部的药品保密配方、研发成果、技术资料等重要信息都散布在电脑或流转于网络之中,同时各种内部系统又集中存放着大量的敏感数据,一旦这些数据资产发生泄密,将对企业的持续运营造成…

基础IO --- 下

目录 1. 理解文件系统中inode的概念 1.1. 了解磁盘 1.1.1. 认识磁盘 1.1.2. 磁盘的物理结构 1.1.3. 简单了解磁盘如何读写数据的 1.1.4. 磁头和盘面没有物理上的接触 1.1.5. 扇区的了解 1.1.6. 如何在物理上找到一个具体的扇区 1.2. 站在OS的角度看待磁盘 1.2.1. …

uniapp websocket 消息队列 例子

UniApp的localStorage可以用来存储和读取数据,但它本身并不是一个消息队列。消息队列是一种用于在应用程序之间传递消息的技术,它具有特定的特性,如消息的持久化、消息的顺序性、消息的消费等。 如果你想在UniApp中实现类似消息队列的功能&a…

springboot中的一些重要的注解

RestController和Controller的区别 返回值不同: RestController注解用于RESTful风格的控制器,它的方法默认返回JSON或XML格式的数据,不会进行视图渲染。通常用于构建Web服务API。Controller注解用于传统的MVC控制器,它的方法通常…

OSG中几何体的绘制(一)

本章主要介绍一些几何体的绘制方法。绘制几何体在场景中是非常常见的,也是最基本的。在很多应用程序中可以看到相当复杂的场景,但不管场景有多复杂,它们都是由少数几个基本的图形元素构建而成的。只要想想达芬奇那些伟大的作品也是由铅笔和画…