Junior — Middle
Сіз кезек деректер құрылымы қалай жүзеге асырылғанын түсіндіре аласыз ба?
sobes.tech AI
AI-дан жауап
Кезек — бұл FIFO (бірін кіргізген — бірін шығарады) принципі бойынша жұмыс істейтін деректер құрылымы, яғни бірінші кірген элемент бірінші шығарылады.
Кезекті жүзеге асыру әдетте:
- Массив немесе байланысқан тізім элементтерді сақтау үшін.
- Екі көрсеткіш немесе индексті:
front(кезектің басы) жәнеrear(кезектің соңы).
Негізгі операциялар:
- enqueue — элементті кезектің соңына қосу;
- dequeue — элементті кезектің басынан шығару;
- peek/front — бірінші элементті қарау, шығарып алмай.
C++ тілінде массив пен айналмалы буферді пайдалану мысалы:
class Queue {
int* arr;
int capacity;
int front;
int rear;
int count;
public:
Queue(int size) {
arr = new int[size];
capacity = size;
front = 0;
rear = -1;
count = 0;
}
void enqueue(int item) {
if (count == capacity) throw std::overflow_error("Кезек толы");
rear = (rear + 1) % capacity;
arr[rear] = item;
count++;
}
int dequeue() {
if (count == 0) throw std::underflow_error("Кезек бос");
int item = arr[front];
front = (front + 1) % capacity;
count--;
return item;
}
int size() {
return count;
}
bool isEmpty() {
return count == 0;
}
~Queue() {
delete[] arr;
}
};
Мұндай тәсіл жадыны тиімді пайдаланып, операцияларды тұрақты уақыт ішінде орындауға мүмкіндік береді.