C语言 约瑟夫环问题:用户输入M,N…
2014-03-25 21:52
471 查看
#include <stdafx.h> #include <stdlib.h> struct number { int num; struct number * next; }; void main () { int m, n; struct number * p, * head=NULL, * tail; printf("please input M and N:\n"); scanf("%d %d", &m, &n); //输入M、N值。 for (int i=1; i<=n; i++) //建立循环链表。 { p=(struct number *)malloc(sizeof(struct number)); p->num=i; if(head==NULL){ head=p; tail=p;//注意开始tail也要赋值 } else tail->next=p; tail=p; } tail->next=head; p = tail; //从head开始,记录开始的前一个指针 while(n--) //剩下的数的个数为n { int t = m%n; //防止多数太多圈 成时间浪费 for(int j=1; j<t;j++ ) //数到要 的那个数的前一个 p=p->next; number *q = p->next; //要 的数的指针 printf("%d ", q->num); //输出要 的数 p->next = q->next; //要 的数从链表中去掉 free(q); } printf("\n"); }
转发至微博
转发至微博
相关文章推荐
- C语言 模拟三次密码输入
- C语言&nbsp;结构体的内存对齐问题与位域
- shell 脚本中关于用户输入参…
- 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序(约瑟夫环问题)
- C语言&nbsp;结构体的内存对齐问题与位域
- 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序(约瑟夫环问题)
- C语言 寻找输入二位数组中的鞍点
- C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题
- c语言scanf()停止接受输入及scanf("%c",&c)吃掉回车或者空格字符的问题
- 解决启动WebLogic输入用户名密码问题 & 密码重置
- ACM: 图论题 poj 1149 网络流问题
- nfts 挂载refused问题
- 【Oracle学习起步--1】用户解锁及密码输入问题
- 解决 用户'sa'登录失败。错误:18456 问题
- 将输入的string中的"yes" 改为"no"
- Centos&nbsp;6.5&nbsp;机群搭建及问题解决
- 有关C语言中输入语句的问题
- Eclipse使用问题之二&nbsp;[修改一个变…
- 【c语言】 寻找十个整数中的最大值
- access 转 SQL 要注意的问题