回 帖 发 新 帖 刷新版面

主题:[求助]关于约瑟夫环的问题,高手帮帮忙吧,急急急~~谢谢~~

约瑟夫环的问题,运行出错,代码如下,请高手帮忙抽空看一下,谢谢~~~~

能够通过编译,但运行的时候就有问题了,麻烦各位了~~~


#include "stdlib.h"
#include "stdio.h"
typedef struct person
{ int num;
  int snum;
  struct person *next;
}people;
  people *p,*q,*first;
  int n,usednum;
void main()
{int i;
printf("please input the number of student:");
scanf("%d",&n);
printf("please input the first people:");
scanf("%d",&usednum);
   for(i=1;i<=n;i++)
     {p=(people *)malloc(sizeof(people));
      p->num=i;
      printf("\nplease input the password");
      scanf("%d",&(p->snum));
      if(i==1)
    { first=p;q=0;}
      else
    q->next=p;
    q=p;
      }
   for(q->next=first,p=first;p->next!=p;p=p->next)
     {for(i=1;i<usednum;i++)
       {q=p;p=p->next;}
      printf("%d ",p->num);
      usednum=p->snum;
      q->next=p->next;
      free(p);
      }
      printf("%d",p->num);
}

回复列表 (共2个回复)

沙发

不知你运行时出现了什么问题,我在DEV-C++是运行没出错!

板凳


Josephus问题不一定非用循环链表的,如果N小还可以,足够大的话就。。。。。。所以你可以尝试用数学的方法去求解,这样算法会大大改进

我来回复

您尚未登录,请登录后再回复。点此登录或注册