![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Розглянемо реалізацію класів на прикладі черг і стеків, знайомих із лабораторній роботі 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!