среда, 22 июня 2011 г.

Data structures: Queue

Простая очередь - структура данных имеющая набор элементов и поддерживающая методы Поставить в очередь и Удалить из очереди. Название структуры говорит само за себя: элементы вносятся в набор и удаляются из него в порядке очереди (т.е. FIFO). Данный код демонстрирует две реализации очереди: на базе массива и на базе связного списка.

#ifndef SIMPLE_QUEUE #define SIMPLE_QUEUE // simple queue based on array template <typename ItemType> struct simple_arr_q     {         int QUEUE_SIZE;         int ITEMS_COUNT;         int head;         int position;         ItemType *arr_q;         simple_arr_q(int q_size):QUEUE_SIZE(q_size)         {             ITEMS_COUNT=0;                         head=0;             position=0;                         arr_q=new ItemType[QUEUE_SIZE];         };         void enqueue(ItemType Item)         {             if (ITEMS_COUNT==QUEUE_SIZE)             {                 std::cout << "Queue is full!" << std::endl;                 return;             };                         ITEMS_COUNT++;                         position = position % QUEUE_SIZE;                         arr_q[position++]=Item;         };         ItemType dequeue()         {             if (ITEMS_COUNT==0)             {                 std::cout << "Queue is empty!" << std::endl;             };                         head=head % QUEUE_SIZE;                         ITEMS_COUNT--;                         return arr_q[head++]; ;         };     }; // simple queue based on linked list template <typename ItemType> struct simple_queue {     linked_list<ItemType> *first;          linked_list<ItemType> *last;              int items_count;     simple_queue()     {         first=NULL;         items_count=0;     };     void enqueue(ItemType item)     {         linked_list<ItemType> *temp=last;         last=new linked_list<ItemType>(item);                   if(first==NULL)         {             first=last;         }         else         {             temp=(temp->Next=last);         };                 items_count++;     };     ItemType dequeue()     {         ItemType Item;                 Item=first->Item;                                 first=first->Next;         items_count--;         return Item;     }; }; #endif

Комментариев нет:

Отправить комментарий

Санкт-Петербург, июль 2021

Фактически был один день, поэтому публикую все так как есть, по порядку. Типичные виды Невы не выкладываю - приелось уже.  1. На следующий д...