![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C算法
小小子xhh
这个作者很懒,什么都没留下…
展开
-
C语言实现判断单链表中是否有环
C语言实现判断单链表中是否有环判断单链表中是否存在环的两种思路计算步数思路:定义两个指针p,q,都指向头结点,p一直后移,q每次后移到和p相同的结点,判断p是否等于q,不等于则p继续后移,q重新头结点开始计数,循环中,分别用两个变量记录循环的次数,当p==q,而两个步数变量却不相等时,说明p指针已经经过回环一次,说明链表中存在环。快慢指针确定环入口思路:第一步找出两个指针的相遇点,第二步让快指针从相遇点开始走,让慢指针从链表的最开始走,快慢指针每次各走一步,当两个指针相遇了,即是入口点原创 2020-06-14 22:45:03 · 2125 阅读 · 1 评论 -
C语言写单向链表解决约瑟夫问题
C语言写单向链表解决约瑟夫问题约瑟夫问题简介:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死原创 2020-06-14 10:28:52 · 852 阅读 · 0 评论 -
快慢指针查看单链表的中间值
快慢指针查看单链表的中间值单链表的实现:https://blog.csdn.net/weixin_43290957/article/details/106465659普通方法:首先遍历一遍获取总长度L,然后再次遍历循环至L/2即可;时间复杂度为:O(L+L/2)=O(3/2L)快速方法:快慢指针法,设置2个指针faster,mid都指向单链表的头节点,其中faster移动的速度为mid的2倍,当faster移动到末尾,mid即在中间位置了,以下是简单实现:/** * @description:原创 2020-06-03 23:54:43 · 326 阅读 · 0 评论