
C语言实现约瑟夫环源代码.docx
5页C语言实现约瑟夫环源代码 约瑟夫环源代码: #include typedef struct Node { int data; struct Node *next; }*Pointer; Pointer p,q,s Pointer Initlink(Pointer &head) { head=new Node; head->next=head; return(head); } void Creatlink(Pointer &head,int n) { p=head; if(n>=2) { for(int i=1;idata=i; s=new Node; p->next=s; p=s; } p->data=n; p->next=head; } else { p->data=1; p->next=head; } } int Length(Pointer &head) { int j=1; p=head; while(p->next!=head) { p=p->next; j++; } return(j); } Pointer Find(Pointer &head,int i) { p=head; if(i>1) { for(int t=1;tnext; } } else { p=head; } return p; } void Delete(Pointer &head,int m) { if(m>1) { p=Find(head,m-1); q=p->next; p->next=p->next->next; delete(q); } else { p=Find(head,Length(head)); p->next=p->next->next; } } void main() { int n,m; Pointer head,s; Initlink(head); s=head; printf("请输入约瑟夫环所含数据总量n:"); scanf("%d",&n); printf("\n"); Creatlink(head,n); printf("请输入需要循环的次数m:"); scanf("%d",&m); printf("\n"); printf("输出数据为:"); printf("\n"); for(int temp=0;tempdata); s=head; head=Find(head,m+1); Delete(s,m); } } 。












