【 tulaoshi.com - 编程语言 】
                             
                              #includestdio.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;in;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);
  }