शुरुआती लोगों के लिए डेटा संरचनाओं के साथ परेशानी हो रही है? [बन्द है]


17

मैं जावा पर अपना दूसरा पाठ्यक्रम ले रहा हूं। हम डेटा संरचनाओं में शामिल हो रहे हैं। मैंने एक लिंक की गई सूची पर एक असाइनमेंट किया है, और अब एक स्टैक। लिंक की गई सूची के साथ मेरे पास एक कठिन समय था। स्टैक ने मुझे थोड़ी परेशानी दी, लेकिन बहुत आसान था।

क्या मुझे इन एल्गोरिदम और डेटा संरचनाओं के साथ एक कठिन समय होने के बारे में चिंतित होना चाहिए? मुझे लगता है कि मैं वास्तव में इसे समझ नहीं पाया।


लिंक्ड सूची का वास्तविक विश्व उदाहरण - stackoverflow.com/questions/644167/…
pramodc84

जवाबों:


44

मुझे लगता है, आपको इन बातों को नहीं समझना चाहिए, क्योंकि वे वास्तव में मौलिक हैं। यह कहा जा रहा है, आपकी समझ में नहीं आ रहा है उन्हें बुरा लग रहा है। आप एक बच्चे से जुड़ी सूची की व्याख्या कर सकते हैं। इसलिए यदि आपका शिक्षक उन्हें आपको समझाने में असफल रहा, तो यह उनकी गलती है। इसलिए आपको चिंता करने में समय नहीं लगाना चाहिए, बल्कि ऐसे लोगों को खोजने की कोशिश करनी चाहिए, जो आपको समझा सकें। अक्सर एक साथी छात्र पूर्णकालिक शैक्षणिक की तुलना में कहीं अधिक बेहतर शिक्षक होता है।

गाड़ियों के बारे में सोचो

कल्पना कीजिए, आपके पास रेलवे की गाड़ियों का एक सेट है, जहां प्रत्येक गाड़ी में पर्याप्त क्षमता है, जिसमें एक टुकड़ा डेटा होता है। प्रत्येक गाड़ी में किसी न किसी प्रकार का हुक होता है, जो दूसरी गाड़ी के मोर्चे से जुड़ा हो सकता है।
यह वास्तव में आपको एक लिंक्ड सूची देता है:

  • खाली सूची: गाड़ी जिसमें कोई गाड़ी नहीं है (और इसलिए कोई डेटा नहीं है)
  • एक तत्व जोड़ना: ट्रेन के सामने तत्व से युक्त एक नई गाड़ी जोड़ें और इसे बाकी ट्रेन में हुक करें
  • एक तत्व को हटाना: गाड़ी को तत्व से खोजें। इसे निकालें (आपको यहां एक क्रेन की आवश्यकता हो सकती है :)), गाड़ी को पहले गाड़ी के साथ हुक दें।
  • एक तत्व की जगह: पुराने तत्व युक्त गाड़ी को खोजें। नए तत्व के साथ पुराने तत्व का आदान-प्रदान करें।
  • एक तत्व को दूसरे के ठीक बाद में सम्मिलित करना: उस गाड़ी को खोजें जिसमें वह तत्व है जिसके बाद आप सम्मिलित करना चाहते हैं। इसके बाद एक नई गाड़ी डालें, जो तदनुसार झुकी हुई है (हम नहीं चाहते कि ट्रेन अलग हो जाए) और नए तत्व को इसमें डाल दें।

इसके विपरीत, आप एक सरणी को एक दी गई गाड़ी के साथ एक ट्रेन के रूप में सोच सकते हैं, जिसे किसी भी तरह से पुनर्व्यवस्थित नहीं किया जा सकता है। बस आपको उनके भीतर डेटा को बदलना है। यह मॉडल कई समस्याओं के बारे में भी बताता है:

  • यदि आप एक तत्व को दूसरे से पहले सम्मिलित करना चाहते हैं, तो आपको निम्नलिखित सभी तत्वों को अगली गाड़ी में ले जाना होगा।
  • यदि आप किसी एक तत्व को निकालना चाहते हैं, तो आपको निम्नलिखित सभी तत्वों को एक गाड़ी से आगे ले जाना होगा।
  • यदि आपको अधिक गाड़ियों के साथ एक ट्रेन की आवश्यकता है, तो आपको एक नया निर्माण करना होगा, क्योंकि आप बस एक गाड़ी को रोक नहीं सकते हैं। दूसरी ओर, एक सरणी में गाड़ियां ढूंढना बहुत आसान है, क्योंकि आप बस उन्हें स्थायी रूप से संख्या दे सकते हैं (उनका क्रम कभी नहीं बदलेगा)।

