Структура даних ЧЕРГА

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

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

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

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Структури даних та алгоритми

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

Міністерство освіти і науки, молоді та спорту України Національний університет “Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 4 на тему: " Структура даних ЧЕРГА " з дисципліни: " Програмування. Частина III. Структури даних та алгоритми " Вибір варіанту: № варіанта = [(день народження) + (місяць народження) + (ASCII–код першої літери прізвища – велика латинська літера) ] % 20 + 1 (23 + 8 + 70 ) % 30 + 1 = 2 Львів – 2013 Мета роботи: Вивчення фундаментальної абстрактної структури даних - черги. Набуття практичних навичок побудови черги, дослідження динаміки її вмісту та використання черг для розв'язання прикладних задач. Постановка задачі: 2. Змоделювати чергу, в якій до опису черги додано дві змінні EMPTY та FULL замість функцій empty() та full() відповідно. Переписати основні функції роботи з чергою з врахуванням цих змінних. Показати динаміку вмісту черги. Після обробки всієї заданої вхідної послідовності перевірити, чи є в черзі три однакових елемента, що йдуть підряд. Код програми: #pragma once #include<cassert> #include<stdio.h> #include<tchar.h> #include<iostream> const int M = 100; template<class Item> class queue { private: Item INFO[M]; int count; public: queue( ); void pop( ); void push(const Item& entry); bool empty( ) const { return (count == 0); } Item front( ) const; int size( ) const { return count; } void show(); void muve(); bool full(){return (INFO[M-1] == M-1);}; void wipe_out(); bool same(); }; template<class Item> queue<Item>::queue( ) { count = 0; INFO[0] = 1; INFO[M-1] = 0; } template<class Item> Item queue<Item>::front( ) const { assert(!empty( )); return INFO[1]; } template<class Item> void queue<Item>::pop( ) { muve(); count--; } template<class Item> void queue<Item>::push(const Item& entry) { assert(!(count > M - 1)); ++count; INFO[++INFO[M-1]] = entry; } template<class Item> void queue<Item>::show() { std::cout <<"QUENE: "; for(int i = INFO[0]; i < INFO[M-1]+1; i++){ std::cout << INFO[i] <<" " ; } std::cout << std::endl; } template<class Item> void queue<Item>::muve() { for(int i = INFO[0]; i < INFO[M-1]; i++){ INFO[i] = INFO[i+1]; } --INFO[M-1]; } template<class Item> void queue<Item>::wipe_out() { for (int i=0; i<count; i++) { muve(); } count = 0; } template<class Item> bool queue<Item>::same() { bool b = false; for (int i=0; i<count-1; i++) if (INFO[i]==INFO[i+1]) { b = true; } return b; } using namespace std; int main() { queue<int> q; int v[M], m; int k = 0; cout <<"ENTER VALUE OF QUEUE TO CONTINUE OR TEXT TO EXIT..."<< std::endl; while(cin >> v[k++]) { m = k; } q.show(); for(k = 0; k < m; k++) { if (v[k]==0) { q.wipe_out(); q.show(); } if (v[k]>0) { q.push(v[k]); q.show(); } if (v[k]<0) { q.pop(); q.show(); } } cout <<"\nSIZE: "<< q.size() << endl; cout <<"EMPTY: "<< boolalpha << q.empty() << endl; cout <<"FULL: "<< boolalpha << q.full() << endl; cout <<"FRONT: "<< q.front() << endl; cout <<"THE SAME ELEMENTS IN QUEUE: "<< q.same() << endl; cin.get(); return 0; } Результат виконання програми:  Рис1. Ескіз вікна з результатом виконання програми Висновок: Виконавши дану лабораторну роботу, я навчився будувати та застосовувати абстрактні типи даних типу «Черга». Зрозумів як працює стек та які функції виконує.
Антиботан аватар за замовчуванням

23.12.2013 22:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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