约瑟夫环-链表
#include <stdlib.h> //非malloc #include <stdio.h> typedef struct LNode{ int data; LNode* next; }LNode,*Linklist; void josephus(int n,int k,int m) { Linklist cur,head,prior,temp; head=(Linklist)malloc(sizeof(LNode)); head->data=1; head->next=head; cur=head;//当前节点设为头结点 for (int i=2; i<=n; i++) { temp=(Linklist)malloc(sizeof(LNode)); temp->data=i; temp->next=cur->next; cur->next=temp; cur=temp; } cur=head;//当前节点设为头结点 while(--k)//注意此处是先-- { prior=cur; cur=cur->next; } while (n--) { for (int i=0; i<m-1; i++) { prior=cur; cur=cur->next; } printf("%d\n",cur->data); prior->next=cur->next; free(cur); cur=prior->next; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步