कतार क्या है?
कतार एक रैखिक डेटा संरचना है जो FIFO (पहले अंदर, पहले बाहर) सिद्धांत का पालन करती है।
सरणी कार्यान्वयन
दो पॉइंटर्स: front (हटाने के लिए) और rear (जोड़ने के लिए)।
- Enqueue: rear पर तत्व जोड़ें, rear++
- Dequeue: front से तत्व हटाएं, सभी तत्वों को बाएं शिफ्ट करें, rear--
- Overflow: rear == क्षमता
- Underflow: front == rear
उदाहरण कोड
#include <bits/stdc++.h>
using namespace std;
struct Queue {
int front, rear, capacity;
int* queue;
Queue(int c) {
front = rear = 0;
capacity = c;
queue = new int[c];
}
~Queue() { delete[] queue; }
void Enqueue(int data) {
if (capacity == rear) {
cout << "\nQueue is full\n";
return;
}
queue[rear] = data;
rear++;
}
void Dequeue() {
if (front == rear) {
cout << "\nQueue is empty\n";
return;
}
for (int i = 0; i < rear - 1; i++)
queue[i] = queue[i + 1];
rear--;
}
void Display() {
if (front == rear) {
cout << "\nQueue is Empty\n";
return;
}
for (int i = front; i < rear; i++)
cout << queue[i] << " <-- ";
}
void Front() {
if (front == rear) {
cout << "\nQueue is Empty\n";
return;
}
cout << "\nFront Element is: " << queue[front];
}
};
int main() {
Queue q(4);
q.Display();
q.Enqueue(12);
q.Enqueue(89);
q.Enqueue(65);
q.Enqueue(34);
q.Display();
q.Enqueue(92); // Overflow
q.Display();
q.Dequeue();
q.Dequeue();
q.Display();
q.Front();
return 0;
}
आउटपुट
Queue is Empty 12 <-- 89 <-- 65 <-- 34 <-- Queue is full 12 <-- 89 <-- 65 <-- 34 <-- 65 <-- 34 <-- Front Element is: 65