| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 780 人关注过本帖, 1 人收藏
标题:找错误(约瑟夫环)
取消只看楼主 加入收藏
北辰羽光
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:50
专家分:26
注 册:2009-4-17
结帖率:66.67%
收藏(1)
已结贴  问题点数:20 回复次数:4 
找错误(约瑟夫环)
[问题描述]
       约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数),一开始任选一个整数作为报数上限m,从第一人开始按顺时针方向从自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。
[基本要求]
    采用单向循环链表模拟此过程,按照出列的顺序印出各人的编号
 [测试数据]
      m的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8, 4,首先m的值为6(正确的出列顺序应为6,1,4,7,2,3,5)

代码:
#include<stdio.h>
#include<stdlib.h>
#define N 7
typedef int elemtype;
typedef struct lnode
{
    elemtype code;
    elemtype key;
    struct lnode *next;
}lnode,*linklist;
void create_L(linklist &L,int n)  //创建一个无头结点的循环链表,n为结点个数
{
    linklist p,q;int i=1;
    L=(linklist)malloc(sizeof(lnode));
    p=(linklist)malloc(sizeof(lnode));    p=q=L;
    p->code=1;
    scanf("%d",&p->key);
    for(i=1;i<n;i++)
    {
        p=(linklist)malloc(sizeof(lnode));
        p->code=i+1;
        scanf("%d",&p->key);
        q->next=p;p->next=L;
        q=q->next;
    }
}
void del_L(linklist &L,linklist &p,int &m)  //删除第m个节点
{
    linklist q;
    if(L->next==L) printf("%d",L->code);
    else
    {   int i=1;
        while(i!=m)
        {
            i++;
            q=p;
            p=p->next;
        }
         m=p->key;
         printf("%d\n",p->code);
         q->next=p->next;
         free(p);
         p=q->next;
    }
}
void main()
{    linklist L,p;int m=20;
     printf("输入链表数据\n");
     create_L(L,N);
     p=L;
     while(L->next!=L)
         del_L(L,p,m);
      printf("\n");
}

编译时无错误,但运行测试数据时出错,只能输出出列顺序6,1,4,7,2,3,最后一个数据出不来。请大家帮帮忙
搜索更多相关主题的帖子: 约瑟夫 
2009-11-09 15:39
北辰羽光
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:50
专家分:26
注 册:2009-4-17
收藏
得分:0 
回复 2楼 tdy1006
这样该还是不行,我觉得是循环语句控制的问题
2009-11-10 17:39
北辰羽光
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:50
专家分:26
注 册:2009-4-17
收藏
得分:0 
回复 3楼 lijm1989
谢谢了,这样该就对了。但是我不太明白其中的原理,能讲一下么?
我的源程序运行时出现这样的警告
图片附件: 游客没有浏览图片的权限,请 登录注册

这是怎么引起的?
2009-11-10 17:48
北辰羽光
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:50
专家分:26
注 册:2009-4-17
收藏
得分:0 
回复 7楼 fuqingjun
多谢
2009-11-12 11:05
北辰羽光
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:50
专家分:26
注 册:2009-4-17
收藏
得分:0 
回复 8楼 lijm1989
   先去初略看了下  挺好的  谢谢
2009-11-12 11:09
快速回复:找错误(约瑟夫环)
数据加载中...
 
   



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

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