WEB开发网
开发学院软件开发C++ JOSEPH环 阅读

JOSEPH环

 2008-03-08 12:39:44 来源:WEB开发网   
核心提示:#include<stdio.h>typedef strUCt Node{ int number; int cipher; struct Node *next;}node,*hu;hu H;//定义头结点为H;init(int n){ int i; int cipher; hu L; if(n>

  #include<stdio.h>
typedef strUCt Node
{
 int number;
 int cipher;
 struct Node *next;
}node,*hu;
hu H;//定义头结点为H;
init(int n)
{
  int i;
  int cipher;
  hu L;
  if(n>=1)
  {
   scanf("%d",&cipher);
   H=(hu)malloc(sizeof(node));//生成头结点;
   H->number=1;
   H->cipher=cipher;
   H->next=H;
   for(i=1;i<n;i++)
   {
    scanf("%d",&cipher);
    L=(hu)malloc(sizeof(node));//生成副结点;
    L->number=i+1;
    L->cipher=cipher;
    L->next=H->next;
    H->next=L;
    H=L;
   }
   H=H->next;//循环单链表的生成;
  }
  else
   PRintf("The N's value that you inputted is invalid!");
}
Joseph(int m,hu h)//进行程序的循环,使顺序出列;
{
  int i;
  hu l;
  l==h;
  i=1;
  while(i!=m)
  {
   i=i+1;
   l=h;
   h=h->next;
  }
  printf("%3d",h->number);
  m=h->cipher;
  l->next=h->next;
  free(h);
  h=l->next;
  if(h!=l)
   Joseph(m,h);
  else
  {
   printf("%3d",h->number);
   free(h);
  }
}
main()
{
 int m;
 int n;
 int i;
 clrscr();
 printf("Please input the starting value of M ( the upper limit worth of M ) : ");
 scanf("%d",&m);
 printf("Please input the man's figure who have a hand in: ");
 scanf("%d",&n);
 printf("Please input the cipher from number1 to number%d:",n);
 init(n);
 printf("The order of Dequeue is :");
 Joseph(m,H);
}

Tags:JOSEPH

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接