यदि आपकी कतार एक सरणी पर आधारित है, तो दक्षता के लिए, मैं एक बाध्य या "परिपत्र" कतार बनाने की अनुशंसा करता हूं, जहां कतार का अधिकतम आकार तय किया गया है, और आपके मूल रूप से एक सिर और पूंछ सूचक है जो कतार के सरणी में "पहली" और "आखिरी" स्थितियों को इंगित करता है, और जब पूंछ-सूचक (या सूचकांक मान) सरणी के अंत "अतीत" स्थिति में स्थानांतरित हो जाता है, तो यह वास्तव में शुरुआत की ओर जाता है सरणी एक सरणी के आधार पर एक असंबद्ध कतार बहुत अक्षम होगी, क्योंकि जब भी आप सरणी के अधिकतम आकार को भरते हैं, और/या जब आप पहली बार हटाते हैं तो सरणी के नीचे तत्वों को फिर से घुमाने की कोशिश करते हैं कतार का तत्व।
का उपयोग head
के लिए अभिन्न प्रकार सरणी अनुक्रमित और के बजाय वास्तविक सूचक प्रकार से tail
अपनी कतार में आइटम की कुल संख्या निर्धारित करने के लिए एक काउंटर, अपने को कतारबद्ध और विपंक्ति कार्यों के साथ-साथ दिखाई दे सकता है के रूप में सरल रूप में:
template<typename T>
bool queue<T>::enqueue(const T& item)
{
if (count == array_size)
return false;
array[tail] = item;
tail = (tail + 1) % array_size;
count++;
return true;
}
template<typename T>
bool queue<T>::dequeue(T& item)
{
if (!count)
return false;
item = array[head];
head = (head + 1) % array_size;
count--;
return true;
}
आप इस अवधारणा को जो कुछ भी काम करना चाहते हैं, उसमें विस्तारित कर सकते हैं, यानी, अगर आप कतार के सिर तक पहुंचने और वास्तव में कतार से तत्व को हटाने के लिए एसटीएल उपयोगों जैसे अलग कार्य करेंगे।
इस होमवर्क है? –
यदि आप इसे स्क्रैच से लागू करने के लिए पर्याप्त समझ में नहीं आते हैं, तो बस प्रदर्शन के रूप में 'std' संस्करण का उपयोग करते रहें। अगर यह होमवर्क है, तो बस याद रखें कि कतार पहले में है। –
मैं आपके बयान पर विवाद करता हूं कि आप "सरल कतार को कैसे कार्यान्वित करें" जानते हैं। अब तक आपने केवल यह दिखाया है कि आप "कतार" नामक लाइब्रेरी क्लास का उपयोग कर सकते हैं। –