Josephy 问题: 假设有N个人坐在圆桌周围,从第S个人开始报数,报到M的出列,
然后再从下一个人开始报数,数到M的人出列¨¨¨如此重复,直到所有的人都出
列为止。要求出列的先后顺序输出每个人的信息
# include
# include
typedef int datatype;
typedef struct cnode
{
datatype data;
struct cnode *next;
}clistnode;
typedef clistnode *clinklist;
clinklist head;
void Joseph(int n,int m,int s)
{
int i,j,flag;
clinklist creatclinklist(int); /* 函数申明 :元素前插法创建循环链表,长度限定为N */
void print(clinklist head,int);
clistnode *p,*q,*r,*t;
head=creatclinklist(n);
print(head,n); /* 将循环链表的元素按顺序打印出来 */
q=head;
if(s>n) printf("error!n");
flag=s%n; /* 把指针q移动到第 S个结点,并把它给指针p,尽量减少指针移动的次数! */
for(i=1;i
p=q->next;
printf("%d个结点出队的顺序依次是;n",n);
for(i=1;i<=n;i++) /* 把i记为删除的结点个数 */
{
j=1;
flag=m%(n-i+1); /* 把指针p移动到第M个结点,尽量减少指针移动的次数!尽量使每次移动次数
不超过n次!时间复杂度O(n),提高该程序的执行效率! */
if(!flag) /* 不知道该移动几步!特殊处理一些结点! */
{
j=1;
while(j
r=p;
p=p->next;
if(p==head)
continue;
j++;
}
}
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