क्यू (Queue) एक रैखिक डेटा संरचना है जो FIFO (First In, First Out) सिद्धांत पर कार्य करती है। इसका अर्थ है कि जो तत्व सबसे पहले जोड़ा जाता है, वही सबसे पहले निकाला भी जाता है। क्यू को समझने का सबसे सरल उदाहरण किसी टिकट काउंटर पर लगी कतार (line) है - सबसे पहले आया व्यक्ति सबसे पहले टिकट प्राप्त करता है। इसी प्रकार, डाकघर, बैंक या किसी दुकान पर लगी कतारें क्यू का जीवन से उदाहरण हैं। क्यू में तत्वों का प्रवेश एक सिरे पीछे (Rear/Tail) से होता है और निष्कासन दूसरे सिरे सामने (Front/Head) से होता है।
क्यू का उपयोग कंप्यूटर विज्ञान में अनेक स्थानों पर होता है, जैसे प्रिंटर स्पूलिंग (जहाँ प्रिंट कार्य क्रम से निष्पादित होते हैं), ऑपरेटिंग सिस्टम में प्रक्रिया अनुसूचन (process scheduling), मैसेज कतारें, और ब्रेडथ फर्स्ट सर्च (BFS) एल्गोरिथ्म।
Enqueue ऑपरेशन क्यू के पीछे (रियर) में नया तत्व जोड़ता है:
def enqueue(queue, element):
queue.append(element)
print(element, "क्यू में जुड़ा")
यहाँ append() विधि तत्व को सूची के अंत में जोड़ती है, जो क्यू का रियर है।
Dequeue ऑपरेशन क्यू के सामने (फ्रंट) से तत्व निकालता है:
def dequeue(queue):
if is_empty(queue):
print("क्यू खाली है (Underflow)")
return None
return queue.pop(0)
यहाँ pop(0) सूची का पहला तत्व (फ्रंट) निकालता है।
def is_empty(queue):
return len(queue) == 0
def front_element(queue):
if is_empty(queue):
return None
return queue[0]
def display(queue):
print("क्यू (फ्रंट से रियर):", queue)
queue = []
enqueue(queue, 10)
enqueue(queue, 20)
enqueue(queue, 30)
print(dequeue(queue)) # 10
print(dequeue(queue)) # 20
display(queue) # [30]
सामान्य क्यू में dequeue के बाद फ्रंट बढ़ता है और रिक्त स्थानों का उपयोग नहीं हो पाता, जिससे स्थान नष्ट होता है। इस समस्या को हल करने के लिए सर्कुलर क्यू का उपयोग किया जाता है, जिसमें अंतिम स्थान के बाद पहला स्थान आता है (वृत्ताकार क्रम)। इससे क्यू के सभी स्थानों का पूर्ण उपयोग होता है।
सर्कुलर क्यू में अगला सूचकांक इस सूत्र से प्राप्त होता है:
(सूचकांक + 1) % आकार
क्यू के भरे या खाली होने की स्थिति अलग करने के लिए विशेष ध्यान देना पड़ता है, क्योंकि दोनों में फ्रंट और रियर समान हो सकते हैं।
| विशेषता | स्टैक | क्यू |
|---|---|---|
| सिद्धांत | LIFO | FIFO |
| प्रवेश सिरा | शीर्ष | रियर |
| निष्कासन सिरा | शीर्ष | फ्रंट |
| पाइथन विधियाँ | append(), pop() | append(), pop(0) |
| उदाहरण | प्लेटों का ढेर | टिकट काउंटर की कतार |
प्राथमिकता क्यू में तत्वों को उनकी प्राथमिकता के अनुसार निकाला जाता है, न कि प्रवेश क्रम के अनुसार। सबसे अधिक (या निम्न) प्राथमिकता वाला तत्व सबसे पहले निकलता है। इसका उपयोग अस्पताल आपातकालीन विभाग, ऑपरेटिंग सिस्टम के कार्य अनुसूचन आदि में होता है।
import heapq
priority_queue = []
heapq.heappush(priority_queue, 30)
heapq.heappush(priority_queue, 10)
heapq.heappush(priority_queue, 20)
print(heapq.heappop(priority_queue)) # 10 - न्यूनतम प्राथमिकता
क्यू के ऑपरेशनों के परिणाम को चरणबद्ध रूप से समझना परीक्षा के कोड-आउटपुट प्रश्नों के लिए आवश्यक है:
queue = []
queue.append(5) # enqueue(5) → क्यू: [5]
queue.append(8) # enqueue(8) → क्यू: [5, 8]
queue.pop(0) # dequeue() → 5 निकला, क्यू: [8]
queue.append(3) # enqueue(3) → क्यू: [8, 3]
print(queue[0]) # फ्रंट = 8
print(queue) # [8, 3]
यहाँ प्रत्येक चरण में फ्रंट और रियर की स्थिति को ध्यान से देखना चाहिए। जब pop(0) किया जाता है तो फ्रंट से तत्व निकलता है और बाकी तत्व आगे सरक जाते हैं। इस प्रकार FIFO क्रम बना रहता है। अभ्यास के लिए विभिन्न क्रमों के enqueue/dequeue को हाथ से लिखकर हल करें, क्योंकि यह क्यू की समझ को गहरा करता है और परीक्षा में आत्मविश्वास देता है। इसी प्रकार सर्कुलर क्यू के प्रश्नों में फ्रंट और रियर के सूचकांकों की गणना modulo नियम से करनी चाहिए।
| ऑपरेशन | कार्य | सिरा |
|---|---|---|
| Enqueue | तत्व जोड़ना | रियर |
| Dequeue | तत्व निकालना | फ्रंट |
| Front/Peek | फ्रंट तत्व देखना | फ्रंट |
| isEmpty | क्यू खाली है या नहीं | - |
| Size | तत्वों की संख्या | - |
| प्रकार | विशेषता | उदाहरण उपयोग |
|---|---|---|
| रैखिक क्यू | FIFO | प्रिंटर स्पूलिंग |
| सर्कुलर क्यू | स्थान का पूर्ण उपयोग | मेमोरी बफर |
| प्राथमिकता क्यू | प्राथमिकता क्रम | CPU अनुसूचन |
| डबल-एंडेड क्यू (Deque) | दोनों सिरों से कार्य | स्लाइडिंग विंडो |
क्यू एक FIFO सिद्धांत पर आधारित रैखिक डेटा संरचना है जिसमें तत्व रियर से जुड़ते हैं और फ्रंट से निकलते हैं। पाइथन में इसे सूची की append() और pop(0) विधियों से कार्यान्वित किया जा सकता है। सर्कुलर क्यू स्थान का पूर्ण उपयोग करता है और प्राथमिकता क्यू तत्वों को प्राथमिकता के क्रम में निकालता है। प्रिंटर स्पूलिंग, प्रक्रिया अनुसूचन और BFS जैसे अनुप्रयोगों में क्यू का महत्वपूर्ण योगदान है। स्टैक के साथ क्यू के अंतर को स्पष्ट रूप से समझना परीक्षा में बहुत सहायक होता है। चरणबद्ध अभ्यास से क्यू की अवधारणाओं में पूर्ण दक्षता प्राप्त की जा सकती है।