Fixed up to 6 (including)

This commit is contained in:
2024-12-14 13:35:13 +03:00
parent 42cb45db32
commit d07a6428a5
10 changed files with 94 additions and 168 deletions

84
task7.h
View File

@@ -1,4 +1,4 @@
#include <iostream>
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
@@ -13,46 +13,46 @@ namespace task7 {
Node* next;
};
Node* newNode(int key); //создает узел
Node* rand_list(int size); //создает список
void print_list(Node* head); //пишет элементы списка
Node* newNode(int key);
Node* rand_list(int size);
void print_list(Node* head);
bool is_list_empty(Node* head); //пишет, что список пуст, если подкинуть nullptr
void push_back(Node* head, int key); //поместить в конец
void push_forward(Node*& head, int key); //поместить в начало
void squeeze_in(Node* head, int pos, int key); //"всунуть" после элемента
bool is_list_empty(Node* head);
void push_back(Node* head, int key);
void push_forward(Node*& head, int key);
void squeeze_in(Node* head, int pos, int key);
void behead(Node*& head);
int list_size(Node* head); //узнать размер списка
int list_size(Node* head);
bool equal(Node* head1, Node* head2); //сравнивает списки
bool all_in(Node* head1, Node* head2); //проверяет, есть ли все элементы первого списка в другом
bool dupes_present(Node* head); //проверка на дубликаты
void head_to_end(Node*& head); //перемещает первый элемент в конец
void end_to_head(Node*& head); //перемещает последний элемент в начало
void merge(Node* head1, Node* head2); //переносит элементы списка 2 в конец списка 1
void reversed(Node*& head); //возвращает элементы массива в обрат. порядке
bool in_list(Node* head, int key); //ДЛЯ ЗАДАНИЯ ПОД БУКВОЙ З). Определяет, есть ли элемент в списке
void remove_dupes(Node*& head); //not implemented
bool equal(Node* head1, Node* head2);
bool all_in(Node* head1, Node* head2);
bool dupes_present(Node* head);
void head_to_end(Node*& head);
void end_to_head(Node*& head);
void merge(Node* head1, Node* head2);
void reversed(Node*& head);
bool in_list(Node* head, int key);
void remove_dupes(Node*& head); // not implemented
int init()
{
cout << "TASK #7" << endl;
setlocale(LC_ALL, "Russian");
cout << "В конце задания 6 ничего не предвещало беды\n";
cout << "В конце задания 6 ничего не предвещало беды\n";
int n1; cout << "Введите размер списка 1: "; cin >> n1;
int n1; cout << "Введите размер списка 1: "; cin >> n1;
Node* lst1 = newNode(0);
cout << "Введите числа:" << endl;
cout << "Введите числа:" << endl;
for (int i = 0; i < n1; i++)
{
int num; cin >> num;
push_back(lst1, num);
}
int n2; cout << "Введите размер списка 2: "; cin >> n2;
int n2; cout << "Введите размер списка 2: "; cin >> n2;
Node* lst2 = newNode(0);
cout << "Введите числа:" << endl;
cout << "Введите числа:" << endl;
for (int i = 0; i < n2; i++)
{
int num; cin >> num;
@@ -60,61 +60,61 @@ namespace task7 {
}
behead(lst1);
behead(lst2);
cout << "\n\nИмеем два списка: \n";
cout << "\n\nИмеем два списка: \n";
print_list(lst1);
print_list(lst2);
cout << "\n\n";
if (equal(lst1, lst2))
{
cout << "Списки совпадают";
cout << "Списки совпадают";
}
else
{
cout << "Списки не равны";
cout << "Списки не равны";
}
cout << "\n\n";
if (all_in(lst1, lst2))
{
cout << "Все элементы первого списка есть во втором";
cout << "Все элементы первого списка есть во втором";
}
else
{
cout << "Первый список имеет элементы, которых нет во втором";
cout << "Первый список имеет элементы, которых нет во втором";
}
cout << "\n\n";
if (dupes_present(lst1))
{
cout << "В списке есть дубликаты";
cout << "В списке есть дубликаты";
}
else
{
cout << "В списке нет дубликатов";
cout << "В списке нет дубликатов";
}
cout << "\n\n";
print_list(lst1);
cout << "Перенесем первый элемент списка 1 в конец : \n";
cout << "Перенесем первый элемент списка 1 в конец : \n";
head_to_end(lst1);
print_list(lst1);
cout << "\n\n";
print_list(lst2);
cout << "Перенесем последний элемент списка 2 в начало : \n";
cout << "Перенесем последний элемент списка 2 в начало : \n";
end_to_head(lst2);
print_list(lst2);
cout << "\n\n";
print_list(lst1);
print_list(lst2);
cout << "Соединим два списка: \n";
cout << "Соединим два списка: \n";
merge(lst1, lst2);
print_list(lst1);
cout << "Развернем список: \n";
cout << "Развернем список: \n";
reversed(lst1);
print_list(lst1);
cout << "Удалим дубликаты из списка: \n";
cout << "Удалим дубликаты из списка: \n";
remove_dupes(lst1);
print_list(lst1);
@@ -204,18 +204,6 @@ namespace task7 {
void behead(Node*& head)
{
/*
⢿⣿⣿⣿⣭⠹⠛⠛⠛⢿⣿⣿⣿⣿⡿⣿⠷⠶⠿⢻⣿⣛⣦⣙⠻⣿
⣿⣿⢿⣿⠏⠀⠀⡀⠀⠈⣿⢛⣽⣜⠯⣽⠀⠀⠀⠀⠙⢿⣷⣻⡀⢿
⠐⠛⢿⣾⣖⣤⡀⠀⢀⡰⠿⢷⣶⣿⡇⠻⣖⣒⣒⣶⣿⣿⡟⢙⣶⣮
⣤⠀⠀⠛⠻⠗⠿⠿⣯⡆⣿⣛⣿⡿⠿⠮⡶⠼⠟⠙⠊⠁⠀⠸⢣⣿
⣿⣷⡀⠀⠀⠀⠀⠠⠭⣍⡉⢩⣥⡤⠥⣤⡶⣒⠀⠀⠀⠀⠀⢰⣿⣿
⣿⣿⡽⡄⠀⠀⠀⢿⣿⣆⣿⣧⢡⣾⣿⡇⣾⣿⡇⠀⠀⠀⠀⣿⡇⠃
⣿⣿⣷⣻⣆⢄⠀⠈⠉⠉⠛⠛⠘⠛⠛⠛⠙⠛⠁⠀⠀⠀⠀⣿⡇⢸
⢞⣿⣿⣷⣝⣷⣝⠦⡀⠀⠀⠀⠀⠀⠀⠀⡀⢀⠀⠀⠀⠀⠀⠛⣿⠈
⣦⡑⠛⣟⢿⡿⣿⣷⣝⢧⡀⠀⠀⣶⣸⡇⣿⢸⣧⠀⠀⠀⠀⢸⡿⡆
⣿⣿⣷⣮⣭⣍⡛⠻⢿⣷⠿⣶⣶⣬⣬⣁⣉⣀⣀⣁⡤⢴⣺⣾⣽⡇
*/
Node* _head = head;
head=head->next;
delete _head;
@@ -393,4 +381,4 @@ namespace task7 {
}
head = result;
}
}
}