Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में सर्कुलर क्यू रिंग बफर को लागू करना

<घंटा/>

गोलाकार कतार

वृत्ताकार कतार एक रैखिक डेटा संरचना है जिसमें संचालन FIFO (फर्स्ट इन फर्स्ट आउट) सिद्धांत के आधार पर किया जाता है और अंतिम स्थिति को सर्कल बनाने के लिए पहली स्थिति से वापस जोड़ा जाता है। इसे "रिंग बफर" भी कहा जाता है।

वृत्ताकार कतार का एक लाभ यह है कि हम कतार के सामने रिक्त स्थान का उपयोग कर सकते हैं। एक सामान्य कतार में, एक बार कतार भर जाने के बाद, हम कतार के सामने जगह होने पर भी अगला तत्व सम्मिलित नहीं कर सकते। लेकिन वृत्ताकार कतार का उपयोग करके, हम नए मानों को संग्रहीत करने के लिए स्थान का उपयोग कर सकते हैं।

समस्या

हमें जावास्क्रिप्ट में सर्कुलर क्यू के हमारे कार्यान्वयन को डिजाइन करने की आवश्यकता है जो निम्नलिखित कार्यों का समर्थन कर सकता है -

  • MyCircularQueue(k) - कंस्ट्रक्टर, कतार का आकार k पर सेट करें।

  • फ्रंट () - कतार से सामने की वस्तु प्राप्त करें। यदि कतार खाली है, तो -1 लौटें।

  • रियर () - कतार से अंतिम आइटम प्राप्त करें। यदि कतार खाली है, तो -1 लौटें।

  • enQueue(value) - वृत्ताकार कतार में एक तत्व डालें। ऑपरेशन सफल होने पर सही लौटें।

  • deQueue() - सर्कुलर क्यू से एक एलिमेंट को डिलीट करें। ऑपरेशन सफल होने पर सही लौटें।

  • isEmpty() - जाँचता है कि वृत्ताकार कतार खाली है या नहीं।

  • isFull() - जाँचता है कि वृत्ताकार कतार भरी हुई है या नहीं।

उदाहरण

निम्नलिखित कोड है -

const CircularQueue = function(k) {
   this.size = k
   this.queue = []
   this.start1 = 0
   this.end1 = 0
   this.start2 = 0
   this.end2 = 0
}
CircularQueue.prototype.enQueue = function(value) {
   if(this.isFull()) {
      return false
   }
   if(this.end2 <= this.size - 1) {
      this.queue[this.end2++] = value
   } else {
      this.queue[this.end1++] = value
   }
   return true
}
CircularQueue.prototype.deQueue = function() {
   if(this.isEmpty()) {
      return false
   }
   if(this.queue[this.start2] !== undefined) {
      this.queue[this.start2++] = undefined
   } else {
      this.queue[this.start1++] = undefined
   }
   return true
}
CircularQueue.prototype.Front = function() {
   if(this.isEmpty()) {
      return -1
   }
   return this.queue[this.start2] === undefined ? this.queue[this.start1] :    this.queue[this.start2]
}
CircularQueue.prototype.Rear = function() {
   if(this.isEmpty()) {
      return -1
   }
   return this.queue[this.end1 - 1] === undefined ? this.queue[this.end2 - 1] :    this.queue[this.end1 - 1]
}
CircularQueue.prototype.isEmpty = function() {
   if(this.end2 - this.start2 + this.end1 - this.start1 <= 0) {
      return true
   }
   return false
}
CircularQueue.prototype.isFull = function() {
   if(this.end2 - this.start2 + this.end1 - this.start1 >= this.size) {
      return true
   }
   return false
}
const queue = new CircularQueue(2);
console.log(queue.enQueue(1));
console.log(queue.enQueue(2));
console.log(queue.enQueue(3));
console.log(queue.Rear());
console.log(queue.isFull());
console.log(queue.deQueue());
console.log(queue.enQueue(3));
console.log(queue.Rear());

आउटपुट

true
true
false
2
true
true
true
3

  1. जावास्क्रिप्ट में सर्कुलर के रूप में सिंगल लिंक्ड लिस्ट

    सिंगल लिंक्ड लिस्ट में, अंतिम नोड का अगला पॉइंटर पहले नोड की ओर इशारा करता है।

  1. जावास्क्रिप्ट में कतार का कार्यान्वयन

    जावास्क्रिप्ट में क्यू को लागू करने के लिए कोड निम्नलिखित है। उदाहरण दस्तावेज़ बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़; } .result {फ़ॉन्ट-आकार:18पीएक्स; फ़ॉन्ट-वजन:500; रंग:नीला बैंगनी; } बटन {पैडिंग:6px; मार्जिन:4px; }जावास्क्रिप्ट में क्यू का क्रियान्वयन।EnqueueDequeu

  1. जावास्क्रिप्ट में रैखिक खोज को लागू करना

    जावास्क्रिप्ट में रैखिक खोज को लागू करने के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Docu