我给大家看看约瑟夫问题的程序 #include"stdio.h" #include"stdlib.h" typedef struct node{ int data; struct node *next; } Lnode;
Lnode* Create(int n) { int i; Lnode *h,*p,*r=(Lnode*)malloc(sizeof(Lnode)); r->data=n; h=r; for(i=n-1;i>0;i--) { p=(Lnode*)malloc(sizeof(Lnode)); p->data=i; p->next=h; h=p; } r->next=h; return h; }
void Out(int n,int m) { Lnode *p,*q,*h; int j,i; h=Create(n); p=h; j=0; printf("Outqueue order:"); if(!m) { printf("Data error!"); } else if(m==1) { for(i=1;i<=n;i++) printf("%d ",i); } else { do{ j++; if(j==m-1) { q=p->next; p->next=q->next; printf("%d ",q->data); j=0; free(q); } p=p->next; } while(p->next!=p); printf("%d\n",p->data); free(p); } }
void main() { Lnode *h; int n,m; printf("\ninput n,m="); scanf("%d%d",&n,&m); Out(n,m); } 希望大家多多支持! QQ:278674568 邮箱:278674568@qq.com