#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}LNode,*LinkList;
void Josephus(int n, int m, int k)
{
LinkList p = NULL, x = NULL, list = NULL;
int i;
for(i = 1; i <= n; i++)
{
p = (LNode*)malloc(sizeof(LNode));//向系统申请内存
if (p==NULL) {//确保指针使用前为非空指针,当p为空指针时结束程序
printf("分配失败!");
exit(1);
}
p->data = i;//编号
if(list == NULL)
list = p;
else
x->next = p;//将x和p节点串起来
x = p;//x指针后移
}
p->next = list;//建立一个循环链表
p = list;//p指针后移
for(i = 1; i < k; i++)
{
x = p;
p = p->next;
} //此时p指向第1个出发点
while(p->next != p)
{
for
#include#includetypedef struct Node{ int data; struct Node* next;}LNode,*LinkList;void Josephus(int n, int m, int k){ LinkList p = NULL, x = NULL, list = NULL; int i;