#include <iostream>
using namespace std;
struct Node{
unsigned id;
Node* next;
bool out;
Node* newCircle(int n);
void clear(){
Node* temp = this->next;
Node* ne = this->next = NULL;
while (temp != NULL){
ne = temp->next;
delete temp;
temp = ne;
}
}
};
typedef Node Circle;
Node* Node::newCircle(int n){
Node* temp = this;
for (int i = 1;i < n;++i){
temp->next = new Node;
temp->id = i;
temp->out = false;
temp = temp->next;
}
temp->id = n;
temp->out = false;
temp->next = this;
return this;
}
int main(void){
int n = 0, m = 0;
cin>>n>>m;
Circle a;
a.newCircle(n);
int count = 0;int now = 0;
Node* ptr = &a;
while (count < n){
if (!ptr->out)
++now;
else{
ptr = ptr->next;
continue;
}
if (m == now){
ptr->out = true;
cout<<ptr->id<<' ';
++count;now = 0;
}
ptr = ptr->next;
}
a.clear();//删去此处则可以AC
return 0;
}
NULL
改nullptr
一样会凉,求可靠的内存释放方法