सीधे मुख्य सामग्री पर जाएं

Queue Data Structure in Hindi / क्यू डाटा स्ट्रक्चर

Queue एक प्रकार का non-primitive और linear डाटा स्ट्रक्चर है जो FIFO (First In First Out) के सिद्धांत पर कार्य करता है. अर्थात queue में जो भी element पहले में प्रवेश करता है वो element सबसे पहले बाहर आता है, इस प्रवित्ति के कारण इसे FIFO डाटा स्ट्रक्चर कहतें हैं.

उदाहरण :
  • टिकेट काउंटर पर लगी लाइन जिसमे जो व्यक्ति पहले लाइन में आता है वो पहले टिकेट प्राप्त करता है.
  • टोल टैक्स पर लाइन में खड़ी गाड़ियाँ. इत्यादी.
क्यू का चित्रण:



उपरोक्त चित्र में queue को array के माध्यम से प्रदर्शित किया गया है. यहाँ पर:
  • FRONT : ये queue के पहले element को प्रदर्शित करता है. ये वो छोर होता है जहाँ से कोई element डिलीट होगा.
  • REAR : ये queue के अंतिम element को प्रदर्शित करता है. ये वो छोर होता है जहाँ पर कोई element प्रवेश करता है.
  • क्यू में किसी भी समय elements की संख्या  REAR - FRONT + 1 होगी.
  • प्रारंभ में REAR का मान -1 तथा FRONT का मान 0 रखतें हैं.
  • यदि किसी स्थिति में  REAR < FRONT , अर्थात REAR का मान FRONT से कम है तो क्यू empty/खाली होगा.
 क्यू ऑपरेशन:
 १. Insert (इन्सर्ट)/enqueue(एनक्यू ) : इस ऑपरेशन के द्वारा क्यू के REAR छोर पर एक element इन्सर्ट किया जाता है.
 २. Delete (डिलीट)/dequeue(डीक्यू) : इस ऑपरेशन के द्वारा FRONT छोर से एक element डिलीट किया जाता है.
 ३. Empty : इस ऑपरेशन के द्वारा हम ये जाँच करते हैं कि क्यू में रिक्त स्थान है या नहीं. यदि empty क्यू से element को डिलीट करने का प्रयास किया जाता है तो ये परिघटना क्यू underflow कहलाती है. क्यूंकि empty क्यू से element डिलीट नही किया जा सकता.

Insert (इन्सर्ट)/enqueue(एनक्यू ) ऑपरेशन सम्पादित करने के चरण:  क्यू में element इन्सर्ट करने के चरण इस प्रकार हैं-
  • सबसे पहले क्यू ओवरफ्लो की जांच करतें हैं .
  • यदि क्यू ओवरफ्लो होता है, element को इन्सर्ट नही किया जा सकता.
  • और यदि क्यू ओवरफ्लो नहीं है तो हम REAR के मान में 1 जोड़ देतें हैं जिससे REAR क्यू में खाली स्थान को इंगित करे.
  • अब REAR द्वारा खाली स्थान में element इन्सर्ट कर देतें हैं.
   

if( REAR == MAXSIZE-1 ){
printf("Queue Overflow\n");
}
else{
REAR = REAR + 1;
queue[REAR] = element;
}

व्याख्या: चरण 1 में हम सबसे पहले क्यू ओवरफ्लो की जांच करेंगें, अगर REAR == MAXSIZE-1, अर्थात REAR का मान स्टैक के MAXSIZE के बराबर है तो क्यू में कोई और element प्रवेश नहीं कर सकता. चरण 2 में overflow की जांच अगर सत्य होती है तो स्क्रीन पर "Queue Overflow" प्रिंट करेगा. अगर चरण 2 में overflow नहीं होता है तो चरण 6 run करेगा और REAR का मान 1 बढ़ जायेगा. चरण 7 में REAR पर element प्रवेश कर जायेगा.

Delete(डिलीट)/dequeue(डीक्यू) ऑपरेशन सम्पादित करने के चरण:  क्यू से element डिलीट/डीक्यू करने के चरण इस प्रकार हैं-
  • सबसे पहले क्यू अंडरफ्लो की जांच करतें हैं .
  • यदि क्यू अंडरफ्लो होता है अर्थात क्यू में कोई element उपस्थित नहीं इसलिए डिलीट ऑपरेशन सम्पादित नहीं किया जा सकता.
  • और यदि क्यू अंडरफ्लो नहीं है तो हम temp में स्टैक के REAR element को स्टोर कर लेते है.
  • अब REAR के मान से 1 बढ़ा देतें हैं.
  • अब temp के मान को return कर देतें हैं.


if( REAR < FRONT ){
printf("Queue Underflow\n");
}
else{
temp =  queue[FRONT];
FRONT = FRONT + 1;
return temp;
}

व्याख्या: चरण 1 में हम सबसे पहले क्यू अंडरफ्लो की जांच करेंगें, अगर REAR < FRONT कथन सत्य होता है तो क्यू में कोई भी element उपस्थित नहीं है.चरण 2 में underflow की जांच अगर सत्य होती है तो स्क्रीन पर "Queue Underflow" प्रिंट करेगा. अगर चरण 2 में underflow नहीं होता है तो temp वेरिएबल में क्यू के टॉप element को स्टोर कर लेंगे. चरण 7 में FRONT का मान 1 बढ़ा दिया गया है जिससे वो अगले element को इंगित करने लगे. चरण 8 में क्यू के FRONT पर उपस्थित element जो कि temp variable में स्टोर है को return कर दिया जायेगा.  

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Stack Data Structure in Hindi / स्टैक डाटा स्ट्रक्चर