Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
221_Avtosokhranenny.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
181.96 Кб
Скачать

Реалізація атд “Черга” при допомозі циклічного массиву

Для вставки нового елементу в чергу необхідно перемістити вказівник Q.rear на одну позицію за годинниковою стрілкою і записати елемент в цю позицію.

При видаленні елементу з черги достатньо просто перемістити вказівник Q.front за годинниковою стрілкою.

function addone (int i)           // додавання одиниці до позицій i

return (i mod maxlenght) + 1;    // в циклічному сенсі

  function MAKENULL (QUEUE Q)

  Q.front = 1;

Q.rear = maxleght;

  function EMPTY (QUEUE Q)

   if addone(Q.rear) == Q.front

   then return true;

   else return false;

function FRONT (QUEUE Q) {

 if EMPTY (Q)

 then error (“Черга пуста”);

 else Q.elements[Q.front] }

  function ENQUEUE (elementtype x, QUEUE Q)

    if addone(addone(Q.rear)) == Q.front

    then error (“Черга повна”);

     else

       Q.rear = addone (Q.rear)

       Q.elements[Q.rear] = x;

function DEQUEUE (QUEUE Q) {

 if EMPTY(Q)

 then error (“Черга пуста”);

else Q.front = addone(Q.front);

Тип даних “Відображення”. Оператори для роботи із АТД “Відображення”

Відображення – це функція, яка визначена на деякій множині елементів одного типу і яка приймає значення із множини елементів іншого типу.

MAKENULL (M) – робить відображення порожнім.

ASSIGN (M, d, r) – робить M(d) рівним r незалежно від того, як M(d) було визначено до цього

COMPUTE(M, d, r) – повертає значення true і присвоює змінній r значення M(d), якщо відображення M(d) є визначеним і повертає false в противному випадку.

Реалізація АТД “Відображення” при допомозі массиву

domaintype lastvalue = const

domaintype firstvalue = const

struct MAPPING

rangetype elem[lastvalue]

function MAKENULL (MAPPING M)

domaintype i;

for i from firstvalue to lastvalue do

M.elem = невизначений;

function ASSIGN (MAPPING M, domaintype d, rangetype r) {

M.elem[d] = r; }

function COMPUTE (MAPPING M, domaintype d, rangetype r) {

if M.elem[d] == невизначений)

then return false;

else

r = M.elem[d];

return true

Реалізація АТДВідображенняпри допомозі списків

function ASSING (MAPPING M, domaintype d, rangetype r)

elementtype x

position p

x.domain = d;

x.range = r;

p = FIRST(M)

while p ≠ END(M) do

if RETRIEVE (p, M).domain == d

then DELETE(p, M);

else p = NEXT(p, M);

INSERT (x, FIRST(M), M);

function COMPUTE (MAPPING M, domaintype d, rangetype r)

position p

p = FIRST (M)

while p ≠ END(M)

if RETRIEVE (p, M).domain == d

then

r = RETRIEVE(p,M).range

return true

p = NEXT(p, M);

return false

Тип даних “Множина”. Основні дії над множинами

Множиною називається деяка сукупність елементів, кожен елемент якої або сам є множиною або є примітивним елементом, який має назву - атом. Припускається, що всі елементи множини є різними, тобто в будь-якій множині немає двох копій одного і того самого елементу.

Об’єднанням множин А і В (АÈВ) називається множина, яка складається із елементів, що належать хоча б одній із множин А чи В.

 Перетином множин А і В (АÇВ) називається множина, яка складається із елементів, що належать і до множини А і до множини В.

Різницею множин А і В (А\В) називається множина, яка складається із елементів, що належать множині А, але не належать множині В.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]