मैं वर्तमान में विभिन्न लिंक्ड सूची कतारों और ढेरों के बारे में सीख रहा हूं। मैं विभिन्न कतार कार्यों पर कुछ नोट्स पढ़ रहा हूं। मुझे दिए गए डीक्यू फ़ंक्शन को समझने में परेशानी हो रही है।

void CintQueue::Dequeue(int& item) //Remove front Item from the Queue
{
   Node *TempPtr;

   TempPtr = m_qFront;
   item = m_qFront->data;
   m_qFront = m_qFront->next;
   if (m_qFront == NULL)
       m_qRear = NULL;
   delete TempPtr;
}

मुझे समझ में नहीं आ रहा है कि वहाँ एक पैरामीटर को समाप्त करने के लिए पारित किया जा रहा है। इसका उद्देश्य क्या है? मैं इस कोड से देखता हूं कि इसे फ्रंट नोड से डेटा वैल्यू सौंपा जा रहा है, लेकिन फंक्शन डीक्यू का कोई रिटर्न वैल्यू नहीं है इसलिए मैं इस उद्देश्य को नहीं समझता। क्या कोई यह बता सकता है कि यह फ़ंक्शन कैसे काम करता है? क्या कतार से निकाले गए मान को प्राप्त करने के लिए एक अलग फ़ंक्शन की आवश्यकता होगी?

0
user3429270 14 नवम्बर 2015, 01:24

2 जवाब

सबसे बढ़िया उत्तर

फ़ंक्शन तर्क को एक संदर्भ दिया जाता है। इसलिए जब यह फ़ंक्शन में सेट हो जाता है, तो यह उस चर को सेट करता है जिसे तर्क के रूप में पारित किया गया था:

CintQueue q;  // define queue
// fill q with ints
int i;
q.Dequeue(i);  // i is set here
0
Anon Mail 13 नवम्बर 2015, 22:29

आप उसी प्रकार के एक चर के संदर्भ को पास करते हैं जो कतार का पहला उद्देश्य है। विधि में पहले आइटम का डेटा इस चर में सहेजा जाता है और फिर आइटम हटा दिया जाता है। तो आप कतारों के प्रमुख आइटम का डेटा प्राप्त कर सकते हैं और इसे केवल एक फ़ंक्शन कॉल के साथ हटा सकते हैं।

किसी फ़ंक्शन के संदर्भ में पास करना और उसे कुछ असाइन करना शून्य कार्यों के लिए कुछ वापस करने का एक तरीका है। आप रिटर्न वैल्यू और बिना किसी तर्क के समान उद्देश्य के साथ एक विधि भी बना सकते हैं।

0
Eskalior 13 नवम्बर 2015, 22:31