मैं एक प्रोग्राम है जो कि मैं क्या अब तक के साथ निपटा है की तुलना में काफी जटिल है लेखन की है। वैसे भी किसी बिंदु पर मुझे एक ऐसा फ़ंक्शन लिखना है जो एक स्ट्रक्चर सूची में हेरफेर करेगा। मैं इस प्रश्न को यथासंभव सरल बनाने की कोशिश कर रहा हूं इसलिए मैंने संदर्भ के लिए कोड का एक बहुत ही सरल टुकड़ा लिखा है।मैं रिकर्सन में किसी फ़ंक्शन से सूची नोड में पॉइंटर कैसे संपादित कर सकता हूं?
यहाँ बात है: सबसे पहले मैं एक वैध current
के साथ-साथ 0. इस का एक मूल्य के साथ एक i
के साथ उपलब्ध कराने के एक और समारोह से testf
फोन पर इसका मतलब है कि testf से पहले यह बाकी तक पहुँचने शुरू होता है खुद के बारे में 100 बार फोन करेगा कोड का यह तब होता है जब testf
के सभी जेनरेट किए गए उदाहरण हल हो जाएंगे।
void testf(listnode *current, int *i) {
wordwagon *current2;
current2 = current;
if (*i < 100) {
*i = *i + 1;
current2 = current2->next;
testf(current2, i);
}
current = current->next;
return;
}
हैं, तो मान लें, मैं अपने निपटान में काफी जुड़ा सूची नोड्स है, current = current->next;
"पिछले" testf समारोह पहुँच सकते हैं और फोन करने वाले का current2
मूल्य संपादित करने के लिए (इस समारोह के current
है) के लिए सही तरीका है, या मैं बहुत गलत हूँ? अगर मैं कर रहा हूँ, क्या कहा जाता समारोह अंदर से फोन करने वाले समारोह के चर में परिवर्तन करने और सुनिश्चित करें कि वे समारोह रिटर्न कहा जाता है के रूप में के रूप में जल्द दूर नहीं जाना होगा होने के लिए तरीका है? मुझे पॉइंटर्स कैसे काम करते हैं, इस बारे में अच्छी समझ पाने के लिए मुझे बहुत मुश्किल लगता है।
ऐसा नहीं है कि मैं महत्वपूर्ण जानकारी को छोड़ दिया है या मैं स्पष्ट रूप से पर्याप्त मेरे सवाल नहीं पूछा है कि बहुत संभावना है। कृपया मुझे सूचित करें कि अगर ऐसा है तो मैं जो भी आपको चाहिए उसे संपादित कर सकता हूं।
अग्रिम धन्यवाद।
आप एक poi पास करना सूचक को nter, या current' संशोधित 'इससे पहले कि आप से पहले' return' अपने अंतिम पंक्ति में एक सरल उदाहरण –
+1 recurse, मुझे लगता है कि आप केवल ढेर पर डबल सूचक का मूल्य बदल रहे हैं। इसे आज़माएं: '* वर्तमान = (* वर्तमान) -> अगला;' –