早教吧 育儿知识 作业答案 考试题库 百科 知识分享

根据源程序代码画出流程图利用循环链表求约瑟夫环出列顺序.要求编号为1、2、3……n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).开始任选一个正整数作为报数上限m,从第一

题目详情
根据源程序代码画出流程图
利用循环链表求约瑟夫环出列顺序.要求编号为1、2、3……n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数).开始任选一个正整数作为报数上限m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,此时报m的人出列,并将他的密码作为新的m值,从他下一个人开始按顺时针方向重新从1报数.如此循环,直到所有的人全部出列为止.
源程序
#include
#include
struct Lnode /*定义链表*/
{int number;
int password;
struct Lnode *next;
}Lnode,*p,*q,*head;
int main(void)
{int n; /*n个人*/
int i;
int m; /*初始报数上限值*/
int j;
printf("please enter the number of people n:"); /*输入测试人的数量*/
scanf("%d",&n);
if(npassword));
p->number=i;
}
p->next=head; /*形成循环链表*/
p=head;
printf("please enter the number m:");
scanf("%d",&m);
printf("The password is:\n");
for (j=1;jpassword;
printf("%d ",p->number);
p->number=p->next->number; /*删除报m的节点*/
p->password=p->next->password;
q=p->next;
p->next=p->next->next;
free(q);
}
}
▼优质解答
答案和解析
图已发请查收
看了根据源程序代码画出流程图利用循...的网友还看了以下: