Queue
Written and reviewed by Gagan Bhardwaj · Senior IT Faculty · 15+ years’ experience
Queue क्या है? (FIFO)
Queue एक data structure है जो एक सरल नियम मानता है: FIFO — First In, First Out। जो item पहले अंदर जाता है वही पहले बाहर आता है।
टिकट काउंटर की line सोचिए। जो पहले आता है उसे पहले सेवा मिलती है; नए लोग पीछे जुड़ते हैं। C में queue ठीक उसी line की तरह काम करता है — एक सिरे पर जोड़ें और दूसरे से हटाएँ। (तुलना करें C में stack से, जो LIFO है।)
मुख्य operations
| Operation | क्या करता है |
|---|---|
enqueue(x) | Item x को rear पर जोड़ना |
dequeue() | Front पर मौजूद item हटाना |
front | अगले हटने वाले item का index |
rear | आख़िरी जोड़े item का index |
Full और empty स्थितियाँ
- Empty — हटाने को कोई item नहीं (
frontrearसे बड़ा हो, या style अनुसार दोनों -1/0 से शुरू)। - Full —
rearआख़िरी index पर पहुँच गया, तो enqueue की जगह नहीं।
हर enqueue से पहले full और हर dequeue से पहले empty जाँचें, बिल्कुल stack के overflow/underflow की तरह।
Array implementation
#include <stdio.h>
#define SIZE 5
int queue[SIZE];
int front = 0, rear = -1, count = 0;
void enqueue(int x) {
if (count == SIZE) { printf("Queue full\n"); return; }
rear = (rear + 1);
queue[rear] = x;
count++;
}
int dequeue() {
if (count == 0) { printf("Queue empty\n"); return -1; }
int val = queue[front];
front++;
count--;
return val;
}
int main() {
enqueue(10); enqueue(20); enqueue(30);
printf("Removed: %d\n", dequeue()); // 10 (first in)
printf("Removed: %d\n", dequeue()); // 20
return 0;
}Removed: 10
Removed: 20
ध्यान दें 10 पहले निकला क्योंकि वह पहले अंदर गया — यही FIFO है, stack का उल्टा।
Queue बनाम stack
| बिंदु | Queue | Stack |
|---|---|---|
| नियम | FIFO (first in, first out) | LIFO (last in, first out) |
| जोड़ें | Rear पर | Top पर |
| हटाएँ | Front से | Top से |
| असली तस्वीर | लोगों की line | प्लेटों का ढेर |
आम गलतियाँ
- गलत सिरे से हटाना — queue front से हटाता है, rear से नहीं।
- Enqueue से पहले full या dequeue से पहले empty न जाँचना।
- सामान्य array queue में बर्बाद जगह अनदेखा करना (circular queue से ठीक करें)।
- हर operation के बाद
front,rearया count update करना भूलना।
इसे circular queue में बदलें ताकि खाली हुए front slots दोबारा इस्तेमाल हों: जब rear अंत पर पहुँचे, उसे (rear + 1) % SIZE से वापस 0 पर लपेटें। भरकर, कुछ हटाकर, फिर जोड़कर test करें।
सारांश
- Queue FIFO मानता है — पहला item पहले बाहर।
enqueuerear पर जोड़ता है;dequeuefront से हटाता है।- स्थिति
frontऔरrear(और अक्सर count) से track करें। - Enqueue से पहले full और dequeue से पहले empty जाँचें।
- Circular queue खाली जगह दोबारा इस्तेमाल करता है; stack LIFO समकक्ष है।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
C में queue क्या है?
front तथा rear से बनाया जाता है।Enqueue और dequeue क्या हैं?
enqueue queue के rear (पीछे) एक नया item जोड़ता है, और dequeue front से item हटाता है। एक सिरे पर जोड़ना और दूसरे से हटाना ही queue को First In, First Out व्यवहार देता है।Queue और stack में क्या अंतर है?
Queue में front और rear का क्या मतलब है?
front उस item का index है जो अगली बार हटेगा, और rear सबसे हाल में जोड़े गए item का index है। Enqueue करते ही rear आगे बढ़ता है; dequeue करते ही front आगे बढ़ता है।सामान्य array queue जगह क्यों बर्बाद करता है?
front आगे बढ़ता रहता है और शुरुआती slots दोबारा इस्तेमाल नहीं होते, इसलिए शुरू में खाली जगह होने पर भी queue भरा दिख सकता है। एक circular queue indices को शुरुआत में वापस लपेटकर इसे हल करता है।