स्टैक के लिए: एक "स्टैक" एक डेटा संरचना से कम है, एक विचार से। स्टैक का विचार है, कि यह पुस्तकों के ढेर की तरह काम करता है। आप केवल ढेर के ऊपर किताबें रख सकते हैं और आप कभी भी शीर्ष पुस्तक को ढेर से निकाल सकते हैं (कम से कम अगर किताबें पर्याप्त रूप से भारी हैं)।
कहा जा रहा है कि, एक लिंक की गई सूची को एक स्टैक के रूप में इस्तेमाल किया जा सकता है, यदि आप कैरियर्स में डेटा को पुस्तकों के रूप में सोचते हैं, और स्टैक के शीर्ष के रूप में पहली सबसे अधिक गाड़ी में पुस्तक।

इसलिए मुझे उम्मीद है कि इसने आपकी मदद की। शायद यह नहीं था। शायद आप एक दृश्य प्रकार के अधिक हैं। उस मामले में, मेरा सुझाव है कि आप किसी ऐसे व्यक्ति को खोजें, जो दृश्य स्पष्टीकरण देने में अच्छा हो और उसे आपको समझाए। इसमें लंबा समय नहीं लगेगा, लेकिन यह पूरी तरह से इसके लायक होगा।

अब इससे जूझना ठीक है। लेकिन केवल इसे स्वीकार करना, लंबे समय में एक विकल्प नहीं है।


2
अच्छा जवाब! मुझे एहसास हुआ कि कोई भी एक फ़्लैश / अन्य गेम के माध्यम से बच्चों को बुनियादी डेटा संरचनाएं सिखा सकता है जिन्हें पूरा करने के लिए लक्ष्यों की एक श्रृंखला है। गाड़ियों का एक ही विचार बच्चों को द्विआधारी संख्याओं को समझने में मदद कर सकता है, अगर प्रत्येक ट्रेन कार अपने पड़ोसी की तुलना में 2x बड़ी और छोटी हो।
जॉब

1
ठीक है, अब जब कि आप मिल गए हैं, चलो कई लिंक के साथ डेटा संरचनाओं पर चलते हैं। इसलिए ट्रेन के किनारे पर एक अड़चन है, जो कारों के दूसरे सेट पर हुक कर सकती है। लेकिन उन कारों के लिए रेल पहले ट्रैक के बगल में स्लाइड की तरह ...
फिलिप

12

मैं यह नहीं कहूंगा कि आपको इसके बारे में "चिंतित होना चाहिए", लेकिन सरल तथ्य जो आप अपने कमजोर बिंदुओं को स्वीकार करते हैं, यह दर्शाता है कि आप वास्तव में जानते हैं कि कठिन अध्ययन कहां करना है। मुझे लगता है कि आप उस दृष्टिकोण से अच्छी तरह से काम करेंगे और लंबे समय में ठीक हो जाएंगे।


6

मेरे fav CSCI शिक्षक को उद्धृत करने के लिए:

"Panic, but panic early."

डेटा स्ट्रक्चर्स कठिन लगता है, है ना? मेरे लिए यह करता है, यह सार और थोड़ा जटिल और सबसे महत्वपूर्ण ... लगता है!

डेटा स्ट्रक्चर्स एक महत्वपूर्ण कोर्स है। और संघर्ष करना आम बात है, लेकिन चलते रहो! जब तक आप अपने गेहूं खाते हैं और इसे रखते हैं, तब तक आप नीचे bagसे भरे हुए इंद्रधनुष के साथ पहुंचेंगे generic items


आतंक जल्दी से बाहर गिर जाएगा? डेटा संरचनाओं के बाद गणित की आवश्यकताएं भी हैं, एल्गोरिदम, ओएस, एआई, कंपाइलर्स, अभिकलन का सिद्धांत ... यह किसी भी माँ को आसान नहीं लगता है, लेकिन शायद यह तथ्य यह है कि अब कोई नया व्यक्ति नहीं है या एक सोफोमोर भी मदद नहीं करता है हालांकि सामान कठिन हो रहा है।
जॉब

3

अन्य उत्तरों में बहुत अच्छे अंक, बस एक नोट जोड़ने के लिए: IMO लिंक की गई सूची बहुत से लोगों के लिए ढेर की तुलना में अधिक कठिन हो सकती है क्योंकि वे अप्रत्यक्ष ( संदर्भ / बिंदुओं के माध्यम से व्यक्त ) पर निर्माण करते हैं । और इन अंतर्निहित अवधारणाओं को समझ पाना कठिन हो सकता है


