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

Черги-масиви



Розглянемо реалізацію класів на прикладі черг і стеків, знайомих із лабораторній роботі 2. Але тут черги й стеки будуть створюватися не як динамічні структури на основі списків, а на основі статичних масивів.

Оголосимо константну змінну capacity, що задає максимальний розмір черги-масиву, і тип даних el, що визначає тип елементів масиву:

const int capacity = 128;

typedef int el;

Оголошення класу черги запишемо у вигляді:

class Queue {

public:

Queue(); //Конструктор

bool empty();

void enqueue(const el & value);

el front();

void dequeue();

private:

el arr[capacity]; //Масив елементів

int qFront; //Початок черги

qBack; //Кінець черги

};

Опишемо функції-члени класу Queue. Конструктор установлює початок і кінець черги на перший елемент масиву:

inline Queue:: Queue(){

qBack=0;

qFront=0;

}

Функція empty визначає, чи порожня черга:

inline bool Queue:: empty() {

return (qBack == qFront);

}

Функція enqueue додає елемент у чергу:

void Queue:: enqueue(const el & value) {

if (qBack == capacity){

cerr << "Queue is full!" << endl;

return;

}

arr[qBack]=value;

qBack++;

}

Функція dequeue видаляє елемент із черги:

void Queue:: dequeue() {

if (!empty()) {

qFront++;

} else {

cerr << "Queue is empty!" << endl;

}

}

Функція front повертає перший елемент черги:

el Queue:: front() {

if (!empty()) {

return (arr[qFront]);

} else {

cerr << "Queue is empty!" << endl;

return NULL;

}

}

Функція print, яка не входить в клас, друкує елементи черги:

void print(Queue QC) {

while (!QC.empty()) {

cout << " " << QC.front();

QC.dequeue();

}

cout << endl;

}





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



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