邵阳市网站建设,互联网营销师怎么做,企业内部网站打不开,jquery 网站框架新系列#xff01;#xff01;#xff01;
由于要写数据结构实验#xff0c;所以我需要重新梳理一下我前面写过的实验题#xff0c;顺便写一个综合性较强的博文#xff0c;针对实验报告中的“调试过程”内容进行复盘#xff0c;方便复习。 一、约瑟夫环 此题内容是对于…新系列
由于要写数据结构实验所以我需要重新梳理一下我前面写过的实验题顺便写一个综合性较强的博文针对实验报告中的“调试过程”内容进行复盘方便复习。 一、约瑟夫环 此题内容是对于循环链表的创建以及遍历从链表中删除结点然后再注意剩下最后一个结点的问题即可。 首先先简单做一个链表然后将最后一个结点的next指向头结点这样就创建好了头节点为空循环链表。 进入打印环节将给的p传入打印函数循环判断空头节点的next是否为空将每次循环p次循环到的元素输出并删除这个结点将其前面那个结点的next置为该结点的下一个元素第一次写这里的时候输出到最后会一直输出最后一个元素原因是循环检测的是head的next是否为空然而该链表里到最后也会剩下最后一个元素因为这个结点的next-next和该节点的next和它本身是相同一个结点所以会一直打印这个结点之后我们在下面做一个if会检测是不是只剩下这个结点了如果if成立就直接输出break即可没有人会为你一直停留在原地的。 二、重排链表 首先分析了一下输入内容可以采取数组依次储存的方法或者取数组下标作为地址两者我都尝试了一下发现前者会在最大输出的时候超时所以需要采用后者数组下标作为该元素地址然后结构体存下一个地址和val。 由于题目要求可以考虑将这个问题分为两部分即存入链表和重排链表。 存入链表先根据上面的内容存到线性表里然后进入到创建双向链表的函数设置双向是因为方便重排进行一下读取存入具体的操作就是进行循环从输入的起始地址开始直到找到下一个地址为-1的break循环。每次元素的下一个地址和val通过尾插法进入链表。这样就可以构成一个很棒的存有输入内容的链表。 下一步就是重排链表。这里我们用两个指针一个指针指向头节点一个指向最尾的结点之后根据题意头一个尾一个进行重构这里我新创建了一个链表来接收构建的内容在原链表上直接改觉得太麻烦。这里要注意的就是当两个指针碰到一块要怎么处理。这里我考虑了一下发现结点当为偶数时就不会正好碰上而是擦肩而过而奇数就能正好碰上希望大家的爱情也会像奇数的情形一样。这里可以做个结点数判断但是我选择的是发现重排后奇数位是后往前读偶数位是前往后读所以在构建链表中设置if检测这个点位是奇数还是偶数奇数就读取尾的指针指向的内容然后尾指针前移一下偶数同理。这样就组装好了重排的链表。 然后就是执行打印这里就将重排好的链表扔进打印的函数一个一个按照输出格式要求打印即可。打印时候会发现由于起初要进入数组我们输入的时候地址按照int型输入的打印也势必输出int型即缺少前面补位的0我们这里只需要在写一个函数例如当999address100就要补充两个0进行if补充即可。完成这一步大功告成。 希望不要白嫖↓↓↓