3

डेटा स्ट्रक्चर्स पहला "कठिन" वर्ग था जिसे मैंने लिया था; हमने जावा के बजाय फोरट्रान 77 का उपयोग किया, लेकिन अवधारणाएं काफी हद तक समान हैं।

लिंक्ड लिस्ट की अवधारणा को गढ़ने में मुझे अपने सहपाठियों की तुलना में एक हफ़्ता अधिक समय लगा; मैंने असाइनमेंट को टाल दिया, लेकिन अपने प्रोफेसर के साथ थोड़े निराश करने वाले सत्रों के बाद, यह आखिरकार क्लिक किया (शाब्दिक रूप से, मैंने अपने सिर में एक "क्लिक" सुना जब मैं अंत में समझा था)।

हर किसी को अपने सीएस पाठ्यक्रम में कहीं परेशानी है (जब तक कि वे शैतान नहीं हैं)। यदि आप समझते हैं कि आपकी कमजोरियां कहां हैं और उन्हें कैसे संबोधित किया जाए, तो आपको वास्तव में चिंता करने की कोई बात नहीं है।


1
आतंक न करें, काम करते रहें और क्लिक करने के लिए प्रतीक्षा करें ...
NWS 8

2

क्या आपको लिंक की गई सूची को समझने में समस्या है, या सिर्फ आपके कार्यान्वयन में परेशानी है?

किसी नए प्रोग्रामर के लिए वहाँ कठिनाई होना असामान्य नहीं है, क्योंकि यह पहली बार हो सकता है कि आपको यह सोचना पड़े कि इसका वास्तव में क्या मतलब है:

list.head = null;
Element e = new Element(...);
e.next = list.head;
list.head = e;

मैं एक ही अभ्यास पर ALGOL / W में सभी मुड़ गया, क्योंकि मैं भाषा के शब्दार्थ को काफी नहीं समझता था। एक साल बाद, मुझे मुश्किल से याद आया कि मुझे कठिनाई क्यों हुई।


1

सॉफ़्टवेयर विकास के कुछ क्षेत्र होने के लिए बाध्य हैं जो आप दूसरों की तुलना में कठिन पाते हैं। चाहे वह कुछ एल्गोरिदम हो, या कुछ डिज़ाइन पैटर्न या कुछ प्रक्रियाएँ एक व्यक्ति से दूसरे व्यक्ति में भिन्न होंगी। मुझे लगता है कि मुझे पूरी तरह से समझने से पहले मुझे एक वास्तविक कार्यक्रम पर कुछ का उपयोग करना होगा।

यदि कोई व्यक्ति यह सब जानने का दावा करता है, तो मुझे अधिक चिंता होगी और उसने कभी कुछ सीखने में समस्या का अनुभव नहीं किया।

व्यक्तिगत रूप से मुझे कभी भी जुड़ी हुई सूचियों के साथ समस्या नहीं हुई, लेकिन फिर मैंने 8 साल तक एक कार्यक्रम पर काम किया, जो हर जगह उनका उपयोग करता था इसलिए मैं उनके साथ दैनिक आधार पर काम कर रहा था। जब तक आप जानते हैं कि आपको अपनी स्मृति को ताज़ा करने के लिए आवश्यक जानकारी कहाँ से मिलनी है और उन क्षेत्रों को जानना है जहाँ आपको "परेशानी" है, तो आपको ठीक होना चाहिए।


मुझे यह भी लगता है कि अगर मैं एक प्रोग्राम के साथ बातचीत कर सकता हूं जो इन डेटा संरचनाओं का उपयोग करता है। मैं उस स्तर पर हूं, जहां मैं खुद से पूछ रहा हूं, ये उपयोगी क्यों होंगे?
ब्रॉक

0

मुझे पथरी की समस्या थी और इसे दूसरी बार लेना पड़ा। दूसरी बार जब मुझे पता चला कि मैं स्मार्ट था, लेकिन पहला गणित शिक्षक मूल रूप से बेकार था :)

आप आईटी में बहुत से लोगों को खोजने जा रहे हैं जो शिक्षकों से भी अच्छी तरह से संवाद नहीं कर सकते हैं। दूसरी ओर आईटी में कुछ लोग वास्तव में महान लेखक और मास्टर कम्युनिकेटर हैं।

कभी-कभी बाहर पढ़ने से वास्तव में मदद मिल सकती है। कंप्यूटर की पुस्तकें गुणवत्ता में बहुत भिन्न होती हैं। अमेज़ॅन पर जाएं और देखें कि लोग वास्तव में किस पुस्तक को पसंद करते हैं।

सौभाग्य।

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