ֆհαδoᵂ☄ᴷίʆʆer
Знаток
(368)
3 месяца назад
#include <iostream>
#include <string>
using namespace std;
struct Node {
string name;
Node* next;
};
class CircularLinkedList {
private:
Node* head;
public:
CircularLinkedList() : head(nullptr) {}
void insert(string name) {
Node* newNode = new Node;
newNode->name = name;
if (head == nullptr) {
head = newNode;
head->next = head;
}
else {
Node* temp = head;
while (temp->next != head) {
temp = temp->next;
}
temp->next = newNode;
newNode->next = head;
}
}
void transferStudents(int L, int K) {
if (head == nullptr || head->next == head) {
cout << "Error: Not enough students in the groups" << endl;
return;
}
Node* current = head;
int count = 1;
while (count < L) {
current = current->next;
count++;
}
Node* newHead = current->next;
current->next = newHead->next;
current = newHead;
while (current->next != newHead) {
current = current->next;
}
Node* temp = head;
while (K > 1) {
temp = temp->next;
K--;
}
newHead->next = temp->next;
temp->next = newHead;
}
void display() {
if (head == nullptr) {
cout << "List is empty" << endl;
return;
}
Node* temp = head;
do {
cout << temp->name << " ";
temp = temp->next;
} while (temp != head);
cout << endl;
}
};
int main() {
CircularLinkedList group1, group2;
group1.insert("Alice");
group1.insert("Bob");
group1.insert("Charlie");
group1.insert("David");
group1.insert("Emma");
group2.insert("Mike");
group2.insert("Nancy");
group2.insert("Oliver");
cout << "Group 1 before transfer: ";
group1.display();
cout << "Group 2 before transfer: ";
group2.display();
int L = 2; // Number of students to transfer
int K = 1; // Place to insert in group 2
group1.transferStudents(L, K);
cout << "Group 1 after transfer: ";
group1.display();
cout << "Group 2 after transfer: ";
group2.display();
return 0;
}
держи прогу на с++ которая выполнит твои условия
Программа должна формировать и выводить на экран исходные списки, производить с ними действия согласно варианту и выводить результат. Даны 2 кольцевых списка, содержащие фамилии студентов 2-х групп. Перевести L студентов из 1-й группы во вторую. Число пересчета - К.