约瑟夫问题(猴子选大王): n只猴子要选大王,选举办法如下:所有猴子按1,2,…,n编号围坐一圈,从第一号开始按1,2,…,m报数,凡报m号的推出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王.n和m由键盘输入,打印出最后剩下的猴子号. 由于很多书上都有的习题,以及很多人问所以... #include #include struct Link{ int id; Link *next; }; void Initialize(int n, Link *head) { int i; Link *p; for (i = 1, p = head; i <= n; i++){ p->next = (Link *) malloc (sizeof(Link)); p = p->next; p->id = i; } p->next = head->next; } void Delete(Link *node) { Link *temp; temp = node->next; printf("%d ", node->next->id); node->next = temp->next; free(temp); } void main() { Link *head, *p; int n, i, k; printf("%s","Input n,k = "); scanf("%d%d", &n, &k); head = (Link *) malloc (sizeof(Link)); head->next = (Link *) malloc (sizeof(Link)); Initialize(n, head); for (p = head, i = 1; p != p->next; p = p->next, i++){ if (i == k){ i = 1; Delete(p); } } printf("\n"); printf("%d", p->id); }
数据结构猴子选大王java_数据结构例子-猴子选大王
最新推荐文章于 2024-03-20 13:01:37 发布