C链表实现约瑟夫环
2014-12-25 20:53
162 查看
/*据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39
个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个
人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus
和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。*/
// 链表.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<malloc.h>
#include <stdlib.h>
#define N 41
#define M 3
#define START 0
struct Linklist {
int data;
struct Linklist *link;
} LNode
;
typedef struct Linklist Linklist;
typedef Linklist *link;
int _tmain(int argc, _TCHAR* argv[])
{
int i;
link p, r;
for (i = 0; i < N; i++) {
LNode[i].data = i + 1;
if (i < N - 1)
LNode[i].link = &LNode[i + 1];
else
LNode[i].link = LNode;
}
p = &LNode[START];
while (p->link != p) {
for (i = 1; i < M; i++) {
r = p;
p = p->link;
}
r->link = p->link;
printf("第%d人自杀\n", p->data);
p = r->link;
}
getchar();
return 0;
}
个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个
人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus
和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。*/
// 链表.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<malloc.h>
#include <stdlib.h>
#define N 41
#define M 3
#define START 0
struct Linklist {
int data;
struct Linklist *link;
} LNode
;
typedef struct Linklist Linklist;
typedef Linklist *link;
int _tmain(int argc, _TCHAR* argv[])
{
int i;
link p, r;
for (i = 0; i < N; i++) {
LNode[i].data = i + 1;
if (i < N - 1)
LNode[i].link = &LNode[i + 1];
else
LNode[i].link = LNode;
}
p = &LNode[START];
while (p->link != p) {
for (i = 1; i < M; i++) {
r = p;
p = p->link;
}
r->link = p->link;
printf("第%d人自杀\n", p->data);
p = r->link;
}
getchar();
return 0;
}
相关文章推荐
- 约瑟夫环问题 链表实现
- 链表实现约瑟夫环问题
- 用数组和链表实现约瑟夫环问题
- 约瑟夫环(丢手帕游戏)Java 链表实现(程序正确无误)
- 使用链表实现环结构以解决约瑟夫环问题
- 使用C#链表简单实现的约瑟夫环
- 约瑟夫环问题的两种实现[链表+数组]
- 约瑟夫环链表实现
- 数据结构实验1---约瑟夫环(“链表”实现)
- 链表初解(三)——约瑟夫环之循环链表实现
- 约瑟夫环的实现-链表方法
- 约瑟夫环的链表实现
- 链表基础以及约瑟夫环的实现
- 约瑟夫环的实现---数组模拟链表
- 链表经典问题:约瑟夫环的实现
- 约瑟夫环问题(丢手帕游戏)Java 链表实现
- 链表实现约瑟夫环
- 单向循环链表的实现以及约瑟夫环的实现
- 用java实现链表并解决约瑟夫环问题
- java单向循环链表实现约瑟夫环