Простая очередь - структура данных имеющая набор элементов и поддерживающая методы Поставить в очередь и Удалить из очереди. Название структуры говорит само за себя: элементы вносятся в набор и удаляются из него в порядке очереди (т.е. 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
Комментариев нет:
Отправить комментарий