Објавувам две за нијанса различни имплементации на податочната структура ред (анг. queue). Редот е оптимално имплементиран во поглед на искористување на расположливиот мемориски простор (кога ќе се дојде до крајниот индекс, пополнувањето почнува од нултиот, под услов да не е редот полн). Разлики во двете варијанти на имплементација :
1. Користи две стандардни променливи за почеток и крај на редот (poc и kraj) и испитувањето дали редот е полн (т.е. дали е завземен целиот расположлив мемориски простор) оди преку споредување дали kraj+1 = poc, т.е. преку испитување дали крајот „се залепил“ за почетокот од позади. Мааната на оваа имплементација е што редот ќе може да складира еден елемент помалку од својот капацитет. Сликовито, во кружниот ред секогаш ќе имаме „дупка“ која ќе кружи и која ќе ни покажува кај е почетокот, а каде крајот. Доколку ја нема оваа „дупка“ ќе дојде до конфузија на функцииите poln() и prazen() затоа што и двете би испитувале дали poc==kraj.
2. Користи дополнителен податочен член во редот - brel (број на елементи) и испитувањата poln() и prazen() се вршат преку директно испитување на оваа променлива. Предноста на имплементацијата со овој дополнителен податок е целосното искористување на капацитетот на редот. Дополнително, при push и pop, brel ќе се зголемува, односно намалува за 1.
Забелешка. Во двете варијанти е задржена малата компликација со дополнителниот тип tipEl како во аудиториските вежби кој всушност може да се замени со int. Почетниот капацитет на редот е поставен на 5. Можете да го менувате во предпроцесорските наредби (#define MAX 5).
3SEM AlStPo Queue Red
No comments:
Post a Comment