Динамічні структури даних. Циклічна черга. Функції та процедури, що працюють з циклічною чергою, страница 2

Динамічні структури - структури даних, розмір яких (об'єм пам'яті, що вони займають) може змінюватись у процесі виконання програми.          Для організації таких структур використовуються динамічні змінні, які створюються та знищуються в процесі виконання програми.            Характеризуються:        1. Ці змінні явно не описуються, до них неможливо звернутись за допомогою ідентифікатора.           2. Пам'ять для цих змінних не виділяється під час формування коду програми. Вона виділяється у спеціальній області оперативної пам'яті - heap-області (динамічній пам'яті) - тільки під час виконання програми (звідки і назва - динамічні змінні).        3. Доступ до таких змінних виконується за допомогою покажчиків (чи посилань), які стають активними після визначення динамічного об'єкту та містять адресу у вигляді <сегмент>:<зміщення> Покажчики можуть містити будь-яку адресу: статичних даних, фрагменту коду програми, стеку і т.і.).          Тип покажчик        Type <ідентифікатор>=^<базовий тип>; <базовий тип> - визначає тип елементів, на які буде вказувати покажчик          Тип покажчик - визначає множину значень дискретних змінних визначенного типу, на які може посилатись відповідний покажчик.  Опис базового типу не обов'язково повинен передувати опису покажчика, але повинен міститись у тому ж розділі описування типів.  З      вернутись до динамічних змінних можна тільки через покажчик (а не через ідентифікатор):        Структури, побудовані на базі покажчиків:  1. Масиви покажчиків  2. Лінійні та циклічні однозв'язані списки, стек, черга,дек  3. Лінійні двозв'язані списки  4. Дерева

Черга - Це інформаційна структура, в якій для додавання елементів доступний тільки один кінець, званий хвостом, а для видалення - другий, званий головою. В англомовній літературі для позначення черг досить часто використовується абревіатура FIFO (first-in-first-out - перший увійшов - перший вийшов). Черга по суті односпрямований список, тільки додавання і виключення елементів відбувається на кінцях списку.

Така черга називається простою чергою. Однак така черга має деякі недоліки, а саме: фіксований розмір, який не можна змінити в процесі роботи з чергою, можливість втрати даних при переповненні черги, оскільки не можна продовжувати запис даних до заповненої черги, поки не будуть прочитані всі елементи. Лише після того, як буде прочитаний останній елемент черги, до неї можна знов записувати дані, починаючи з першого елементу. Цього можна уникнути, створюючи, в разі необхідності, нові черги в динамічному режимі. Але при такому підході не досить ефективно використовується пам’ять. Можна розробити безрозмірну чергу на основі списку. Деяким компромісним варіантом, що покращує використання пам’яті і, при цьому, досить просто реалізується є використання циклічних черг.

Циклічні черги мають таку ж саму структуру, як і прості черги з однією відмінністю. Ця відмінність полягає в тому, що після заповнення черги запис знов починається з першого елементу черги при умові, що цей елемент уже зчитано. Далі запис продовжується, як і в звичайній черзі при умові, що відповідні елементи черги уже прочитані. При правильному підборі розміру черги з урахуванням швидкості запису й зчитування даних практично можна уникнути проблем з переповненням черги.


2 ПРОГРАМНА РЕАЛІЗАЦІЯ ПРОЕКТУ

2.1     Вибір, уявлення і опис структур даних

2.2.1  Визначення елемента циклічною чергою

Елемент черги – це структура типу gidmetsl;

Опис елементу :

struct gidmetsl

{float WaterTemperature;

float AirTemperature;