किसी को पता है कि निकट भविष्य में एक टेक्स्ट एडिटर को लागू करने की योजना है, जिसने मुझे यह सोचने के लिए प्रेरित किया कि एक टेक्स्ट एडिटर के लिए किस तरह की डेटा संरचनाएं तेज हैं। सबसे अधिक उपयोग की जाने वाली संरचनाएं स्पष्ट रूप से रस्सियों या गैप बफ़र्स हैं ।
वैन एमड बोआस के पेड़ लगभग सबसे तेज़ प्राथमिकता वाली कतारों के बारे में हैं, यदि आप उन वस्तुओं की संख्या पर ऊपरी बाध्य नहीं हैं जिन्हें आप इसमें डाल सकते हैं और एक बड़ी आरंभीकरण लागत। मेरा सवाल यह है कि क्या कुछ डेटा संरचना मौजूद है जो वैन एम्ड बोस पेड़ की तरह ही तेज़ है, लेकिन पाठ संपादक संचालन का समर्थन करता है।
हमें केवल अपनी डेटा संरचना में वर्णों का समर्थन करने की आवश्यकता है (इसलिए यदि , तो हम 4GB तक ASCII वर्णों का समर्थन करते हैं)। हमें नई डेटा संरचना को आरम्भ करने के लिए समय की अनुमति है । हम निम्नलिखित कार्यों का समर्थन करना चाहते हैं:
- स्थिति में एक चरित्र सम्मिलित में (और इस तरह बाद के हर चरित्र की स्थिति 1 से बढ़ रही)।
- स्थिति में एक चरित्र को हटाएँ में ।
- स्थिति में चरित्र लौटें में ।
तो, डालने (0, 'ए') के बाद डालने (0, 'बी') "बा" में परिणाम।
इससे भी बेहतर होगा:
- में कुछ इंडेक्स लिए 'पॉइंटर' लौटाएं ।
- एक 'पॉइंटर' को देखते हुए, O (1) में इस स्थिति पर वर्ण लौटाएँ ।
- एक 'पॉइंटर' को देखते हुए, इस स्थिति को O (1) में हटा दें ।
- एक 'पॉइंटर' को देखते हुए, O (1) में इस स्थिति पर एक वर्ण जोड़ें और एक पॉइंटर को निम्न स्थिति में लौटाएँ।
- (वैकल्पिक) एक 'पॉइंटर' को देखते हुए, ओ (1) में अगले / पिछले चरित्र के लिए एक 'पॉइंटर' लौटाएं ।