博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
魔术师发牌问题(循环链表的应用)【代码】
阅读量:5207 次
发布时间:2019-06-14

本文共 1136 字,大约阅读时间需要 3 分钟。

问题描述:

魔术师手里一共有13张牌,全是黑桃,1~13.
魔术师需要实现一个魔术:这是十三张牌全部放在桌面上(正面向下),
第一次摸出第一张,是1,翻过来放在桌面上。
第二次摸出从上往下数第二张,是2,翻过来 放在桌面上,(第一张放在最下面去,等会儿再摸),
第三次摸出从上往下数第三张,是3,翻过来放在桌面上,(第一张和第二张 放在最下面去,等会儿再摸)
以此类推 最后一张就是13

#include 
#include
using namespace std;typedef struct Node{ int num;//牌号 struct Node *next;}Node;Node *Create(int n){ Node *p,*q,*h=NULL; int i; for(i=1;i<=n;i++) { p=(Node*)malloc(sizeof(Node)); p->num=0;//初始化为零 if(h==NULL) h=p; else q->next=p; q=p;p->next=NULL; } p->next=h; h=p; return(h);//h为循环链表尾指针}int Display(Node * h){ Node * p=h->next; int i; i=(h->next==h)?0:1;//判断是否循环链表中只有一个元素 cout<
num<
next; while(p!=h) { cout<
num<
next; } if(i) cout<
num<
next; while(p->num)//已填入元素,可以当成已从链表中删去 { p=p->next; } } q=p->next; while(q->num)//已填入元素,可以当成已从链表中删去 { q=q->next; } q->num=i; p=q; } return 0;}int main(){ Node *H; H=Create(13); Magician(H,13); Display(H); return 0;}

  

转载于:https://www.cnblogs.com/journal-of-xjx/p/5954106.html

你可能感兴趣的文章
Hello World!
查看>>
js表格打印自动分页demo
查看>>
【分享】Windows日志查看工具分享
查看>>
SQLAlchemy
查看>>
循环遍历渲染模块
查看>>
JQuery中$.ajax()方法参数详解
查看>>
(四)、 nodejs中Async详解之一:流程控制
查看>>
第八周作业
查看>>
9.21
查看>>
BBS论坛(十三)
查看>>
21天打造分布式爬虫-豆瓣电影和电影天堂实战(三)
查看>>
BZOJ 3884: 上帝与集合的正确用法 扩展欧拉定理 + 快速幂
查看>>
[POI2002][HAOI2007]反素数 数论 搜索 好题
查看>>
Ubuntu-server 下Apache2 配置.htaccess 隐藏thinkPHP项目index.php
查看>>
Microsoft 嵌套虚拟化技术(Nested Virtualization)
查看>>
目标检测标注工具labelImg安装及使用
查看>>
HDU1421:搬寝室(线性dp)
查看>>
Selenium-webdriver+八种元素定位
查看>>
Android开发: 关于性能需要考虑的
查看>>
Ubuntu下的UNITY和GNOME界面
查看>>