क्या कोई मौजूदा डेटा संरचना है जो निश्चित आकार की है, और यदि कोई नया तत्व डाला गया है, तो वह सबसे पुराने / अंतिम तत्व को धकेल देगा?


20

मैं एक डेटा संरचना की तलाश कर रहा हूं, जो एक नया तत्व सम्मिलित होने पर उसके सबसे पुराने / अंतिम तत्व को बाहर कर देगा। उदाहरण के लिए, Dसंरचना का प्रतिनिधित्व करते हैं। Dप्रकार के 3 तत्व शामिल हैं Number Dके मूलभूत मूल्यों के लिए शुरू हो जाएगा 1, 2और 3

डी=[1,2,3]

एक तो Numberयह है कि मान 5में डाला जाता है D, 3आगे बढ़ा दिया जाएगा, जबकि 1और 2सही स्थानांतरित कर दिया जाता है।

डी=[5,1,2]

पहली बात जो मन में आती है वह एक सरणी होगी, लेकिन परिभाषा में धकेलने वाला व्यवहार शामिल नहीं है।


वैसे कोई अंतर्निर्मित डेटा संरचना नहीं है, लेकिन Doubly से जुड़ी सूची से जुड़ी सूची का सही उपयोग करना सरल है ?
यूजर नॉट

1
एक कतार से विरासत में मिले रैपर का उपयोग करने के बारे में क्या? फिर आप विधि जोड़ें void push_replace(T val) { pop(); push(val); }
फ्रांसेस्को डोंडी

@FrancescoDondi शायद होना चाहिएT push_replace(T val) { T old = pop(); push(val); return old; }
valbaca

1
अब निश्चित रूप से अब है: आपने इसे अनौपचारिक रूप से परिभाषित किया है; शायद आपको यह पूछना चाहिए कि क्या यह सर्वविदित है, आम तौर पर सहमत इंटरफ़ेस है और क्या कार्यान्वयन उपलब्ध हैं (यह नहीं कि अंतिम एक महान मुद्दा है)।
PJTraill

@valbaca मैं C ++ के बारे में सोच रहा हूं, जहां pop()एक जटिल ऑब्जेक्ट को कॉपी करने के अपवादों के मामले में स्टैक अनइंडिंग के साथ समस्याओं के कारण कुछ भी नहीं लौटाता है, इसलिए front()यदि आप इसे त्यागने से पहले ज़रूरत हो तो उपयोग करने वाले हैं । लेकिन यकीन है, अगर आप अपवादों की परवाह नहीं करते हैं तो आपका रास्ता बेहतर हो सकता है।
फ्रांसेस्को डोंडी

जवाबों:


44

फिक्स्ड-साइज़ कतारों को अक्सर इस्तेमाल किया जाता है जिसे कुछ लोग परिपत्र बफ़र कहते हैं । यदि आप इसके पूर्ण होने से सुरक्षा हटाते हैं, तो आपको वांछित व्यवहार मिलता है।

बेशक, कोई वास्तविक धक्का सरणी में नहीं होगा - यह बहुत महंगा होगा - लेकिन यह बाहर से ऐसा लगेगा


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
राफेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.