सामान्य करने के लिए सामान्य मूल्य कैसे सेट करें?

मैं 2-3 पेड़ वर्ग कर रहा हूं, और मेरा बीएनओडी वर्ग एक सामान्य है, इसलिए यह किसी भी प्रकार का डेटा स्टोर कर सकता है। तो मैं इस स्थिति पर आ गया: मेरे पास 3-नोड (2 मान और 3 बच्चे पॉइंटर्स के साथ) है और सैद्धांतिक में मुझे उस 3-नोड को 2 2 नोड्स में तोड़ना है, प्रत्येक नोड में केवल एक मान और 2 बाल पॉइंटर्स हो सकते हैं । प्रोग्रामिंग में सवाल आता है, क्या आपको 2 नए नोड्स बनाना है, प्रत्येक नोड 3-नोड के प्रत्येक मान को रखेगा? या आप केवल एक नया नोड बना सकते हैं, और दूसरे मान को न्यूल पर सेट करके 3-नोड का पुन: उपयोग कर सकते हैं? और यदि आप कर सकते हैं, तो आप इसे कैसे सेट करेंगे, मान लें कि आपके पास जो मूल्य है वह सामान्य है। धन्यवाद।

1
खैर, आप पॉइंटर को शून्य पर उपयोग कर सकते हैं, अन्यथा आपके मूल्य + बूल का उपयोग करें "भरा हुआ है"।
जोड़ा लेखक Tigran, स्रोत
अगर मैं इसे कोड करता हूं, और यदि प्रत्येक नोड कोलड में 8 से अधिक मान नहीं हैं, तो मैंने 8 मानों की सरणी का उपयोग किया है, बाइट is_filled है और प्रत्येक बिट प्राप्त करने के लिए प्रयुक्त और ऑपरेटर है।
जोड़ा लेखक Tigran, स्रोत

2 उत्तर

तो आपका 2-नोड और 3-नोड अलग-अलग प्रकार हैं? उस स्थिति में मैं निश्चित रूप से 2 नए 2-नोड्स बनाउंगा।

Otherwise you could use boost::Optional

2
जोड़ा

मुझे लगता है कि दोनों संभव हैं ... लेकिन मुझे लगता है कि यदि आप पूरे पेड़ के लिए 3-नोड संरचना का उपयोग करते हैं तो यह बेहतर होगा .. आप अपनी तरह का निर्धारण करने के लिए ध्वज (बूल या इंट या कुछ भी) का उपयोग कर सकते हैं (3-नोड या 2 -node)

1
जोड़ा