Динамічні структури даних. Алгоритми оброблення стеку.

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Задача
Предмет:
Інші

Частина тексту файла (без зображень, графіків і формул):

ТР-15 Фундамент Даніїл Варіант – 15 Практичне заняття (25 травня). Тема: “Динамічні структури даних. Алгоритми оброблення стеку.” Завдання: Було обрано 2 завдання: / / Результат виконання: / / Посилання на Replit: https://replit.com/join/prrsnzhbuu-tr-15fundamient Копія коду: #include<iostream> #define SIZE 20 using namespace std; struct Node { int data; struct Node* next; }; struct Node* head; class stack { int size; public: void push(struct Node New); struct Node pop(); int isEmpty(); stack(); void print(); void deleteMax(); void deleteMin(); int getsize(); }; int stack::getsize(){return size;} void stack::print() { struct Node* temp = head; if (head == NULL) cout << "Stack is empty!"; else { cout << head->data << " "; while (temp->next != NULL) { temp = temp->next; cout << temp->data << " "; } } cout << endl; } int stack::isEmpty() { return (head == NULL ? 1 : 0); } void stack::push(struct Node New) {//push to the top of the stack if (isEmpty()) { head = new struct Node; head->data = New.data; head->next = NULL; } else { struct Node *temp = head; while (temp->next != NULL) temp = temp->next; struct Node *t = new struct Node; t->data = New.data; t->next = NULL; temp->next = t; } size++; } void stack::deleteMax() { if (isEmpty()) { cout << "Stack is empty!"; } else if(size == 1) { head = NULL; } else { struct Node *temp = head->next; struct Node *temp2 = head; while(temp->next != NULL) { if(temp2->data < temp->data) { temp2 = temp; } temp = temp->next; } struct Node *temp3; while(temp2->next != NULL) { temp2->data = temp2->next->data; if(temp2->next->next==NULL) temp3=temp2; temp2 = temp2->next; } temp3->next = NULL; } } void stack::deleteMin() { if (isEmpty()) { cout << "Stack is empty!"; } else if(size == 1) { head = NULL; } else { struct Node *temp = head->next; struct Node *temp2 = head; while(temp->next != NULL) { if(temp2->data > temp->data) { temp2 = temp; } temp = temp->next; } struct Node *temp3; while(temp2->next != NULL) { temp2->data = temp2->next->data; if(temp2->next->next==NULL) temp3=temp2; temp2 = temp2->next; } temp3->next = NULL; } } struct Node stack::pop() { size--; if (!isEmpty()) { struct Node* temp = head; struct Node temp2; if (temp->next == NULL) { struct Node t = *head; head = NULL; return t; } else { while (temp->next->next != NULL) temp = temp->next; temp2 = *temp->next; temp->next = NULL; return temp2; } } else cout << "Stack is empty.\n"; } stack::stack() { head = NULL; size=0; } int main() { stack s; int ch = 1; while (ch != 0) { struct Node temp; int num, max, min; cout << "Stack:\n1.Push\n2.Find and delete max element\n3.Find and delete min element\n4.Print stack.\n0.Exit\n"; cin >> ch; switch (ch) { case 0: return 0; case 1: cout << "Enter a num to push "; cin >> num; temp.data = num; s.push(temp); break; case 2: s.deleteMax(); break; case 3: s.deleteMin(); break; case 4: s.print(); break; default: cout << "Bad option\n"; } } }
Антиботан аватар за замовчуванням

03.05.2023 19:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!