C语言 约瑟夫环

Python018

C语言 约瑟夫环,第1张

 #include <iostream>

using namespace std

typedef struct circle_node

{

 int seq

 int val

 circle_node* next

 circle_node(int _val, int _seq)

 {

  val = _val

  seq = _seq

  next = NULL

 }

}circle_node_t

void joseph()

{

 int loop cin >> loop

 while (loop--)

 {//

  int N, M

  cin >> N >> M

  

  int val

  cin >> val

  circle_node_t* head = new circle_node_t(val, 1)

  head->next = head //建立第一个节点

  circle_node_t* tail = head

  //建环

  int seq = 2

  for (int n = 1 n < N n++)

  {//

   cin >> val

   circle_node_t* xnode = new circle_node(val, seq++)

   xnode->next = tail->next

   tail->next = xnode

   tail = xnode

  }

  //调试一下看看有没有输出

  //circle_node_t* pp = head

  //if (pp)

  //{//

  // do

  // {//

  //  cout << pp->seq << ", "

  //  pp = pp->next

  // } while (pp != head)

  // cout << endl

  // do

  // {//

  //  cout << pp->val << ", "

  //  pp = pp->next

  // } while (pp != head)

  // cout << endl

  //}

  

  circle_node_t* p = head

  circle_node_t* q = tail

  //依次出圈

  int m = M-1

  while (1)

  {//

   if (m > N)

   {//

    m %= N //避免多次绕圈

   }

   for ( m m--)

   {//

    q = p

    p = p->next

   }

   q->next = p->next //删除p

   cout << p->seq << " "

   N--

   m = p->val-1

   delete p

   p = NULL

   if (N == 0)

   {//

    head = NULL

    break

   }

   else

   {

    p = q->next

   }

  }

  cout << endl

 }

}

最外面的输出一般是这样的

int loop cin >> loop

while(loop--)

{

//每次的处理

}

我就是建环的,别看网上那些虚的,我告诉你,这个专业建筑学和环境控制,什么流体力学,传热学,工程热力学是三大支柱,专业的前景很好,就业率不错,但是出来干这个专业的人不会太多,想靠专业吃饭的人最好的是进设计院,然后是空调厂家或建筑公司

望采纳

土木可以说是山东省第一,建筑学,城规,造价,热能都很好,不过他们的分数线都很高一本线以上外省更高!信工程、计算机这两类专业在我们学校算一般的专业,要不怎么叫建筑大学!只要与建筑挂钩不多的都不咋地!!希望对你有帮助,还望采纳!!!