![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
散像
不止体力劳动能自动化,脑力劳动也能。
展开
-
双向循环链表简易创建、插入、删除、展示C语言
双向循环链表 众所周知,单向链表想要查找当前节点的上一个数据,必须得重新把链表遍历一遍,十分浪费资源;(这也是链表不如数组高效的一个方面,数组只需要知道下标即可一步到位) 而如果可以创建一种双向的链表,这种浪费就可以得到一定程度的缓解,且对于链表的操作灵活性也会提升。 在p节点前插入r的顺序(节点的个数是从1开始数的,不是0!!!所以是插入第n号节点后面,而p是n+1号节点): r->next=p; r->prior=p->prior; p->prior->next=r; p-原创 2021-03-18 17:50:01 · 465 阅读 · 0 评论 -
循环链表与魔术师发牌C语言
循环链表 魔术师的发牌问题 简介:一位魔术师掏出一叠扑克牌,魔术师取出其中13张黑桃,洗好后,把牌面朝下。说:“我不看牌,只数一数就能知道每张牌是什么?”魔术师口中念一,将第一张牌翻过来看正好是A;魔术师将黑桃A放到桌上,继续数手里的余牌,第二次数1,2,将第一张牌放到这叠牌的下面,将第二张牌翻开,正好是黑桃2,也把它放在桌子上。第三次数1,2,3,前面二张牌放到这叠牌的下面,取出第三张牌,正好是黑桃3,这样依次将13张牌翻出,全部都准确无误。 可以通过循环链表求出魔术师手中牌的原始排列顺序。 话不多说,上原创 2021-03-18 17:29:02 · 140 阅读 · 0 评论 -
循环链表与拉丁方阵C语言
循环链表 拉丁方阵 拉丁方阵(英语:Latin square)是一种 n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次。 如图: 拉丁方阵问题,可以用循环链表解决。每一行把链表遍历一次,然后指针再多走一步! 之后以指针所在位置为开头开始遍历下一行,以此类推。 话不多说,上代码! #include <stdio.h> #include <stdlib.h> typedef struct node { int d原创 2021-03-18 17:16:40 · 195 阅读 · 0 评论