約瑟夫環,指針實現ios
1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 using namespace std; 6 7 typedef struct Node 8 { 9 int Id; 10 struct Node * Next; 11 } NODE; 12 13 int main() 14 { 15 16 int n, m; 17 18 scanf("%d %d", &n, &m); 19 20 NODE *head, *p, *q; 21 head = (NODE *)malloc(sizeof(NODE)); 22 23 head->Id = 1; 24 head->Next = NULL; 25 26 q = head; 27 for(int i=2; i<=n; i++) 28 { 29 p = (NODE*)malloc(sizeof(NODE)); 30 p->Id = i; 31 p->Next = NULL; 32 q->Next = p; 33 q = q->Next; 34 } 35 q->Next = head; 36 37 p = head; 38 39 while(p!=p->Next) 40 { 41 for(int cnt=1; cnt<=m-1; cnt++) 42 { 43 q = p; 44 p = p->Next; 45 } 46 q->Next = p->Next; 47 //printf("%d ", p->Id); 48 NODE* t = p; 49 p = p->Next; 50 free(t); 51 } 52 printf("%d\n", p->Id); 53 54 return 0; 55 }