摘要:
问题描述n个人围成一圈,号码为1-n,从1开始报数,报到2的退出,剩下的继续从1开始报数,求最后一个人的号码。算法分析最直观的算法是用循环链表模拟。从首节点开始,不断删除第二个节点,直到只剩一个节点为止。时间复杂度是O(2n).typedef struct josephusnode{ struct josephusnode *next; int item;}jnode;int listjosephus(jnode *head){ jnode *n = head; while(n->next!=n){ jnode *t = n->next; n... 阅读全文