当前位置: 首页 > news >正文

手机网站建设套餐内容网站建设 数据库管理

手机网站建设套餐内容,网站建设 数据库管理,销售公司怎么做网站,互联网网站开发的未来方向目录 1.循环链表的定义 2.约瑟夫环问题 3.创建循环链表 4.删除节点操作 5.打印所有节点 6.实现约瑟夫环问题的完整程序代码 #x1f308;嗨#xff01;我是Filotimo__#x1f308;。很高兴与大家相识#xff0c;希望我的博客能对你有所帮助。 #x1f4a1;本文由Filotimo_… 目录 1.循环链表的定义 2.约瑟夫环问题 3.创建循环链表 4.删除节点操作 5.打印所有节点 6.实现约瑟夫环问题的完整程序代码 嗨我是Filotimo__。很高兴与大家相识希望我的博客能对你有所帮助。 本文由Filotimo__✍️原创首发于CSDN。 如需转载请事先与我联系以获得授权⚠️。 欢迎大家给我点赞、收藏⭐️并在留言区与我互动这些都是我前进的动力 我的格言森林草木都有自己认为对的角度。 1.循环链表的定义 循环链表与常规链表的区别在于其尾节点指向头节点形成一个环形结构。循环链表可以分为单向循环链表和双向循环链表两种类型。 单向循环链表的定义为每个节点包含一个数据元素和指向下一个节点的指针而最后一个节点的指针会指向第一个节点形成一个环形结构。 双向循环链表的定义为每个节点包含一个数据元素以及两个指针一个指向前一个节点一个指向后一个节点而第一个节点的前驱指针指向最后一个节点最后一个节点的后继指针指向第一个节点也形成了一个环形结构。 这种结构使得循环链表可以从任意节点开始遍历并且可以方便地在链表中插入或删除节点。它可以通过不断重复遍历整个链表来实现循环的效果。 2.约瑟夫环问题 约瑟夫环问题是一个经典的数学问题假设 n 个人站成一个环状从第一个人开始报数每次报到 m 的人出列再从下一个人开始重新报数直到所有人都出列。最后剩下的人的编号即为最后的获胜者。 解决约瑟夫环问题的步骤设定问题的输入为n个人和要出局的报数m 1. 将n个人编号为1到n。 2. 从第一个人开始报数报到m的人出局。 3. 从出局的人的下一个人开始重新报数继续报到m的人出局。 4. 重复第3步直到只剩下一个人为止。 3.创建单向循环链表 typedef struct node {int number;struct node* next; } person;// 初始化一个循环链表表示圆桌上的人 person* initlink(int n) {person* head (person*)malloc(sizeof(person));head-number 1;head-next NULL;person* cyclic head;// 创建 n-1 个节点并连接成循环链表for (int i 2; i n; i) {person* body (person*)malloc(sizeof(person));body-number i;body-next NULL;cyclic-next body;cyclic cyclic-next; }cyclic-next head;return head; } 定义一个名为person的结构体由整型变量number和指向下一节点的指针next构成。 函数initlink用于初始化一个循环链表表示圆桌上的人。函数首先创建一个头节点然后使用for循环创建其他的节点并连接成循环链表。最后返回头节点。 这段代码用于创建一个循环链表其中头节点的number字段表示第一个人在圆桌上的位置后续节点的number字段按顺序递增最后一个节点的next字段指向头节点形成一个循环链表结构。 4.约瑟夫环求解过程 // 找到第 k 个人并开始报数数到第 m 个人出列 void findandkillk(person* head, int k, int m) {person* tail head;while (tail-next ! head) {tail tail-next;}person* p head;while (p-number ! k) {tail p;p p-next;}// 从第 k 个人开始报数直到只剩下一个人while (p-next ! p) {for (int i 1; i m; i) {tail p;p p-next;}// 删除第 m 个人出列并释放内存tail-next p-next;printf(出列人的编号为: %d\n, p-number);person* temp p;p p-next;free(temp);}printf(出列人的编号为: %d\n, p-number);free(p); }从第k个人开始报数每次报到第m个人就将其出列。 先用循环找到链表中的尾节点即满足tail-next head的节点。 再用循环找到链表中编号为k的节点并在找到之前更新尾节点的位置。 再用循环进行报数和出列操作直到链表中只剩下最后一个人。循环中的内层循环每次进行m-1次迭代找到第m个人之前的节点并更新尾节点的位置。随后删除第m个人并释放其内存。外层循环在每次迭代之后更新当前节点的位置并继续进行报数和出列操作。 最后输出剩下的最后一个人的编号并释放其内存。 5.实现约瑟夫环问题的完整程序代码 #include stdio.h #include stdlib.htypedef struct node {int number;struct node* next; } person;// 初始化一个循环链表表示圆桌上的人 person* initlink(int n) {person* head (person*)malloc(sizeof(person));head-number 1;head-next NULL;person* cyclic head;// 创建 n-1 个节点并连接成循环链表for (int i 2; i n; i) {person* body (person*)malloc(sizeof(person));body-number i;body-next NULL;cyclic-next body;cyclic cyclic-next; }cyclic-next head;return head; }// 找到第 k 个人并开始报数数到第 m 个人出列 void findandkillk(person* head, int k, int m) {person* tail head;while (tail-next ! head) {tail tail-next;}person* p head;while (p-number ! k) {tail p;p p-next;}// 从第 k 个人开始报数直到只剩下一个人while (p-next ! p) {for (int i 1; i m; i) {tail p;p p-next;}// 删除第 m 个人出列并释放内存tail-next p-next;printf(出列人的编号为: %d\n, p-number);person* temp p;p p-next;free(temp);}printf(出列人的编号为: %d\n, p-number);free(p); }int main() {printf(输入圆桌上的人数 n: );int n;scanf(%d, n);person* head initlink(n);printf(从第 k 人开始报数 (k 1 且 k %d): , n);int k;scanf(%d, k);printf(数到第 m 个人出列);int m;scanf(%d, m);findandkillk(head, k, m);return 0; } 代码中的主要函数有initlink和findandkillk。 initlink函数根据输入的人数 n初始化一个循环链表。循环链表中的每个节点都存储一个人的编号编号从 1 到 n。该函数返回链表的头节点指针。 findandkillk函数用于解决约瑟夫环问题。它接收初始化好的循环链表的头节点指针起始编号 k 和报数间隔 m 作为参数。首先它找到从第 k 个人开始报数的位置并且记录该位置的上一个节点即tail。接着通过迭代法每次报数到第 m 个人时将其从链表中删除并释放相应的内存空间。直到链表中只剩一个节点时停止迭代并输出最后剩下的那个人的编号。 在main函数中用户输入要解决的约瑟夫环问题的相关参数然后调用findandkillk函数进行求解。 程序截图如下
http://wiki.neutronadmin.com/news/405802/

