Структура даних СТЕК

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

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

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КІ-25

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ  Лабораторна робота № 3 Структура даних СТЕК 1 Мета роботи: Вивчення фундаментальної абстрактної структури даних стек. Набуття практичних навичок побудови стека, дослідження динаміки його вмісту та використання стеків для розв'язання прикладних задач. 2 Постановка задачі: Написати програму для послiдовного зберiгання трьох стекiв в масивi з N елементiв (стеки розміщуються в масиві рівномірно один за одним). На вході задаються пари цiлих чисел (i,j), де 1 ( і ( 3 , j ( 0. Число j>0 пари (i,j) додається в i-ий стек; число j<0 пари (i,j) не використовується, але один елемент вилучається зі стеку. Після обробки всієї заданої вхідної послідовності знайти в якому стеку сума всіх парних чисел буде найменьшою. 3 Алгоритм роз’вязку задачі: Спочатку по черзі вносимо в масив з N елементів 3 стеки. На вході задаю пари цiлих чисел (i,j), де 1 ( і ( 3 , j ( 0. Число j>0 пари (i,j) додаю в i-ий стек; число j<0 пари (i,j) не використовується, але один елемент вилучаю зі стеку. Після обробки всієї заданої вхідної послідовності знахожу в якому стеку сума всіх парних чисел буде найменьшою. 4 Динаміка вмісту стеку: 5 Результати виконання програми:  Висновки: На цій лабораторній роботі я ознайомився з cтруктурою даних стек. Дослідив принципи і методи роботи зі стеком. Додатки: #include<stdio.h> #include<conio.h> #include<math.h> #include<string> using namespace std; #define n 10 int stk[n]={0}; int k=0,l=n/2,m=(n/3)*2; void push(int b,int a) { if (b==1) { if (k<n/3) { stk[k]=a; k++; } else printf("\nStack l overload\n"); } else if (b==2) { if (l<(n/3)*2) { stk[l]=a; l++; } else printf("\nStack 2 overload\n"); } else if (b==3) { if (m<n) { stk[m]=a; m++; } else printf("\nStack 3 overload\n"); } } void pop(int b) { if (b==1) { if (k>0) k--; else printf("\nStack 1 underflow\n"); } else if (b==2) { if (l>(n/3)) l--; else printf("\nStack 2 underflow\n"); } else if (b==3) { if (m>(n/3)*2) m--; else printf("\nStack 3 underflow\n"); } } int top(int b) { if (b==1) return stk[k-1]; else if (b==2) return stk[l-1]; else if (b==3) return stk[m-1]; } bool empty(int b) { if (b==1) { return (!(bool)k); } else if (b==2) { return (!(bool)(l>((10/3)))); } else if (b==3) { return (!((bool)(m>(n/3)*2))); } } bool full(int b) { return !empty(b); } void print() { for(int i=0;i<n;i++) printf("%d ",stk[i]); printf("\nk=%d l=%d m=%d\n",k,l,m); } void main() { int g[2][7]={{1,3,2,1,2,3,2},{2,8,3,6,8,7,1}}; for (int i=0;i<7;i++) { if (g[1][i]>0) push(g[0][i],g[1][i]); else pop(g[0][i]); print();} int sum1=0,sum2=0,sum3=0; while (!(empty(1))){ if (top(1)%2==0) sum1+=top(1); pop(1);} while (!(empty(2))){ if (top(2)%2==0) sum2+=top(2); pop(2);} while (!(empty(3))){ if (top(3)%2==0) sum3+=top(3); pop(3);} if (sum1>sum2 && sum1>sum3) printf("\nmax1=%d",sum1); else if (sum2>sum1 && sum2>sum3) printf("\nmax2=%d",sum2); else printf("\nmax3=%d",sum3); getch(); }
Антиботан аватар за замовчуванням

25.11.2012 18:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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