約瑟夫環C語言程式 day1
阿新 • • 發佈:2018-12-18
約瑟夫環問題,n個人圍著一張桌子,從1開始報數,規定報道第k數的人自殺,接著下一給重新開始報數。這裡n=41,k=3。
#include<stdio.h> #include<stdlib.h> typedef int EleType; typedef struct LinkNode { EleType data; struct LinkNode *next; }LinkNode,*LinkList; LinkNode *Creat(LinkList *L,int n) { LinkList r,p; (*L)=(LinkNode*)malloc(sizeof(LinkNode)); r=*L; int i; for(i=1;i<n+1;i++) { p = (LinkNode*)malloc(sizeof(LinkNode)); p->data=i; r->next=p; r=p; } r->next=(*L)->next; free(*L); return r->next; } int main() { int n=41; int k=3; int m; LinkList L,temp,p; p=Creat(&L,n); while(p!=p->next) { for(m=1;m<k-1;m++) { p=p->next; } printf("%d->",p->next->data); temp=p->next; p->next=temp->next; free(temp); p=p->next; } printf("%d",p->next->data); system("pause"); }