🔴 Advanced  ·  Lesson 40

Queue

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 नहीं (front rear से बड़ा हो, या style अनुसार दोनों -1/0 से शुरू)।
  • Fullrear आख़िरी index पर पहुँच गया, तो enqueue की जगह नहीं।
⚠️ हमेशा जाँचें

हर enqueue से पहले full और हर dequeue से पहले empty जाँचें, बिल्कुल stack के overflow/underflow की तरह।

Array implementation

C Language
#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;
}
Output:
Removed: 10
Removed: 20

ध्यान दें 10 पहले निकला क्योंकि वह पहले अंदर गया — यही FIFO है, stack का उल्टा।

Queue बनाम stack

बिंदुQueueStack
नियम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 पहले बाहर।
  • enqueue rear पर जोड़ता है; dequeue front से हटाता है।
  • स्थिति front और rear (और अक्सर count) से track करें।
  • Enqueue से पहले full और dequeue से पहले empty जाँचें।
  • Circular queue खाली जगह दोबारा इस्तेमाल करता है; stack LIFO समकक्ष है।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

C में queue क्या है?
Queue एक data structure है जो FIFO नियम मानता है — First In, First Out। जो item पहले जोड़ा जाता है वही पहले निकलता है, ठीक line में खड़े लोगों की तरह: जो पहले आता है वही पहले सेवा पाता है। C में यह अक्सर एक array और दो markers front तथा rear से बनाया जाता है।
Enqueue और dequeue क्या हैं?
enqueue queue के rear (पीछे) एक नया item जोड़ता है, और dequeue front से item हटाता है। एक सिरे पर जोड़ना और दूसरे से हटाना ही queue को First In, First Out व्यवहार देता है।
Queue और stack में क्या अंतर है?
Stack LIFO (last in, first out) है और सिर्फ़ एक सिरे से काम करता है। Queue FIFO (first in, first out) है और दो सिरों से काम करता है — rear पर जोड़ें, front से हटाएँ। Stack प्लेटों के ढेर जैसा है; queue लोगों की line जैसा।
Queue में front और rear का क्या मतलब है?
front उस item का index है जो अगली बार हटेगा, और rear सबसे हाल में जोड़े गए item का index है। Enqueue करते ही rear आगे बढ़ता है; dequeue करते ही front आगे बढ़ता है।
सामान्य array queue जगह क्यों बर्बाद करता है?
बुनियादी array queue में, items dequeue होते ही front आगे बढ़ता रहता है और शुरुआती slots दोबारा इस्तेमाल नहीं होते, इसलिए शुरू में खाली जगह होने पर भी queue भरा दिख सकता है। एक circular queue indices को शुरुआत में वापस लपेटकर इसे हल करता है।
← Back to C Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.