相关文章:

  • 河北做网站的网络营销方案的传播
  • 网站的提交重置按钮怎么做上海网站建设基础
  • 源码怎么做成网站网站建设验收合同模板
  • a 朝扬网络网站建设wordpress收用户邮件
  • 深圳附近做个商城网站找哪家公司好免费网页制作成品下载
  • 做网站域名不备案会怎么样网站模块设计软件
  • 网站制作从零开始WordPress文章不置顶
  • php mysql的网站开发开发人员公众号
  • 网易建站模板wordpress主题汉化版免费下载
  • 建立网站怎么做wordpress文件储存
  • 中兴建设 基金管理有限公司网站电信ip做的网站移动不能访问
  • 珠海网站制作网络推广网站开发二级域名
  • 简单的html网站模板下载网站建设项目执行进度表
  • 专业版装修用什么网站做导航条快递网站模板
  • 有没有专门做帽子的网站淘宝做seo要建网站吗
  • 孝昌县建设局网站wordpress上传ftp密码
  • 58同城保定网站建设门户网站和部门网站的区别
  • 手机网站开发步骤一级a做爰片免费观看 安全网站
  • 做集装箱的网站网站中文字内容左右切换的js代码
  • 网站修改flashfxp上传多久生效同城58招聘信息
  • 做外贸 英文网站佛山微网站推广
  • 自贡市规划建设局网站怎样把个人介绍放到百度
  • 网站的技术建设方案加盟网网站建设
  • 黑色网站设计漯河网络科技有限公司
  • 上线了做网站价格贵婚庆公司logo
  • 外贸网站wordpress加ssl内江规划建设教育网站
  • 东莞网站南宁在哪里推广网站
  • 平面设计接单的网站上海seo优化外包公司
  • 镇江个人网站制作全国知名网站建设
  • 企业网站建立要做的准备wordpress短代码调用文章标题