您的位置:首页 > 编程语言 > C语言/C++

【算法】约瑟夫问题--C++源代码(g++ 7.2.0)

2017-11-10 11:59 337 查看
     1  #include <iostream>

     2  using namespace std;

     3

     4  struct Node

     5  {

     6          int data;

     7          Node* next;

     8  };

     9

    10  void Josephus(int total, int m , int n)

    11  {

    12          Node* p = NULL;

    13          Node* cur = NULL;

    14          Node* temp = NULL;

    15

    16          p = (Node*)malloc(sizeof(Node));

    17          p->data = 1;

    18          p->next = p;

    19          cur = p;

    20

    21          for(int i=2; i<=total; i++)

    22          {

    23                  Node* local = (Node*)malloc(sizeof(Node));

    24                  local->data = i;

    25                  local->next = cur->next;

    26                  cur->next = local;

    27                  cur = local;

    28          }

    29

    30          while(--m)

    31          {

    32                  temp = p;

    33                  p = p->next;

    34          }

    35

    36          while(total--)

    37          {

    38                  for(int i=n; --i; temp = p, p = p->next);

    39                  temp->next = p->next;

    40                  cout<<(p->data)<<" is out"<<endl;

    41                  free(p);

    42                  p = temp->next;

    43          }

    44  }

    45

    46

    47  int main()

    48  {

    49          Josephus(10,1,3);

    50          return 0;

    51  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: