Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Инициализация очереди



#define Maxg  
float git[Maxg];
f rnt = = Maxg;  
rear = = Maxg;  

Операция empty

if(frnt == rear) empty=l; else empty =0;

Операция remove

if (empty == 1)    
  printf( "Очередь пуста") r
if (frnt = = Maxg-1) frnt = 0;
else frnt = frnt + 1;  
remove = g it[frnt];    

При реализации вставки необходимо контролировать ситуацию переполнения, при которой frnt = rear. Это же условие характеризует пустую очередь. Одно из решений проблемы — очередь растет до Maxg-\.

Операция insert

/^выделение места для элемента*/ if (rear == Maxg - 1) rear = 0; else rear = rear + 1;


/^проверка на переполнение */
if (rear = = frnt)  
printf( "Переполнение." );
git [rear] = x;  

Функции, реализующие операции работы с очередью

int empty()

{

if (frnt ==rear) return 1;

else return 0; }

float remove()

{

if(empty() == 1)

{

printf("Очередь пуста."); return 0.0;

} else

{

if(frnt == (Maxq-1)) frnt=0; else frnt++; return git[frnt]; } }

void insert(float x)

{

if(rear == (Maxq-1)) rear = 0;

else rear++;

if(rear == frnt)

printf("Переполнение!");

else git[rear]=x; }

Реализация очереди на базе однонаправленного связанного списка

Однонаправленный связанный список можно рассматривать в качестве очереди поскольку (рис. 2.12): а) определены начало и конец списка, б) задан порядок расположения узлов.


info

ptrn —■*

t

frnt

Начало очереди


info


ptrn


ptrn=NULL —■*! info ptrn

rear

Конец очереди






Дата публикования: 2014-11-04; Прочитано: 732 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...