爱玩科技网
您的当前位置:首页约瑟夫环

约瑟夫环

来源:爱玩科技网
#include #include typedef struct LNode{ int password; int num; struct LNode *next; }LNode,*LinkList;

LinkList l,p,q;

void creatlist(){ //初始化约瑟夫环 int i; l=(LNode*)malloc(sizeof(LNode)); printf(\"请输入各元素的编号和密码:\"); scanf(\"%d%d\ p=l; //p指针指向第一个人 for(i=1;i<7;i++){ q=(LNode*)malloc(sizeof(LNode)); scanf(\"%d%d\ l->next=q; l=q; //l指针指向当前环上的最后一个人 } l->next=p; //将最后一个人和第一个人串起来 p=l; //p指针此时指向约瑟夫环上的最后一个人 }

void loseph(int k){ int i; while(p!=p->next){ if(k==1){ //得到密码,根据密码顺时针遍历,找到下一个要出列的人,如此循环,直到所有人都出列为止 k=p->next->password; q=p->next; p->next=q->next; //密码为1的人作特殊处理 printf(\"%d,\ free(q); } else{ for(i=1;inext; k=p->next->password; q=p->next; p->next=q->next; printf(\"%d,\ free(q);

} } printf(\"%d\\n\ free(p); }

void main(){ int m; creatlist();

printf(\"请输入报数的初始值m(m<=30):\"); scanf(\"%d\ printf(\"\\n出列顺序:\\n\"); loseph(m); system(\"pause\"); }

因篇幅问题不能全部显示,请点此查看更多更全内容