(c语言)链表方法:13个人一次报号,报道3的人退出,输出最后一个人
2017-04-19 20:43
387 查看
#include <stdio.h>
struct person
{
int number;
int nextp;
};
int main()
{
struct person link[14];
int i = 0;
int count = 0;
int h = 13;
for( i = 1; i <= 13; i++ ) //将每个人赋值,
{
if( i == 13)
{
link[i].nextp = 1;
}
else
{
link[i].nextp = i+1; //指向下一个人的标志
}
link[i].number = i;
}
printf("\n");
printf("leave number:\n");
while(count < 12)
{
i = 0;
while(i != 3)
{
h = link[h].nextp;
if(link[h].number) //遇到0时,不计数,并指向下一个人
{
i++;
}
}
printf("%4d ",link[h].number);
ink[h].number = 0; //将取过的数的值置0
count++;
}
printf("\nThe last one:\n");
for( i = 1; i <= 13; i++ )
{
if(link[i].number)
{
printf("%3d ",link[i].number); //最后一人的值不为0,其余人为0
}
}
printf("\n");
return 0;
}
struct person
{
int number;
int nextp;
};
int main()
{
struct person link[14];
int i = 0;
int count = 0;
int h = 13;
for( i = 1; i <= 13; i++ ) //将每个人赋值,
{
if( i == 13)
{
link[i].nextp = 1;
}
else
{
link[i].nextp = i+1; //指向下一个人的标志
}
link[i].number = i;
}
printf("\n");
printf("leave number:\n");
while(count < 12)
{
i = 0;
while(i != 3)
{
h = link[h].nextp;
if(link[h].number) //遇到0时,不计数,并指向下一个人
{
i++;
}
}
printf("%4d ",link[h].number);
ink[h].number = 0; //将取过的数的值置0
count++;
}
printf("\nThe last one:\n");
for( i = 1; i <= 13; i++ )
{
if(link[i].number)
{
printf("%3d ",link[i].number); //最后一人的值不为0,其余人为0
}
}
printf("\n");
return 0;
}
相关文章推荐
- (c语言)不使用链表:13个人一次报号,报道3的人退出,输出最后一个人
- 【c语言】13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。用链表处理
- C语言 约瑟夫圈问题:N个人围成一圈,从第一个人开始按顺序报数并编号1,2,3,……N,然后开始从第一个人转圈报数,凡是报到3的退出圈子。则剩下的最后一个人编号是多少。
- 环形链表 有m个人围成一圈,开始报数,报道n,退出,问最后剩下的是几号。
- 13个人围成一圈喊道3的退出 求最后一个人的序号
- C语言中几种输出调试信息的方法
- 每天学习一算法系列(13) (输入一个单向链表,输出该链表中倒数第k个结点)
- Facebook个人动态RSS Feed输出方法
- Facebook个人动态RSS Feed输出方法
- 通过一次查询按类别输出数据的两种方法
- 13、输入一个单向链表,输出该链表中倒数第k个结点
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 通过一次查询按类别输出数据的两种方法
- 常见算法:C语言中链表的操作(创建,插入,删除,输出)
- C语言输出百分号(%)的方法,比较迷惑
- android 退出程序 个人解决方法
- 单链表翻转的多种方法实现(c语言)
- 请大家看一下一个c语言中的链表问题,下面的代码是有错误的!!请大家说出错误的原因,以及修改的方法!!!
- 通过一次查询按类别输出数据的两种方法
- 关于C语言中的printf()方法格式化输出