// joseph3.cpp : Defines the entry point for the console application.
//循环链表实现约瑟夫环
#include "stdafx.h"
#include <stdio.h>
#include <malloc.h>
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*linkList;
void joseph(int n,int m,int k){//1...n,m为间隔,k为第一个开始数的数字
linkList l,pre,curr;
l=(linkList)malloc(sizeof(Lnode));
l->next=l;
l->data=1;
pre=l;
for(int i=2;i<=n;i++)
{
linkList p=(linkList)malloc(sizeof(Lnode));
p->data=i;
p->next=l;
pre->next=p;
pre=pre->next;
}
curr=l;
for(i=1;i<k-1;i++)
{
curr=curr->next;
}
pre=curr;
curr=curr->next;
while(n--){
for(i=1;i<m;i++)
{
pre=curr;
curr=curr->next;
}
pre->next=curr->next;
printf("%d ",curr->data);
free(curr);
curr=pre->next;
}
}
int main(int argc, char* argv[])
{
joseph(5,2,2);
return 0;
}
循环链表实现约瑟夫环
最新推荐文章于 2023-12-17 01:45:00 发布