来自 品牌动态 2019-11-14 18:00 的文章
当前位置: 118kj开奖现场 > 品牌动态 > 正文

Joseph难点

1.先是,大家先来打听一下哪些是Joseph环难点:

讲贰个比较有意思的传说:Joseph是犹太军事的四个老马,在抵御亚特兰洲大学的首义中,他所指点的部队被重创,只剩余残留的阵容40余名,他们皆以钢铁的人,所以不愿投降做叛徒。一堆人核定说要死,所以用风度翩翩种政策来前后相继杀死全数人。 
于是约瑟夫建议:每一回由其余两个人一同杀掉一人,而被杀的人的前后相继顺序是由抽签决定的,Joseph有机关地抽到了最后意气风发签,在杀了除去她和剩余那个家伙之外的最后壹位,他劝泰山压顶不弯腰了别的三个没死的人投降了波士顿。

 

初叶来说就是:

安分守己如下准绳去杀人:

  • 全部人围成生机勃勃圈
  • 顺时针报数,每便报到3的人将被杀掉
  • 被杀掉的人将从房间内被移走
  • 接下来从被杀掉的下一人再次报数,继续报3,再消亡,直到剩下一位

那么程序完成为:

  链表的定义: 定义为编号就可以 所以data项为int

  

typedef struct NODE{
    struct NODE *next;
    int data;
}Node,*Linklist;

 

是因为是循环,直到倒数一位, 全数能够动用特殊的链表: 循环链表。 当链表中只剩余一个因素后,便以为完事了。 即 L->next = L;

#include <stdio.h>
#include <stdlib.h>
#include "Linklist.h"

void Print_Linklist(Linklist L)
{
    Linklist head = L;
    printf("List: ");
    while(L->next != head)
    {
        printf("%d ",L->data);
        L = L->next;
    }
    printf("%d ",L->data);
    printf("n");
}

int main()
{
    int i;
    Linklist L;
    Linklist head;
    Linklist Out;
    L = (Node*)malloc(sizeof(Node));
    head = L;
    L->data = 1;
    L->next = head;
    for(i=2;i<=41;i++)
    {
        L->next=(Node*)malloc(sizeof(Node));
        L->next->data = i;
        L->next->next = head;
        L = L->next;
    }
    Print_Linklist(head);
    L = head;
    while(L != L->next)
    {
         for(i=1;i<2;i++)
         {
             L = L->next;
         }
         Out = L->next;
         printf("%2d号 ----> 自杀!n",Out->data);
         L ->next = Out->next;
         L = L->next;
         free(Out);
    }
    printf("幸存者是:%d",L->data);
    return 0;
}

图片 1

本文由118kj开奖现场发布于品牌动态,转载请注明出处:Joseph难点

关键词: