约瑟夫环0
#include <iostream>
using namespace std;
struct Student {
Student* next;
string Name, Gender, Class, Condition;
int Id, Age;
Student() {
next = NULL;
}
Student(string name, int id, string gender, int age, string c, string con) {
Name = name;
Id = id;
Gender = gender;
Age = age;
Class = c;
Condition = con;
next = NULL;
}
void Print() {
cout << Name << " " << Id << " ";
cout << Gender << " " << Age << " " << Class <<
" " << Condition << endl ;
}
};
class StuCircList {
private:
Student* head, *rear;
int length;
public:
StuCircList() {
head = new Student;
rear = new Student;
}
StuCircList(int n) {
length = n;
string name, gender, c, con;
int id, age;
cin >> name;
cin >> id;
cin >> gender;
cin >> age;
cin >> c >> con;
head = new Student(name, id, gender, age, c, con);
rear = head;
for (int i = 1; i < n; i++) {
cin >> name;
cin >> id;
cin >> gender;
cin >> age;
cin >> c >> con;
Student* stu = new Student(name, id, gender, age, c, con);
rear->next = stu;
rear = rear->next;
}
rear ->next = head;
}
Student* Locate(Student* s, int i) { //定位到第i个, i= 1 2 3
if (i <= 0 || i > length)
return NULL;
Student* current = s;
for (int j = 1; j < i; j++)
current = current->next;
return current;
}
void Game(int m) {
Student* temp = head;
while (length != 1 ) {
Student* pre = Locate(temp, m - 1);
for (int i = 1; i < m; i++) {
temp = temp->next;
}
pre->next = temp->next;
temp->Print();
delete temp;
length--;
temp = pre->next;
}
temp->Print();
}
void Print() {
Student* current = head;
for (int i = 0; i < length; i++) {
cout << current->Name << " " << current->Id << " ";
cout << current->Gender << " " << current->Age << " " <<
current->Class << " " << current->Condition << endl;
current = current->next;
}
}
};
int main() {
int m, n;
cin >> n >> m;
StuCircList scl(n);
scl.Game(m);
return 0;
}