| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:数据结构的一道题(约瑟夫环),麻烦看一下哪错啦???
取消只看楼主 加入收藏
拂晓晨曦
Rank: 2
等 级:论坛游民
帖 子:87
专家分:44
注 册:2010-10-31
结帖率:94.74%
收藏
已结贴  问题点数:10 回复次数:1 
数据结构的一道题(约瑟夫环),麻烦看一下哪错啦???
约瑟夫环问题(运行不出结果来,麻烦各位大虾们看一看,谢谢。。。)
 【问题描述】
 编号为1,2,...,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。现在给定一个随机数m>0,从编号为1的人开始,按顺时针方向1开始顺序报数,报到m时停止。报m的人出圈,同时留下他的密码作为新的m值,从他在顺时针方向上的下一个人开始,重新从1开始报数,如此下去,直至所有的人全部出列为止。
 【基本要求】
 利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。
 【测试数据】
     M的初始值为20;n等于7,7个人的密码依次为:3,1,7,2,4,8,4。
 输出为:6,1,4,7,2,3,5
 

#include <stdio.h>
 #include <malloc.h>
 typedef struct LNode{
     int number;
     int password;
     struct LNode *next;
 }linklist;
 
   
void insert(linklist *q)
 {
     linklist *p;
     p=(linklist*)malloc(sizeof(linklist));
     scanf("%d%d",&p->number,&p->password);
     p->next=q->next;
     q->next=p;
     q=q->next;
 }
 

void Delete(linklist *q,int m,int n)
 {
     int x;
     x=m%n;
     while(q->next!=q)
     {
         while(q->number!=x-1)
         {
             q=q->next;
         }
         printf("%d\t",q->next->number);
         m=q->next->password;
         q->next=q->next->next;
     }
     printf("%d\n",q->number);
 }
 

void main()
 {
     linklist *q;
     int m,n,i;
     printf("The first password is :");
     scanf("%d",&m);
     printf("The total number is:");
     scanf("%d",&n);
     if(n>30||n<0)
         printf("Error!");
     q=(linklist*)malloc(sizeof(linklist));
     q->next=q;
     scanf("%d%d",&q->number,&q->password);
     for(i=1;i<=n-1;i++)
     {
         insert(q);
     }
     q=q->next;
     Delete(q,m,n);
 }
搜索更多相关主题的帖子: 约瑟夫 顺时针 正整数 
2011-03-24 19:37
拂晓晨曦
Rank: 2
等 级:论坛游民
帖 子:87
专家分:44
注 册:2010-10-31
收藏
得分:0 
给点人气呀,各位斑竹们都看看呀,找不出来错在哪了。。。。。。
2011-03-24 20:36
快速回复:数据结构的一道题(约瑟夫环),麻烦看一下哪错啦???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037831 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved