約瑟夫環問題(迴圈連結串列實現)
阿新 • • 發佈:2018-12-12
約瑟夫環問題,n個人圍成一圈,報數到m的人出列,直至n個人全部出列,問出列人的順序
手寫迴圈連結串列模擬實現
#include<stdio.h> #include<stdlib.h> typedef struct SingleNode { int date; struct SingleNode *next; }list; int main() { list *head,*vis,*temp; int n,m; printf("請輸入總人數n:"); scanf("%d",&n); printf("數到m的人出列,請輸入m:"); scanf("%d",&m); head=vis=(list*)malloc(sizeof(list)); head->date=1; for(int i=2;i<=n;i++) { vis->next=(list*)malloc(sizeof(list)); vis=vis->next; vis->date=i; } vis->next=head; temp=head; printf("出列順序為:"); while(n) { for(int i=1;i<m;i++) vis=vis->next; temp=vis->next; vis->next=temp->next; printf("%d ",temp->date); free(temp); n--; } puts("\n"); return 0; }