专栏首页C语言及其他语言「优质题解」出圈

「优质题解」出圈

这道题的地址,想尝试的小伙伴可以来试哦:

https://www.dotcpp.com/oj/problem1160.html

思路:

解题思路:(原:1047: C语言程序设计教程(第三版)课后习题10.5)在1047的 的基础上,把报数的数m改为自己输入,同时改为多组测试数据,并且输出带换行符;

思路一:(公式法)

思路二(循环链表法) 1:创建长度为n的循环链表(单链表的最后一个结点与首结点连接,不是头结点);

2:链表结点包括编号和next指针;

3:从首结点p开始报数(p=p->next),但是只报数到离开的结点的前一个结点,然后删除它后面的结点,更新报数的第一个结 点(p=p—>next);用指针q指向要删除的结点;

4:重复上述过程,直到链表中只有一个结点结束(即:p->next=p);

5:如下图假设有6个结点(6个人),报数数为3;

把头结点free了,因为删除过程中,头结点的next被删除的话,头结点next指向不安全地方,就不要用它了;

以上就是链表的实现过程,要挑战自己可以弄一个单链表实现的,再厉害一点可以顺序表,但顺序表不推荐,

1.顺序表删除要移动大量元素

2.报数到最后一个之后,返回第一个的实现过程复杂,需要用下标关系,很容易晕;

注意事项: 每个结点删除后都要free了,输出留下来的那个人之后也要把它的free了,输出带换行符; 参考代码:

本文分享自微信公众号 - 编程范(dotcpp),作者:Manchester

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【优秀题解】问题 1678: 算法2-18~2-19:双向循环链表

    第一步:(这一步千万不要倒过来 否则会出错)先把p->next元素(用x 元素代替),

    编程范 源代码公司
  • 【编程经验】关于链表、还有编译器

    关注我们 最近有小白来问VC6.0和其他编译器怎么下,小编回了一些,但是也是确实比较多......所以今天就不单单分享知识了,还要分享资源! ...

    编程范 源代码公司
  • 趣味web网页大集结

    身边学web和php的有些少啊.....【难受】 但是web网页确实能带来别样的欢乐.... 今天给大家带来几个有趣的网页 经典蓝屏界面 ? 现在你讨厌的蓝屏...

    编程范 源代码公司
  • 每天一道剑指offer-删除链表中重复的结点

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1...

    乔戈里
  • 数据结构 | 每日一练(48)

    1.设 Listhead 为一单链表的头指针,单链表的每个结点由一个整数域 DATA 和指针域 NEXT 组成,整数在单链表中是无序的。编一 PASCAL 过程...

    C语言入门到精通
  • 极客算法训练笔记(三),链表详细图解,别再逃避了朋友

    上一篇说的是数组,然后现在来说说链表。链表有个经典应用,就是实现LRU缓存淘汰算法,缓存的作用大家肯定都知道,常见的Redis缓存,CPU缓存,数据库缓存,浏览...

    阿甘的码路
  • 数据结构 | 每日一练(73)

    ——老子

    C语言入门到精通
  • C++链表的创建与操作

    我们知道,数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元,相同数组的位置和距离都是固定的,也就是说,任何一个数组元素的地址都可一个简单的...

    w4979的博客
  • HashMap为什么存在线程不安全呢?

    本文主要探讨下HashMap 在多线程环境下容易出现哪些问题,深层次理解其中的HashMap。

    田维常
  • 数据结构与算法 -线性表链式存储及其相关算法

    链表的具体存储用一组任意的存储单元来存放,链表中结点的逻辑次序和物理次序不一定相同,还必须存储指示其后继结点的地址信息。

    越陌度阡

扫码关注云+社区

领取腾讯云代金券