Построить класс для работы с односвязным списком. Элементы списка – целые числа. Сформировать список, упорядочить элементы списка по возрастанию, используя сортировку: a) методом выбора; б) методом пузырька; в) методом вставки. С++
#include <iostream>
using namespace std;
class LinkedList {
private:
struct Node {
int data;
Node* next;
};
Node* head;
public:
LinkedList() {
head = NULL;
}
void addNode(int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = head;
head = newNode;
}
void printList() {
Node* temp = head;
while(temp) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
void selectionSort() {
Node* current = head;
while(current) {
int minValue = current->data;
Node* minNode = current;
Node* temp = current->next;
while(temp) {
if(temp->data < minValue) {
minValue = temp->data;
minNode = temp;
}
temp = temp->next;
}
int tempValue = current->data;
current->data = minNode->data;
minNode->data = tempValue;
current = current->next;
}
}
void bubbleSort() {
bool swapped = true;
Node* current;
Node* last = NULL;
while(swapped) {
swapped = false;
current = head;
while(current->next != last) {
if(current->data > current->next->data) {
int tempValue = current->data;
current->data = current->next->data;
current->next->data = tempValue;
swapped = true;
}
current = current->next;
}
last = current;
}
}
void insertionSort() {
Node* i = head->next;
while(i) {
Node* j = head;
while(j != i) {
if(i->data < j->data) {
int tempValue = i->data;
i->data = j->data;
j->data = tempValue;
}
j = j->next;
}
i = i->next;
}
}
};
Метод selectionSort() сортирует список с использованием метода выбора. Этот метод проходит по списку, ищет самый маленький элемент и меняет его местами с первым элементом списка. Затем проходит по оставшейся части списка и находит второй самый маленький элемент, меняет его со вторым элементом списка и так далее до тех пор, пока список не будет отсортирован.
Метод bubbleSort() сортирует список с использованием метода пузырька. Этот метод проходит по списку и сравнивает соседние элементы. Если элементы находятся в неправильном порядке, они меняются местами. Затем метод проходит по списку снова, сравнивая соседние элементы, и повторяет этот процесс до тех пор, пока список не будет отсортирован.
Метод insertionSort() сортирует список с использованием метода вставки. Этот метод сортирует элементы по одному. Он начинает с первого элемента списка и считает, что этот элемент уже отсортирован. Затем он переходит ко второму элементу списка и вставляет его в правильную позицию в первой части списка. Затем он переходит к третьему элементу списка и вставляет его в правильную позицию в первых двух элементах списка и так далее, пока он не дойдет до конца списка.
Для того, чтобы сформировать и отсортировать список, можно использовать следующий код:
int main() {
LinkedList myList;
myList.addNode(5);
myList.addNode(3);
myList.addNode(9);
myList.addNode(1);
myList.addNode(4);
myList.addNode(2);
cout << "Original list: ";
myList.printList();
cout << "Selection sorted list: ";
myList.selectionSort();
myList.printList();
cout << "Bubble sorted list: ";
myList.bubbleSort();
myList.printList();
cout << "Insertion sorted list: ";
myList.insertionSort();
myList.printList();
return 0;
}
В результате выполнения программы на экран будет выведен отсортированный список, упорядоченный тремя разными методами: методом выбора, методом пузырька и методом вставки.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет