Структура даних Черга

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

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

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

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Програмування частина 4 Технологія системного програмування

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

Міністерство освіти і науки, молоді та спорту України Національний університет „Львівська політехніка” Звіт з лабораторної роботи № 4 з дисципліни: “Програмування (частина 3)” на тему: “ Структура даних Черга ” Мета роботи: Вивчення фундаментальної абстрактної структури даних - черги. Набуття практичних навичок побудови черги, дослідження динаміки її вмісту та використання черг для розв'язання прикладних задач. Постановка задачі: Змоделювати чергу або дек на базі статичного масиву згідно з завданням. Переписати основні операції для роботи з чергою (push, pop, front, empty, full) або деком (push_left, push_right, pop_left, pop_right, front_left, front_right, empty, full) і продемонструвати правильність їх виконання. Для цього (якщо в завданні не вказано інший спосіб) в програмі на вході задати послідовність з К (К>10) цілих чисел (числа вводити з клавіатури). Всі додатні числа послідовно заносити в чергу (дек), кожне від’ємне число має вилучати з черги (деку) один елемент (при роботі з деком, парні числа працюють з правим кінцем деку, а непарні – з лівим). Виводити на екран динаміку вмісту черги (деку) під час обробки заданої послідовності. Змоделювати циклічну чергу, в якій реалізований такий механізм додавання нового елемента: якщо досягнутий кінець масиву, то новий елемент додається в перший елемент масиву, якщо це можливо. Після обробки всієї заданої вхідної послідовності перевірити, чи всі числа у черзі будуть парними, чи ні. Алгоритм розв’язання задачі: main.cpp #include <iostream> #include <stdlib.h> #include <string.h> #include <conio.h> #include <windows.h> const int CAPACITY=5; using namespace std; template <typename _data> class queue{ _data array [CAPACITY]; int first; int last; int size; public: queue(void) { size=0, first=0,last=-1; for(int i=0;i<CAPACITY;++i) array[i]=0; } int get_first(void){return first;} int get_last(void){ return last;} int get_size(void){ return size;} void push (int x) { if(size<CAPACITY) { last++,size++; if(last==CAPACITY) last=0; array[last]=x; } else cerr<<"Error: Queue is full!"<<endl; } void pop(void) { if(size!=0) { first++,size--; if(first==CAPACITY) first=0; } else cerr<<"Error: Queue is empty!"<<endl; } _data front (void) {return data[first];} bool empty(void){ return size ;} void show (void); void show_array(void); }; template<typename data> void queue <data>::show(void){ for(int i=first, j=0; j<size;++i, ++j) { if(i==CAPACITY) i=0; cout<<array[i]<<' '; if(i==last) break; } cout<<endl; } int main() { setlocale(LC_ALL,"ukr"); queue <int> object; cout<<"Тестування циклiчної черги."<<endl; cout<<"Введiть додатнi числа для додавання їх до черги, вiд'ємнi для виштовхування числа з черги або нуль для виходу."<<endl; while(true) { int number; cout<<"К = "; cin>>number; if(number<0) object.pop(); else if(number>0) object.push(number); else break; cout<<endl<<"Стан черги: "; object.show(); cout<<endl<<"Iндекс першого елемента "<<object.get_first()<<endl; cout<<"Iндекс останнього елемента "<<object.get_last()<<endl; cout<<"Розмiр черги "<<object.get_size()<<endl<<endl; } } Результати виконання програми: Висновок: В результаті виконання лабораторної роботи я освоїв фундаментальну абстрактну структуру даних черга, дослідження динаміки його вмісту та використав ці знання для виконання прикладних програм.
Антиботан аватар за замовчуванням

04.06.2014 18:06-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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