数据结构与算法-约瑟夫问题

原创 2015年07月08日 20:23:35
/*
功能:41个人围成一圈,第一个到第三个一次报数,数到3,自杀,下一个报1......
      求出自杀顺序!
时间:2015-07-08
人员:西瓜太郎
*/
#include <stdlib.h>
#include <stdio.h>
#define ElementType int
struct Node;
typedef struct Node *ptrNode;
typedef ptrNode List;

typedef struct Node
{
    ElementType data;
    struct Node *next;
}Node;
void initJosePList(List *L);
void deleteCirList(List L);
void printfCirList(List L);
int main()
{
    List L= NULL;//一定要初始化!!!
    initJosePList(&L);
    printfCirList(L);
    printf("\n约瑟夫:\n");
    deleteCirList(L);    
    return 0;
}
void initJosePList(List *L)
{
    List temp,target;
    int i = 1;
    while(i < 42)
    {
        if((*L) == NULL)//定义L的时候一定要初始化!!
        {
            (*L) = malloc(sizeof(struct Node));
            if(!(*L))
                exit(EXIT_FAILURE);
            (*L)->data = 1;
            (*L)->next = (*L);
            i++;
        }
        else
        {
            for(temp = (*L); temp->next != (*L); temp = temp->next)
                ;
            target = malloc(sizeof(struct Node));
            target->data = i;
            i++;

            temp->next = target;
            target->next = (*L);
        }    
    }
}

void deleteCirList(List L)
{
    List temp,target;
    int j;
    temp = L;
    for(j = 1; j < 42; j++)
    {
        temp = temp->next;

        target = temp->next;
        temp->next = target->next;

        temp = temp->next;

        printf(" %d",target->data);

        free(target);        
    }
    printf("\n");
}

void printfCirList(List L)
{
    List temp;
    for(temp = L; temp->next != L; temp=temp->next)
        printf("  %d",temp->data);
    printf("  %d\n",temp->data);

}

数据结构与算法(单循环链表_约瑟夫问题)

据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41...
  • ccrookie
  • ccrookie
  • 2015年06月09日 23:02
  • 940

【数据结构实验】约瑟夫环的实现

#include #include using namespace std; typedef int ElemType; typedef struct LNode {  ElemType num;...
  • qq_32353771
  • qq_32353771
  • 2015年11月10日 11:39
  • 757

数据结构—约瑟夫问题

约瑟夫问题: 约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。 分析: ...
  • LY_624
  • LY_624
  • 2016年04月23日 14:44
  • 1241

算法: 约瑟夫问题(Joseph Problem)的分析

约瑟夫问题(Joseph Problem)的数学解决思路。
  • wlqingwei
  • wlqingwei
  • 2015年03月03日 14:17
  • 2393

约瑟夫环问题 java代码实现(高效率)

问题来历编辑 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决...
  • uniquewonderq
  • uniquewonderq
  • 2015年06月13日 19:27
  • 1348

数据结构 约瑟夫环问题

实验一  线性表的应用 实验目的和要求: 通过实验进一步理解线性表的逻辑结构和存储结构,提高使用理论知识指导解决实际问题的能力,熟练掌握链表的实际应用。 主要内容: 题目1 :Josephus...
  • Daisymanman
  • Daisymanman
  • 2016年10月30日 10:38
  • 977

数据结构 约瑟夫环问题C++

需求分析 本程序是用VC编写,由于约瑟夫问题是n个人围坐在一圈,所以采用循环链表实现,又由于报数时可能循环到开始,所以采用不带头结点的循环链表结构。 题目要求的约瑟夫环操作:编号是1,2,……...
  • thf9527
  • thf9527
  • 2016年02月18日 15:41
  • 1760

c++ 数据结构 用循环单链表解决约瑟夫问题

循环链表为单链表的变形,与单链表的区别在于循环链表的尾结点的指针域不是空,存放的是首结点的地址,因此判断表空的条件不是first->Link==NULL;而是first->Link==first; 约...
  • sinat_34927324
  • sinat_34927324
  • 2016年11月08日 23:10
  • 969

最简化约瑟夫环问题的递归算法详细解析

这个问题可能每个学算法的同学都会遇见,我没那么聪明,第一次看见时做不出来,只发现一些规律,后面看到算法也挺久才看懂,这里是将别人的算法结果做一个解析,例子是暂时网上找的递归最简洁的例子: 下面就以这个...
  • m15682532244
  • m15682532244
  • 2017年10月21日 15:54
  • 299

算法题-约瑟夫(Joseph)问题求解

题:编写一个程序,求解约瑟夫(Joseph)问题。有n个小孩围城一圈,将他们从1开始依次编号,从编号为1的小孩开始报数,数到第m个小孩出列,然后从出列的下一个小孩重新开始报数,数到第m个小孩有出列,如...
  • liuxiao2030
  • liuxiao2030
  • 2017年01月05日 10:32
  • 920
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构与算法-约瑟夫问题
举报原因:
原因补充:

(最多只允许输入30个字)