bite解法
环形链表的约瑟夫问题
https://www.nowcoder.com/practice/41c399fdb6004b31a6cbb047c641ed8a
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @param m int整型 * @return int整型 */ typedef struct ListNode ListNode; ListNode* BuyNode(int n) { ListNode* newnode = (ListNode*)malloc(sizeof(ListNode)); if (newnode == NULL) { exit(1); } newnode->val = n; newnode->next = NULL; return newnode; } ListNode* CreatCircle(int n) { ListNode* newHead, * newTail; newHead = newTail = BuyNode(1); for (int i = 2; i <= n; i++) { newTail->next = BuyNode(i); newTail = newTail->next; } newTail->next = newHead; return newTail; } int ysf(int n, int m) { ListNode* prev, * pcur; prev = CreatCircle(n); pcur = prev->next; int count = 1; while (pcur->next != pcur) { if (count == m) { prev->next = pcur->next; free(pcur); pcur = prev->next; count = 1; } else { prev = pcur; pcur = pcur->next; count++; } } return pcur->val; }