#include<stdio.h>
#include<malloc.h>
/*约瑟夫问题--底层实现:动态队列*/
//定义队列结点类型
typedef struct People{
int data;
struct People *next;
}People;
//定义队列类型
typedef struct Node{
People *head;
People *tail;
}Queue;
int main(){
People *New,*temp;
Queue queue;
int n,p;
int i=1;
New = (People*)malloc(sizeof(People));
New->next = NULL;
queue.head = New;
queue.tail = queue.head;
//n表示人数,p表示每次第p个人出局
scanf("%d%d",&n,&p);
//初始化队列
while(i<=n){
New = (People*)malloc(sizeof(People));
New->data = i;
New->next = NULL;
queue.tail->next = New;
queue.tail = New;
i++;
}
New = queue.head->next;
while(New!=NULL){
i = 1;
while(i<p){
queue.tail->next = New;
queue.tail = New;
New = New->next;
queue.tail->next=NULL;
i++;
}
printf("%d ",New->data);
temp = New->next;
free(New);
New = temp;
}
return 0;
}
数据结构与算法之约瑟夫问题
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 数据结构与算法-目录 前言 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个...
- 题目描述: 在一个二维数组中每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序。请完成这样一个函数...
- 数据结构与算法--最短路径之Bellman算法、SPFA算法 除了Floyd算法,另外一个使用广泛且可以处理负权边...