आप शायद ठीक कह रहे हैं (foreach एक प्रति, आदि सभी डेटा की स्मृति में क्या करने वाले नहीं) की तरह अन्य सुविधाओं कर रहे हैं, और यह सिर्फ बहुत उपयोगी नहीं है।
सिद्धांत में लिंक्ड सूचियों के कई उपयोग हैं (विशेष रूप से नृत्य लिंक)। लेकिन उनमें से अधिकतर या तो अपने इटरेटर को कहीं और संग्रहित करते हैं, सामग्री को दो से अधिक दिशाओं में एक्सेस करते हैं, या सूचियों को विभाजित करते हैं और विलय करते हैं। SplDoublyLinkedList उन लोगों को नहीं लग रहा था।
यदि यह एल्गोरिदम के लिए नहीं है, तो एक प्रयोग किसी ऑब्जेक्ट को निरंतर समय में कुछ सूची में खुद को संदर्भित करने, इसकी याददाश्त को मुक्त करने और सूची को शफ़ल करने के बिना (अंतिम आइटम के साथ हैशिंग या स्वैपिंग के बिना) को संदर्भित करने की अनुमति देना है। या हटाना। लेकिन इसके लिए उन वस्तुओं में सूची के एक पुनरावर्तक को संग्रहित करने की आवश्यकता है।
उन कार्यक्षमताओं के बिना, वे सिर्फ दो डेक की तरह व्यवहार करते हैं। अगर आपको केवल इटरेटर का उपयोग करके वस्तुओं तक पहुंचने की ज़रूरत है, तो वे दो ढेर की तरह हैं। एकल थ्रेडेड सरल मामलों में एक बेहतर तरीका, जो कक्षा में पहले से लपेटा नहीं गया है, केवल दो ढेर (शायद निश्चित सरणी, या एक ही सरणी के दोनों सिरों) का उपयोग करना है। एक स्टैक से पॉप और जब भी आप इटरेटर को स्थानांतरित करना चाहते हैं तो इसे दूसरे पर दबाएं, और एक स्टैक का शीर्ष वर्तमान आइटम है। यदि आपको सिर और पूंछ तक पहुंचने की भी आवश्यकता है, तो आपको डेक्स के साथ ढेर को प्रतिस्थापित करने की आवश्यकता होगी।
लेकिन यदि आप अधिकतम आकार के बिना खुद को ढेर या डेक को लागू करना चाहते हैं, या सामान्य लिंक्ड सूचियों के नोड्स को आवंटित करना चाहते हैं (PHP में उन पुस्तकालयों के बिना किसी भाषा में), तो अच्छा तरीका कुछ निश्चित सरणीओं को चेन करना है साथ में, उन सुविधाओं के बिना दोगुनी लिंक्ड सूचियों का उपयोग करना। किसी भी तरह आपको अभी भी इसकी आवश्यकता होगी।
PHP दस्तावेज़ स्वयं जावा की तरह ही, यह सुझाव देता है कि उन्हें कुछ अतिरिक्त अजीब सुविधाओं का समर्थन करने वाला एक डेक होना चाहिए, यहां तक कि दो डेक (मुझे लगता है) भी नहीं। यदि आपको वास्तव में दोगुनी लिंक्ड सूचियों की आवश्यकता है तो उनका उपयोग न करें।
यह यहां पर सबसे अच्छा जवाब है, और इन डेटा संरचनाओं के उद्देश्य को समझने के लिए एक अच्छा है। हालांकि, चीजें उतनी सरल नहीं हैं जितनी इस जवाब का तात्पर्य है। बस एक डबल लिंक्ड सूची क्या है और क्या हैश टेबल है (PHP में एरे कैसे कार्यान्वित किए जाते हैं) की अवधारणा के आधार पर, एक उम्मीद करेगा कि एक डबल लिंक्ड सूची एक सरणी पर बहुत सारी स्मृति को बचा सकती है। हालांकि मेरे परीक्षण में, मैं या तो स्पॉट के बारे में स्मृति से बाहर चला जाता हूं। जो मुझे विश्वास दिलाता है कि दोगुनी लिंक्ड सूचियों को PHP में बहुत बेवकूफ तरीके से कार्यान्वित किया जाता है। –
मैंने स्मृति की रक्षा के लिए एक गहरी आंख के साथ अपनी खुद की एकमात्र लिंक्ड सूची कक्षा बनाने की भी कोशिश की। किसी भी तरह से मैं उसी स्थान पर स्मृति से बाहर निकल रहा हूं जैसे कि मैं एक सामान्य PHP सरणी का उपयोग करता हूं, जो बहुत विचित्र है। इससे मुझे अप्रत्याशित स्थानों में PHP का उपयोग PHP arrays के आंतरिक संकेतों पर संदेह होता है। यह सिर्फ एक अनुमान है, लेकिन यह सुनिश्चित नहीं है कि और क्या सोचना है। बीटीडब्ल्यू मैं PHP 5.3.2 का उपयोग कर रहा हूं, इसलिए उम्मीद है कि इसके बारे में नए संस्करण बेहतर हैं, लेकिन मुझे नहीं पता। मुद्दा यह है कि, यदि आप प्रदर्शन कारणों से PHP सरणी के अलावा किसी अन्य डेटा संरचना का उपयोग करने जा रहे हैं, तो सुनिश्चित करें कि यह सुनिश्चित करने के लिए आप प्रदर्शन को मापते हैं कि यह मदद करता है। –