2009-05-29 24 views
6

"कतार", या फीफो, सबसे आम डेटा संरचनाओं में से एक है, और कई भाषाओं और ढांचे में मूल कार्यान्वयन है। हालांकि, ऐसा लगता है कि मौलिक कतार संचालन का नाम कैसे होना चाहिए, इस बारे में थोड़ी आम सहमति नहीं है। प्रचलित भाषा के एक सर्वेक्षण बताते हैं:कतार संचालन/एपीआई के लिए शब्दावली/नामकरण सम्मेलन?

  • पायथन: पुट/प्राप्त
  • सी #, क्यूटी: कतारबद्ध करें/विपंक्ति
  • रूबी, सी ++ एसटीडी: धक्का/पॉप
  • जावा: जोड़ें/निकालें

अगर किसी को कतार लागू करने की आवश्यकता है (कहें, कुछ एम्बेडेड प्लेटफ़ॉर्म में जो पहले से ही देशी कतार कार्यान्वयन नहीं है), तो नामकरण सम्मेलन सबसे अच्छा होगा? एनक्यू/डेक्यू सबसे स्पष्ट प्रतीत होता है, लेकिन शब्दशः है; डाल/प्राप्त संक्षिप्त है लेकिन संचालन की फीफो प्रकृति के रूप में कोई संकेत नहीं प्रदान करता है; पुश/पॉप कतार संचालन के बजाय स्टैक ऑपरेशंस का सुझाव देने लगता है।

उत्तर

4

मैं एक रूढ़िवादी की तरह कर रहा हूँ नफरत है, तो मैं enqueue/dequeue के साथ जाना चाहते हैं।

हालांकि add/next में एक निश्चित अपील है।

बस इस मुद्दे को क्लाउड करने के लिए थोड़ा अधिक, पर्ल में यह push/shift है। :)

+0

क्यों न सिर्फ बिश() बॉश() भी है: एस टीएओसीपी शायद विवाद समाधान के लिए संदर्भ? –

+1

मेरा मानना ​​है कि लोकप्रिय पसंद 'enqueue (तत्व: तत्व): शून्य 'और' dequeue(): तत्व' है। हालांकि, मैं कई डीएस/एल्गोरिदम कक्षाएं लिखता हूं क्योंकि मैं 'ऐड (एलिमेंट: एलिमेंट)' और 'अगली(): एलिमेंट' जैसी चीजों का उपयोग कर सकता हूं क्योंकि इन विधियों को अन्य डीएस/एल्गोरिदम के बीच भी साझा किया जाता है। ** इस तरह, एक कार्यान्वयनकर्ता को डीएस के आंतरिक के बारे में जानने की आवश्यकता कम होती है और आप SOLID से आसान Liskov प्रतिस्थापन सिद्धांत को नियोजित कर सकते हैं **। अन्यथा, आपको केवल एडाप्टर की आवश्यकता है, लेकिन मैं इसके लिए मानक सम्मेलन को बदलने के लिए हूं। – Cody

1

मैं शायद इसे push_back और pop_front के रूप में नामित करूंगा।

+0

+1 या ऊपर/नीचे। स्मृति शब्दावली के करीब –

0

उपयोग करने के लिए सबसे तार्किक की तरह ध्वनि जोड़ें/निकालें, विशेष रूप से यदि आप इसे संभवतः संरचना या भाषा (समझने में आसान) से अपरिचित व्यक्ति द्वारा पढ़ा जा रहा है।

व्यक्तिगत प्राथमिकताओं के कारण मेरी रैंकिंग में पुश/पॉप अगला होगा।

रखो/अगला आता है।

को कतारबद्ध/विपंक्ति आखिरी क्योंकि मैं वास्तव में पत्र प्र

+0

मैं बस हर समय Enqueueueue टाइप नहीं करना चाहता। –

2

पुश/पॉप एक फीफो के लिए सादा गलत है क्योंकि ये स्टैक (आखिरी बार बाहर) ऑपरेशन हैं।

कतार ऑब्जेक्ट के साथ-साथ एक ऑपरेशन को भी संदर्भित कर सकता है, इसलिए थोड़ा ओवरलोड किया गया है और डेक्यू भ्रम पैदा कर सकता है क्योंकि इसका उपयोग आमतौर पर डबल एंडेड कतार को संदर्भित करने के लिए किया जाता था।

डाल/प्राप्त करें - लघु, स्पष्ट और सामान्य (कार्यान्वयन नहीं मानता है और सभी प्रकार के कतार/सूचियों/संग्रहों के लिए उपयोग किया जा सकता है) - क्या पसंद नहीं है?

+1

+1 मैं इस से सहमत हूं। पुश/पॉप लगभग हमेशा एक स्टैक से जुड़ा होता है, न कि एक फीफो –

+0

पारंपरिक रूप से संग्रह को संशोधित नहीं करता है, इसलिए यह मेरे लिए "चोटी" के बराबर लगता है। – Grault

0

जोड़ें/निकालें इसका लाभ है कि आप आसानी से कतार से दूसरे डेटा संरचना में बदल सकते हैं।

उदाहरण के लिए, एक कतार बनाम एक स्टैक में राज्यों को संग्रहित करना चौड़ाई-प्रथम और गहराई-पहली खोज के बीच का अंतर बनाता है।

0

मुझे enqueue और dequeue पसंद है, लेकिन उन्हें टाइप करना बेकार है। तो मेरी कतार संरचनाओं (सी ++ और जावा दोनों) में, मैंने फ़ंक्शंस एनक्यू और डेक्यू नाम दिया :)

0

पॉप/पुश गलत लगता है क्योंकि यह कतार के बजाय एक स्टैक डेटा संरचना का सुझाव देता है।

सुझावों में कुछ नया जोड़ने के लिए: मेरे शिक्षक हमेशा ब्लैकबोर्ड पर in और out का उपयोग करते थे।

0

मुझे प्रकोप और सिरदर्द पसंद है। हालांकि सभी के लिए नहीं। या "नए के साथ", "पुराने के साथ बाहर"। और फिर हमारे लिए दक्षिणपश्चिमर्स बेरिएटल और डिफैंग हैं। लेकिन मेरा पसंदीदा ग्राफिकल है। अंदर और फिर दाएं तीर के लिए दायां तीर।