ЗВІТ
лабораторної роботи №5
з дисципліни “Структури даних та алгоритми”
на тему: “ Структура даних ЧЕРГА”
Варіант №22
МЕТА РОБОТИ
Вивчення фундаментальної абстрактної структури даних - черги. Набуття практичних навичок побудови черги, дослідження динаміки її вмісту та використання черг для розв'язання прикладних задач.
ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ
І. Завдання 1: Змоделюйте чергу (або дек) згідно з завданням. Перепишіть основні операції для роботи з чергою (деком), і продемонструйте їх застосування для операцій додавання і вилучення елементів в чергу (дек). Для цього задайте послідовність з N цілих чисел. Всі додатні числа послідовно заносяться в чергу (дек), кожне від’ємне число вилучає з черги (деку) один елемент (при роботі з деком, парні числа працюють з одним кінцем деку, а непарні – з іншим). Показувати всі зміни, що будуть відбуватись у черзі (деку).
ВИБІР ІНДИВІДУАЛЬНОГО ЗАВДАННЯ
Перша літера прізвища
Номер студента в списку групи
Варіант
А, І, С
Б, Ї, Ф
В, Й, У
Г, К, Т
Д, Л, Х
Е, М, Ц
Є, Н, Ч
Ж,О,Ш,Щ
З, П, Ю
И, Р, Я
10, 20, 30
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
9, 19, 29
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
8, 18, 28
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
7, 17, 27
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
6, 16, 26
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
5, 15, 25
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
4, 14, 24
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
3, 13, 23
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
2, 12, 22
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
1, 11, 21
І1
І2
І3
І4
І5
І6
І7
І8
І9
І10
4. Змоделюйте чергу, в якій реалізований такий механізм вилучення елемента з черги: початок черги завжди знаходиться в першому елементі масиву; при вилученні одного елемента з черги, всі решта елементів пересуваються на одну позицію ближче до початку масиву.
Хід роботи:
У ході лабораторної роботи я написав клас Чергу на основі якого і виконував поставлене завдання.
#ifndef TURN_H
#define TURN_H
#include <stddef.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<iomanip>
#include <string>
using namespace std;
class Turn
{
int index;
int *turn = new int[index];
public:
Turn();
Turn(int);
Turn(int*);
~Turn();
bool empty();//Повертає true, якщо черга порожня, і false у противному випадку
int size();//Повертає кількість елементів у черзі
void pop();//Видаляє елемент з черги, але не повертає його значення
int front();//Повертає значення елемента з початку черги, але не видаляє його
void push(int);//Поміщає новий елемент у кінець черги
};
/
Рис.1 Результат виконання програми.
Висновок: у ході лабораторної роботи я навчився працювати з типом даних черга.
Додаток
#ifndef TURN_H
#define TURN_H
#include <stddef.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<iomanip>
#include <string>
using namespace std;
class Turn
{
int index;
int *turn = new int[index];
public:
Turn();
Turn(int);
Turn(int*);
~Turn();
bool empty();//Повертає true, якщо черга порожня, і false у противному випадку
int size();//Повертає кількість елементів у черзі
void pop();//Видаляє елемент з черги, але не повертає його значення
int front();//Повертає значення елемента з початку черги, але не видаляє його
void push(int);//Поміщає новий елемент у кінець черги
};
#endif // TURN_H
#include "turn.h"
Turn::Turn()
{
}
Turn::Turn(int n)
{
index = n;
for(int i=0;i<index; i++)
{
turn[i]=NULL;
}
}
Turn::Turn(int* mas)
{
turn = mas;
}
bool Turn::empty()//Повертає true, якщо черга порожня, і false у противному випадку
{
for(int i= 0;i<index;i++)
{
if(turn[i]==NULL)
{
return false;
}
}
return true;
}
int Turn::front()//Повертає значення елемента з початку черги, але не видаляє його
{
int b=index;
for(int i=0;i<index;i++)
{
if(turn[i]==NULL);
else return turn[i];
}
return NULL;
}
void Turn::pop()//Видаляє елемент з черги, але не повертає його значення
{
int b=sizeof(turn);
int v=index;
for (int j = 0, k=1; j< index; j++,k++)
{
v=turn[k];
turn[j]=v;
}
}
void Turn::push(int varibl)//Поміщає новий елемент у кінець черги
{
for(int i=0;i<index;i++)
{
if(turn[i]==NULL)
{
turn [i] = varibl;
i=index;
}
}
}
int Turn::size()//Повертає кількість елементів у черзі
{
return index;
}
Turn::~Turn()
{
delete [] turn;
}
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<iomanip>
#include "turn.h"
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
//\\**************************************************
int index;
int varibl;
int value;
cout<<"Enter number element turn: ";
cin>>index;
varibl=index;
varibl++;
Turn obj(index);
int *mass = new int[varibl];
for (int i=0;i<varibl; i++)
{
mass[i]=0;
}
for (int j=0;j<index; j++)
{
cout<<"\n Enter element turn: ";
cin >> value;
varibl=value%2;
if(varibl==0)
{
obj.push(value);
}
else obj.pop();
for (int i=0;i<index; i++)
{
mass[i]=obj.front();
obj.pop();
}
for (int i=0;i<index; i++)
{
cout << mass[i] <<endl;
}
for (int i=0;i<index; i++)
{
obj.push(mass[i]);
}
}
delete [] mass;
return 0;
}