线性表应用:魔术师发牌与拉丁(Latin)方阵(循环链表)
题目描述: 有黑桃1到13,13张牌,成某种顺序,魔术师可以从1开始数 ,数1,背面朝上的13张牌第一张就是1,然后放到桌面上,然后从1开始数,把第一张放在所有牌下面,数到2,翻开,就是2,再放到桌子上,以此此类推 #include<stdio.h> #include<stdlib.h> #define LEN sizeof(LinkList) #define cardNum 13 typedef struct node { int data; struct node *next; }LinkList; LinkList *creatList() { LinkList *head = NULL; LinkList *s,*r; r = head; for(int i=1; i <= cardNum; i++) { s = (LinkList *)malloc(LEN); s->data = 0; if(head == NULL) { head = s; } else { r->next = s; } r = s; } r->next = head; return head; } void MagicCard(LinkList *head) { int i; int countNum = 2; LinkList *p; p = head; p->data = 1; while(1) { for(i=0; i < countNum; i++) //寻找作用 { p = p->next; if(p->data != 0) //那个地方已经有牌则从下一张开始 { p = p->next; i--; } } if(p->data == 0) { p->data = countNum; countNum++; if(countNum == 14) break; } } } int main(void) { int i; LinkList *p; p = creatList(); MagicCard(p); printf("魔术牌的顺序是:\n"); for(i=0; i < cardNum; i++) { printf("黑桃%d ",p->data); p = p->next; } return 0; } Latin 例如3阶的 1 2 3 2 3 1 3 1 2 自己实现: #include<stdio.h> #include<stdlib.h> #define LEN sizeof(LinkList) typedef struct node { int data; struct node *next; }LinkList; LinkList *CreatList(int num) //生成循环链表 { int i; LinkList *head = NULL; LinkList *p,*s; for(i = 1; i <= num; i++) { s = (LinkList *)malloc(LEN); s->data = i; if(head == NULL) { head = s; } else { p->next = s; } p = s; } p->next = head; return head; } int main(void) { LinkList *p; LinkList *s; int num; int i,j; printf("请输入想要创建的Latin维数:"); scanf("%d",&num); p = CreatList(num); printf(" %d维Latin:\n",num); for(i=0; i < num; i++) { for(j=0; j < num; j++) { printf("%3d",p->data); p = p->next; } p = p->next; printf("\n"); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端