Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи № 4
з дисципліни: “Програмування” на тему:
Структура даних „ЧЕРГА”
Варіант 6
1. Мета роботи
Навчитись працювати з структурою даних „ЧЕРГА”
2. Постановка задачі
Змоделюйте чергу (або дек) згідно з завданням.
Змоделюйте чергу, в якій задається початок черги і довжина черги (замість кінця черги). Чергу представити за допомогою масиву.
Перепишіть модуль, що містить набір основних операцій для роботи з чергою (деком), і продемонструйте його застосування для операцій додавання і вилучення елементів в чергу (дек). Для цього задайте послідовність з N цілих чисел. Всі додатні числа послідовно заносяться в чергу (дек), кожне від’ємне число вилучає з черги (деку) один елемент (при роботі з деком, парні числа працюють з одним кінцем деку, а непарні – з іншим). Показувати всі зміни, що будуть відбуватись у черзі (деку).
4. Текст програми
Клієнтська програма
#include <stdio.h>
#include <conio.h>
#include "aqueue.h"
void main()
{
queue Q;
infotype x;
Init(&Q);
printf("\nEnter elements in the queue:\n");
do
{ printf("Enter the new element(zero - break inputing elements): ");
scanf("%d",&x);
if (x)
{
if (x > 0) Insert(&Q,x);
else Remove(&Q);
}
Print(Q);
}
while (x);
getch();
return;
}
Інтерфейс
#define size 100
#define infotype int
#define printfspec "%d "
struct queuetype
{ infotype data[size];
int head , qsize;
} ;
typedef struct queuetype queue;
void Init(queue *q);
int Empty(queue q);
int Full(queue q);
void Insert(queue *q, infotype new_data);
infotype Remove(queue *q);
void Print(queue q);
Реалізація функцій
#include <stdio.h>
#include "aqueue.h"
void Init(queue *q)
{ (*q).qsize = 0;
(*q).head = 0;
return;
}
int Empty(queue q)
{ return q.qsize == q.head;
}
int Full(queue q)
{ return q.qsize == size;
}
void Insert(queue *q, infotype new_data)
{ if (Full(*q))
printf(" Error : Queue overflow ! \n");
else
{
(*q).data[(*q).qsize] = new_data;
(*q).qsize++;
}
return;
}
infotype Remove(queue *q)
{ if (Empty(*q))
{ printf(" Error : Queue underflow ! \n");
return 0;
}
else
return (*q).data[(*q).head++];
}
void Print(queue q)
{ int i;
printf("Elements of queue: ");
if (Empty(q))
printf("Queue is empty ! \n");
else
{ for (i=q.head;i<q.qsize;i++) printf(printfspec,q.data[i]);
printf("\n");
}
return;
}
5. Результати виконання програми
6. Динаміка вмісту “Черги”
7. Висновки
З допомогою цієї лабораторної роботи я навчився працювати з структурою даних “Черга ”.