约瑟夫环

来源:互联网 发布:2016年开淘宝店怎么样 编辑:程序博客网 时间:2024/03/28 22:12

#include "stdlib.h"

#include "stdio.h"

#define NULL 0

 

typedef struct LNode

       {

       int No;

       int code;

       struct LNode *next;

       }LNode,*LinkList;

int n,m;

 

//建立循环链表

LinkList  create()

       {int i;

       LinkList front,rear,k;

       front=NULL;

       for(i=1;i<=n;i++)

              { k=(LinkList)malloc(sizeof(LNode));

           k->No=i;

              printf("code:");

              scanf("%d",&k->code);

           if(front==NULL)

                     {

                     front=k;

                     rear=front;}

           else

                     {rear->next=k;

                   rear=k;

              }

              }

              rear->next=front;

 

 

           return rear;

}

 

//实现约瑟夫环

void outcircle(LinkList &L)

       {    

              int i,j,scode[20];

              LinkList p,q;

              p=L;

              for(i=0;i<n;i++)

              {

                     for(j=1;j<m;j++)

                     {p=p->next;      

                     }

                     q=p->next;

            m=q->code;

                     scode[i]=q->No;

                     p->next=p->next->next;

                     free(q);

              }

              printf("The code is:");

              for(i=0;i<n;i++)

                     printf("%2d",scode[i]);

                     printf("/n");

       }

 

//主函数

int    main()

       {

       printf("input n:/n");

       scanf("%d",&n);

       printf("input m:/n");

       scanf("%d",&m);    

       LinkList rear;

       rear=create();

       outcircle(rear);

       getchar();

       return 0;

 

原创粉丝点击