Проблема возникает во 2 очереди. К примеру войнов 10, интервал 2 и после 9 война идет 1(что неправильно)
#include <iostream>
using namespace std;
struct Node
{
int m_item;
Node *m_next;
Node(int item, Node *next) { m_item = item, m_next = next; }
};
int main()
{
cout << "Voin: ";
int NumberOfElements = 0;
cin >> NumberOfElements;
cout << "M: "; // интервал
int interval;
cin >> interval; // ввод интервала
Node *first = new Node(1, 0);
first->m_next = first;
Node *tmp = first;
cout << "Deleted elements:" << endl;
for (int i = 2; i <= NumberOfElements; ++i)
{
tmp->m_next = new Node(i, first);
tmp = tmp->m_next;
}
while (tmp != tmp->m_next)
{
for (int i = 1; i < interval; ++i)
{
tmp = tmp->m_next;
}
Node *deleteNode = tmp->m_next;
tmp->m_next = tmp->m_next->m_next;
cout << tmp->m_item << endl;
delete deleteNode;
}
cout << "Last warrior:" << tmp->m_item << endl;
}