[Powered by Google Translate] [Walkthrough - సమస్య సెట్ 5] [Zamyla చాన్ - హార్వర్డ్ యూనివర్శిటీ] [ఈ CS50 ఉంది. - CS50.TV] అన్ని కుడి. హలో, ప్రతి ఒక్కరూ, మరియు Walkthrough 5 కు స్వాగతం. Pset5 మేము ఒక ని తయారు చేసిన, అక్షరదోషాలు ఉంది. స్పెల్ చెక్కర్స్ చాలా ముఖ్యమైనవి. ఇది మీరు జరిగిన? మీరు చాలా పని చాలా ఒక గొడవలకు ఒక కాగితంపై దానిని ఉంచబడిన వస్తువు తరువాత ఇంకా D లేదా D = వంటి చాలా గ్లో రేడ్ పొందడానికి ముగుస్తుంది మరియు అన్ని మీరు తిమింగలం విస్తృత వర్డ్ లో లివర్వర్స్ట్ స్పాయిలర్ ఎందుకంటే. అవును, మీ మిరియాలు లోపాల తనిఖీ విషయం, అత్యంత నపుంసకత్వము ఉంది. ఈ మ్యాన్లీ, మ్యాన్లీ విద్యార్థులు ప్రభావితం చేసే సమస్య. నేను ఒకసారి నేను ఒక మంచి సహోద్యోగి పొందడానికి ఎన్నటికీ నా సిత్ గ్రేడ్ చిత్రహింస చేయువాడు చెప్పాడు. మరియు అన్ని ఏ కిడ్ నా వయస్సులో కోరుకుంటున్నారు అని నేను ఎప్పుడూ కోరుకున్నారు అన్ని యొక్క ఒక మంచి సహోద్యోగి పొందడానికి. మరియు కేవలం ఏ సహోద్యోగి. నం నేను ఒక ఐవరీ లీగల్ సహోద్యోగి వెళ్లాలని అనుకొంది. నేను అభివృద్ధి కాదు అయితే, గాన్, హార్వర్డ్ వెళ్లి నా కలలు ఉంటుంది జాలే లేదా జైలు - మీకు తెలిసిన, ప్రిజన్ లో, న్యూ జెర్సీ. కాబట్టి నేను ని పొందాడు. నా ఇష్టమైన స్పోకెన్ వర్డ్ కళాకారులు, టేలర్ మాలి నుండి కొద్దిగా ఎక్సెర్ప్ట్ ఉంది. అతను చెప్పినట్లుగా ఏమైనా, ఒక ని కలిగి ప్రాముఖ్యత చాలా ముఖ్యం. కాబట్టి మేము pset5 గురించి మాట్లాడటం చేసిన, Walkthrough 5 స్వాగతం: అక్షరదోషాలు, దీనిలో మేము మా స్వంత ని తయారు చేయబడుతుంది. ఈ వారం పేజీలు, పంపిణీ కోడ్, కు ముఖ్యమైన అవతరిస్తుంది మీ నిఘంటువు కలిగి అన్నారు వేర్వేరు విధులను అర్థం చేసుకోవటానికి. మేము ఇద్దరం కలిసి నిజంగా మా pset చేసే బహుళ. సి ఫైళ్లను చేయడంలో చూడాలని. కాబట్టి మేము నిజంగా సవరణ లేదు అయినప్పటికీ, వివిధ అంశాలను ద్వారా చూడటం అది dictionary.c సంబంధించి పనిచేస్తుంది ఎలాగో తెలుసుకోవడం ఫైళ్ళను ఒక, speller.c, మేము రాయడం ఏ, చాలా ముఖ్యమైనది అని అన్నారు. pset స్పెక్ ఉపయోగపడే సమాచారాన్ని చాలా కలిగి మీరు ఊహించవచ్చు విషయాలు పరంగా, ఆ వంటి నియమాలు మరియు విషయాలు, కాబట్టి చిట్కాలు కోసం జాగ్రత్తగా pset స్పెక్ తప్పకుండా చదవండి. మరియు ఆ వంటి ఒక నియమం లేదా ఏదో యొక్క సందేహం లో, అప్పుడు ఎప్పుడూ pset స్పెక్ చూడండి లేదా చర్చించండి. ఈ pset, గమనికలు ఎక్కువగా ఆధారపడి అన్నారు కనుక మేము జోడించడం నక్షత్రాలు మధ్య భేదాన్ని తెలుసుకోవడానికి ఆ నిర్ధారించుకోవాలి వారిని ఎలా పాయింటర్ యొక్క పేరు మరియు ampersands, మొదలైనవి ముందు కాబట్టి గమనికలు ఒక మాస్టర్ ఉండటం ఈ సమస్య సెట్ లో చాలా సహాయకారిగా అన్నారు. మేము, ఒక బిట్ మరింత అనుసంధాన జాబితాలు పరిశీలిస్తాము చూడాలని మేము ఒక విలువ అలాగే పాయింటర్ రెండు కలిగి నోడ్స్ కాల్ అంశాలను కలిగి ఉన్న తదుపరి నోడ్, అందుచే ముఖ్యంగా వివిధ అంశాలను ఇతర తర్వాత ఒక లింక్. మీ వాస్తవ నిఘంటువు అమలు కొన్ని వేర్వేరు ఎంపికలు ఉన్నాయి. మేము రెండు ప్రధాన పద్ధతులు, hash పట్టికలు మరియు తరువాత ప్రయత్నించే పరిశీలిస్తాము చూడాలని. ఆ రెండు, వారు ఒక లింక్ జాబితా భావన యొక్క రకమైన కలిగి మీరు మరొక అంశాలను లింక్ చేసారు పేరు. కాబట్టి మేము, మీరు లింక్ జాబితాలు చుట్టూ ఆపరేట్ చేయవచ్చు ఎలా చూసి చూడాలని , వాటిని సృష్టించడానికి ఎలా పరంగా నావిగేట్, ఉదాహరణకు, ఇది ఒక నోడ్ ఇన్సర్ట్ లేదా అదే నోడ్స్ అన్ని ఉచిత. ఉండండి నోడ్స్ పరంగా, ఆ నిజంగా ముఖ్యం మేము malloc మెమరీ, తర్వాత మేము ఇది ఉచితం చేసినప్పుడు. కనుక మేము ఏ మెమరీ లీకేజ్ లేని, ఏ పాయింటర్ unfreed వెళ్ళే నిర్ధారించుకోవాలి. మేము మీ ప్రోగ్రామ్ అమలు Valgrind అనే ఒక పరికరాన్ని పరిచయం చేయబోతున్నామని మరియు మీరు కేటాయించింది అన్ని మెమరీ లేదో తనిఖీలు తర్వాత విముక్తి పొందుతాడు. ఇది పనిచేస్తుంది మీ pset మాత్రమే పూర్తి మరియు అది పూర్తి కార్యాచరణకు ఉంది కానీ, Valgrind మీరు ఏ మెమరీ లీకేజ్ దొరకలేదు మీకు చెబుతుంది. చివరగా, ఈ pset కోసం, నేను నిజంగా ఒత్తిడి ఎంచుకోండి - నా ఉద్దేశ్యం, సాధారణ గా, నేను ఖచ్చితంగా మీ సమస్య సెట్లు కోసం కలం మరియు కాగితం ఉపయోగించి ఒక మద్దతుదారు am, కానీ ఈ ఒక నేను కలం మరియు కాగితం ముఖ్యంగా అవతరిస్తుంది నేను భావిస్తున్నాను మీరు విషయాలను బాణాలు గీయడం మరియు ఉపకరణములు పని ఎలా అవగాహన అలా చేస్తారు. కాబట్టి ఖచ్చితంగా మీరు కోడింగ్ పెట్టడానికి ముందు విషయాలను డ్రా కలం మరియు కాగితం ఉపయోగించడానికి ప్రయత్నించండి అది ఒక బిట్ దారుణంగా పొందండి ఎందుకంటే. మొదటి, యొక్క అనుసంధాన జాబితాలు ఒక బిట్ వీడలేదు. లింక్ జాబితాలు ప్రతి నోడ్ ఇది సంబంధం విలువ పేరు నోడ్స్, ఉంటాయి అలాగే ఆ తర్వాత తదుపరి నోడ్ ఒక పాయింటర్. లింక్ జాబితాలు ముఖ్యమైన విషయాలను మేము గుర్తు అవసరమైన ఉంటాయి మొదటి నోడ్ ఉన్న మా మొదటి నోడ్ ఉన్న, మరియు అప్పుడు ఒకసారి మేము, తెలిసిన ఆ విధంగా మేము నోడ్ ఆక్సెస్ చేసుకోవచ్చు మొదటి నోడ్ పాయింట్లు మరియు ఆ తర్వాత ఒక మరియు ఆ తరువాత ఒకటి. ఆపై మీ లింక్ జాబితాలో చివరి మూలకం ఆ నోడ్ యొక్క పాయింటర్ గా ఎల్లప్పుడూ శూన్య సూచించడానికి అన్నారు. ఒక నోడ్ పాయింట్లు శూన్య ఎప్పుడు, మీరు జాబితా ముగింపు చేరుకున్నారు తెలుసు, ఆ నోడ్ ఆ తర్వాత ఏమీ అక్కడ గత ఒకటి. ఈ సాధారణ, మీరు, బాణాలు గమనికలు ఉన్నాయి ఆ చూడండి మరియు నీలం విభాగం విలువ నిల్వ చేయబడుతుంది కౌంటీ, మరియు దానికి పాయింటర్ తో ఎరుపు బాక్స్ నోడ్ యొక్క పాయింటర్ గా ఇది తరువాతి నోడ్ సూచించే. అది జాబితాలో చివరి మూలకం ఎందుకంటే మరియు మీరు ఇక్కడ చూడండి, D నోడ్ శూన్య సూచించడానికి చేస్తుంది. యొక్క మేము నోడ్సుకోసం ఒక struct నిర్వచించే ఎలా చూద్దాం. మరియు మేము బహుళ నోడ్లు కావాలి, ఎందుకంటే ఈ ఒక typedef struct మారింది అన్నారు దీనిలో మేము నోడ్స్ యొక్క వివిధ సందర్భాలలో చూడాలని. కాబట్టి మేము ఒక కొత్త డేటా టైప్ నిర్వచించారు. ఇక్కడ, మేము ఒక typedef struct నోడ్ ఉన్నాయి. ఈ ఉదాహరణలో, మేము, పూర్ణాంక నోడ్స్ వ్యవహరించే చేస్తున్నారు , కాబట్టి మేము పూర్ణాంకం అనే విలువ మరియు అప్పుడు మేము మరొక పాయింటర్ కలిగి మరియు ఈ సందర్భంలో, ఒక కణుపు ఒక పాయింటర్, కనుక మేము తదుపరి అనే struct నోడ్ * ఉంటాయి. మరియు తర్వాత మేము ఈ మొత్తం విషయం నోడ్ కాల్ చేస్తున్నారు. మీరు ఈ సింటెక్స్ అనుసరించే నిర్ధారించుకోండి. ఆ నోడ్ నిజానికి అదే వంకర జంట కలుపులు క్రింద పైన సూచించారు గమనించండి. నా మొదటి నోడ్ ఈ అనుబంధ జాబితా లో ఉన్న ట్రాక్, అప్పుడు నేను తల అనే నోడ్ పాయింటర్, మరియు నోడ్ యొక్క పరిమాణం తగినంత నేను malloc స్పేస్. నోటీసు, ఏమైనప్పటికి, ఆ తల నిజానికి అసలు నోడ్ కాకుండా ఒక నోడ్ పాయింటర్ ఉంది. కాబట్టి తల నిజానికి, ఏ విలువ లేదు ఇది నా లింక్ జాబితాలో మొదటి నోడ్ అవుతుందో సూచిస్తుంది. ఇది చాలా ముఖ్యం ఎందుకంటే, లింక్ జాబితాలు ఒక మంచి వేసేందుకై మీరు గొలుసు నిర్వహించే చూసుకోవాలి ట్రాక్, ఒక లైన్ లో ప్రజలు చేతులు పట్టుకొని నేను, అది నేను ఆలోచించడానికి ఇష్టపడతాను ప్రతి వ్యక్తి తదుపరి చేతులు కలిగి ఉంది. మీరు ఈ డ్రాయింగ్ లో చూడండి లేదు, కానీ ప్రధానంగా వారు తదుపరి వ్యక్తికి గురిపెట్టి చేస్తున్నారు వారి గొలుసు ఉంది. కాబట్టి మీరు ఎక్కడ ఈ ప్రజలు అనుబంధ జాబితా సంచరిస్తారు అనుకుంటే - ఆ ప్రజలు అన్ని ఊహించుకోండి వాటికి సంబంధించిన విలువలను కలిగి మరియు కూడా లైన్ లో తదుపరి వ్యక్తికి సూచించారు - మీరు లింక్ జాబితా సంచరిస్తారు అనుకుంటే, ఉదాహరణకు, గాని విలువలు సవరించడానికి ఆ వంటి విలువ లేదా ఏదో లేదా శోధన, అప్పుడు మీరు నిర్దిష్ట వ్యక్తి ఒక పాయింటర్ కలిగి చెయ్యవచ్చును. కాబట్టి మేము ఒక డేటా రకాన్ని నోడ్ పాయింటర్ చూడాలని. ఈ ఉదాహరణకు, ఇది కర్సర్ కాల్ తెలియజేయండి. ఈ పేరు మరొక సాధారణ పద్ధతిగా ఇటెరేటర్ లేదా అలాంటిదే ఉంటుంది దాని పై iterating మరియు దీన్ని సూచించే ఇందులో నోడ్ కదిలే ఎందుకంటే. ఈ ఇక్కడ మా కర్సర్ ఉంటుంది. మా కర్సర్ మొదటి మా జాబితాలో మొదటి అంశానికి ఆకర్షిస్తాయి. కాబట్టి మనం చేయాలనుకుంటున్నారా ఉంది మేము ప్రధానంగా, కర్సర్ నిరంతర ఉంటుంది సైడ్ నుండి సైడ్ కు కదిలే. ఈ సందర్భంలో, మనం జాబితా తదుపరి మూలకం దానిని తరలించాలనుకుంటున్న. శ్రేణితో, మనం అని మేము 1 ఇండెక్స్ పెంచడానికి చెబుతా ఉంది. ఈ సందర్భంలో, మనం ఏమి చేయాలి వాస్తవానికి, ఈ ప్రస్తుత వ్యక్తి గురి ఇది వ్యక్తి కనుగొనడం మరియు ఆ తరువాతి విలువ చేస్తాడు. కర్సర్ మేము మీరు ఏమి అప్పుడు, ఒక కణుపు పాయింటర్ గా అయితే మేము కర్సర్ కు సూచిస్తుంది ఆ విలువ పొందడానికి కావలసిన ఉంది. మేము ఆ నోడ్ ను మరియు సూచించే చోట తర్వాత, ఒకసారి ఆ నోడ్ ఉన్నాము, కావలసిన. కర్సర్ కు సూచిస్తుంది నిజమైన నోడ్ పొందేందుకు, సాధారణంగా మనం (* కర్సర్) ద్వారా సూచిస్తాయి. మీరు కర్సర్ కు సూచిస్తుంది నిజమైన నోడ్ ఇస్తుంది. మరియు ఆ తర్వాత, మనం చేయాలనుకుంటున్నారా మేము ఆక్సెస్ చెయ్యాలనుకుంటున్న ఉంది నోడ్ యొక్క తదుపరి విలువ ఆ ఏ. Struct లోపలి విలువలు ప్రాప్తి చేయడానికి, ఆ చేయుటకు మేము డాట్ ఆపరేటర్లు ఉంటాయి. కాబట్టి అప్పుడు (* కర్సర్) ఉంటుంది. తర్వాత. కానీ ఈ, * కర్సర్ చుట్టూ బ్రాకెట్లలో కలిగి పరంగా ఒక బిట్ దారుణంగా ఉంది అందువలన మేము కర్సర్-> ఈ మొత్తం ప్రకటన స్థానంలో. ఈ విధంగా ఒక బాణం మేకింగ్, ఒక డాష్ మరియు తరువాత కంటే ఎక్కువ గుర్తు. కర్సర్-> తదుపరి. వాస్తవానికి మీరు నోడ్ పొందుతాయి కర్సర్ను పాయింట్లు. ఆ విలువ తరువాతి ఉంది. బదులుగా స్టార్ మరియు డాట్ కలిగి కాబట్టి, మీరు ఒక బాణంతో ఆ భర్తీ చేస్తున్నాము. మీరు ఈ వాక్యనిర్మాణం ఉపయోగించడానికి ప్రయత్నించండి నిర్ధారించుకోండి చాలా జాగ్రత్తగా ఉండండి. మేము విలువ యాక్సెస్ అనుకుంటే ఇప్పుడు మనము, మన కర్సర్ కలిగి ముందు, మేము, కర్సర్-> తదుపరి కలిగి కానీ కర్సర్ కు సూచిస్తుంది ఆ నోడ్ వద్ద విలువ యాక్సెస్ చేయడానికి, మేము కేవలం సే నోడ్-> విలువ. అక్కడ నుండి, మేము విలువలు మరియు అని నోడ్స్ నిర్వచించిన చేసిన ఏ డేటా రకం ఉంది. అది ఒక పూర్ణాంకానికి నోడ్ అది కర్సర్-> విలువ కేవలం పూర్ణాంకాలు అన్నారు. కాబట్టి మేము ఆ కార్యకలాపాలను చేయవచ్చు, ఇది వేర్వేరు విలువలు, మొదలైనవి కేటాయించి, సమానతలను తనిఖీ కాబట్టి మీరు తదుపరి వ్యక్తికి మీ కర్సరును మరల్చటానికి అనుకుంటే మీరు మీరు ఏమి, మీరు నిజంగా కర్సర్ విలువ మార్చండి. కర్సరు నోడ్ పాయింటర్ కనుక, మీరు నిజమైన పాయింటర్ చిరునామా మార్పు మీ జాబితా తదుపరి నోడ్ యొక్క చిరునామాకు. ఇది మీరు iterate అవకాశం ఉన్న కొన్ని స్మృతి. నేను వ్యాఖ్య ఏదో ఒకటి ఉంటుంది, మీరు బహుశా విలువ ప్రాప్తి చేయడానికి వెళుతున్న ఆ లేదా నిర్దిష్ట నోడ్ తో ఏదో ఒకటి. ఇది ఆఫ్ ప్రారంభించడానికి, నేను నా కర్సర్ ప్రారంభంలో సే లింక్ జాబితాలో మొదటి మూలకం సూచించడానికి అన్నారు. కాబట్టి అప్ ముందుకు, నేను నోడ్ యొక్క తల అని వివరించారు. నేను ముందు చెప్పినట్లుగా, విడుదల నిజంగా ముఖ్యమైనది. మీరు పూర్తి చేసిన తర్వాత మీరు జాబితా ప్రతి మూలకం విడిపించేందుకు ఆ నిర్ధారించుకోవాలి. మీరు ఇకపై ఆ గమనికలు యొక్క సంబంధం లేదు చేసినప్పుడు, ఆ గమనికలు యొక్క ఉచిత ఆ నిర్ధారించుకోవాలి. మీరు ఏ మెమరీ లీకేజ్ నివారించడానికి కావలసిన లో కానీ మీరు ఇక్కడ చాలా జాగ్రత్తగా ఉండాలనుకుంటున్నాను. గమనికలు అన్ని ఆ నోడ్ పాయింట్లు ఆ తరువాత, మీరు ఉచిత ఒక వ్యక్తి ముందుగానే ఉంటే పోతాయి ఇస్తున్నాయి. అది ఒక బిట్ అధిక విలువగల చేయడానికి వ్యక్తి ఉదాహరణ కు వెళుతున్నారు, లెట్స్ ఈ సందర్భంలో వారు ఒక రాక్షసుడు ఒక సరస్సు కదిలించడం మినహా, ఈ ప్రజలు. మేము విడిపించేందుకు చేసినప్పుడు, మేము కోల్పోతారు లేదు నిర్ధారించుకోవాలి మరియు మేము నిజంగా వారికి విముక్తి చేయడానికి ముందే ఏ నోడ్స్ వీడలేదు. ఉదాహరణకు, మీరు కేవలం ఇక్కడ ఈ గై ఉచిత కాల్ చేస్తే అప్పుడు అతను విముక్తి అవుతుంది కాని అప్పుడు ఈ కుర్రాళ్ళు అన్ని ఆపై లాస్ట్ ఉంటుంది మరియు వారు ఆఫ్ డ్రిఫ్ట్ మరియు డౌన్ వస్తుంది. కాబట్టి మేము బదులుగా, మేము మిగిలిన లింక్ నిర్వహించడానికి కావలసిన నిర్ధారించుకోవాలి. జాబితాలో మొదటి మూలకం పాయింతు మా తల పాయింటర్. ఇది మొదటి వ్యక్తి యాంకర్గా ఒక తాడు వంటి రకమైన ఉంది. మీరు విడిపించేందుకు మీరు చేయాలనుకుంటున్నారా గల ఒక జాబితాను కలిగి ఉంది - మీరు మొదటి మొదటి మూలకం విడిపించేందుకు చేయాలనుకుంటే, మీరు ఒక తాత్కాలిక పాయింటర్ కలిగి ఆ పాయింట్లు మొదటి మూలకం ఏది కు. కాబట్టి మీరు మీ తాత్కాలిక పాయింటర్ ఇక్కడ పై ఉంది. ఆ విధంగా, మేము మొదటి నోడ్ యొక్క పట్టు కోల్పోయింది. ఆపై, ఎందుకంటే మేము, మొదటి నోడ్ విముక్తి కావడం మనకు తెలుసు అప్పుడు మేము ఈ తాడు, ఈ యాంకర్, మా తల, తరలించవచ్చు నిజానికి మొదటి ఒక సూచించే ఏమైనా మార్చాలి. కాబట్టి ఈ తల వాస్తవానికి ఇప్పుడు రెండవ మూలకం సూచిస్తుంది. ఇప్పుడు మేము, టెంప్ నిల్వ ఏమైనా విముక్తికై అనుమతించబడతాయి అందువలన మేము మా జాబితాలో ఇతర నోడ్స్ అన్ని ముప్పుగా లేకుండా ఆ వేయండి చేయవచ్చు. మీరు ఈ చేయగల మరొక విధంగా ఉంటుంది ప్రతిసారీ మీరు జాబితాలో చివరి మూలకం కేవలం విడిపించేందుకు వారు హామీ ఉన్నందున ఏదైనా మళ్లించాల్సిన లేదు. కాబట్టి మీరు ఈ ఒక, అప్పుడు ఉచిత ఈ ఒక, ఉచిత ఈ ఒక ఉచిత కాలేదు. ఖచ్చితంగా పనిచేస్తుంది కానీ లింక్ జాబితాలు స్వభావం ద్వారా, ఒక బిట్ నెమ్మదిగా అని మేము వెంటనే చివరి వెళ్లగలదు కాదు. మేము లింక్ జాబితాలో ప్రతి మూలకం ప్రయాణించేందుకు కలిగి మరియు ఒక శూన్య సూచించే అని తనిఖీ, ప్రతిసారీ తనిఖీ తరువాత ఒకసారి మేము, ఆ తర్వాత ఉచిత ముగింపు చేరుకోవడానికి. మీరు ఈ ప్రక్రియ చేయడానికి ఉంటే, మీరు నిజంగా, ఇక్కడ తనిఖీ చేస్తుంది అది ఉండండి, ఇక్కడ తనిఖీ, ఇక్కడ తనిఖీ, అప్పుడు ఉండండి, ఇక్కడ తనిఖీ, ఇక్కడ తనిఖీ, తిరిగి వెళ్ళడం ఇక్కడ తనిఖీ, మరియు అప్పుడు ఉండండి. ఒక బిట్ ఎక్కువ సమయం పడుతుంది. అవును. [విద్యార్థి] ఇది చివర ఒక నిష్క్రమణ పాయింటర్ నిల్వ ఒక లింక్ జాబితా చేయడానికి సాధ్యమవుతుంది? ఆ ఖచ్చితంగా సాధ్యమవుతుంది. ప్రశ్న పునరుక్తి చేయడానికి ఇది ఒక లింక్ జాబితా నిర్మాణం కలిగి సాధ్యమే మీరు లింక్ జాబితా ముగింపును సూచించే ఒక పాయింటర్ కలిగి ఇటువంటి? నేను అవకాశం చెబుతారు, మరియు మీరు మీ లింక్ జాబితాలో ఏదో ఇన్సర్ట్ ప్రతి సమయం భావిస్తున్న మీరు ఆ వంటి ఆ పాయింటర్ మరియు విషయాలు అప్డేట్ వుంటుంది. ఉదాహరణకు మీరు ఒక నోడ్ * తోక ఉంటుంది. కానీ మీరు ఈ లక్షణం అమలు చేసినప్పుడు, మీరు, విక్రయాల్లో ఆలోచించడం కలిగి ఎన్ని ఎక్కువ సార్లు నేను, ఈ పైగా iterating కావడం am ఎలా కష్టం అది తోక ట్రాక్ అలాగే తల ఉంచడానికి అవతరిస్తుంది అలాగే నా ఇటెరేటర్, మరియు ఆ వంటి వాటిని వంటి. ఆ లేదు -? >> [విద్యార్థి] అవును. సాధ్యమే, కానీ డిజైన్ నిర్ణయాలు పరంగా, మీరు ఎంపికలను బరువును కలిగి ఉంటాయి. ఇక్కడ మీరు ఒక లింక్ జాబితా ప్రతి మూలకం విడిపించేందుకు అనుమతించే కోడ్ యొక్క అస్థిపంజరం ఉంది. మళ్ళీ, నేను ఒక అనుబంధ జాబితా పై iterating చేస్తున్నాను నుండి, నేను కర్సర్ రకమైన కావాలి వెళుతున్న లేదా ఇటెరేటర్. కర్సర్ NULL వరకు మేము iterating ఉంటాయి. మీ కర్సర్ NULL ఉన్నప్పుడు iterate చేయకూడదని ఆ జాబితాలో ఏదైనా లేదు అంటే ఎందుకంటే. కాబట్టి ఇక్కడ నేను ఒక తాత్కాలిక నోడ్ * తయారు నేను పరిగణలోకి నేను ఏమి సూచించే, నా జాబితాలో మొదటి ఉంది మరియు నేను ముందుకు 1 మరియు నేను తాత్కాలిక నిల్వ లో ఏ ఉచిత నా కర్సరును మరల్చటానికి. ఇప్పుడు మేము అనుసంధాన జాబితాలు లోకి ఇన్సర్ట్ వస్తారు. నా అనుబంధ జాబితా లో మూడు నోడ్స్ కలిగి, మరియు సాధారణ విషయం తో వెళ్ళి లెట్స్ మేము మా లింక్ జాబితా చివరిలో మరొక నోడ్ ఇన్సర్ట్ చోట. ఆ చేయుటకు మేము అని అన్ని మేము అడ్డంగా వెళ్ళడం ఉంది లింక్ జాబితా యొక్క ప్రస్తుత ముగింపు ఉన్న కనుగొనేందుకు, శూన్య కు సూచిస్తుంది కావాల్సిన నోడ్ కాబట్టి - ఈ ఒకటి - తరువాత, చెప్పడానికి నిజంగా, ఈ ఒక చివరి నోడ్ కు వెళ్ళడం లేదు; మేము నిజంగా మరొక ఒక చూడాలని. కనుక మేము ఇన్సర్ట్ చేసిన వెళ్లడానికి ఈ ప్రస్తుత ఒక పాయింట్ వుంటుంది. కాబట్టి ఇప్పుడు ఈ Red వ్యక్తి ఇక్కడ లింక్ జాబితాలో చివరి నోడ్ అవుతుంది. కాబట్టి లింక్ జాబితాలో చివరి నోడ్ యొక్క స్వభావం అది శూన్య పాయింతు ఉంటుంది. కాబట్టి అప్పుడు మనం చేయవలసి ఉంటుంది శూన్య ఈ Red గై యొక్క పాయింటర్ సమితి. అక్కడ. కానీ మేము రెండవ మరియు మూడవ ఒక మధ్య ఒక నోడ్ ఇన్సర్ట్ చెయ్యడానికి ఏమి కోరుకుంటే? మేము నిర్ధారించుకోవాలి ఎందుకంటే ఒక చాలా సులభమైనది కాదు ఆ మేము మా లింక్ జాబితాలో ఏ నోడ్ యొక్క పోనివ్వకండి ఆ. మనం చేయవలసి ఉంటుంది మేము ప్రతి ఒక మేమే సంధానిస్తుంది నిర్ధారించుకోండి ఉంది. ఉదాహరణకు, ఈ రెండవ కాల్ చూద్దాం. మీరు చెప్పారు ఉంటే రెండవది ఇప్పుడు ఈ కొత్త పాయింతు మరియు మీరు ఈ వ్యక్తి నష్టపోతున్న చేయడం అవుతుంది అప్పుడు, అక్కడ ఒక పాయింటర్ చేసి అతనికి ఏ లింక్ ఉండదు. బదులుగా - నేను మళ్ళీ ఈ డ్రా చేస్తాము. నా కళాత్మక సామర్థ్యాలను క్షమించు. మేము కేవలం నేరుగా క్రొత్త 2 లింక్ లేదు మీకు. మేము చివరి పట్టు ఖచ్చితంగా చేసుకోవాలి. మనం చెయ్యవలసింది అనుకోవచ్చు తాత్కాలిక పాయింటర్ కలిగి ఉంది న అనుబంధంగా చేస్తాడు ఆ అంశానికి. కాబట్టి అప్పుడు మేము అక్కడ ఒక తాత్కాలిక పాయింటర్ ఉంది. మేము ఈ మూడవ ఒక ట్రాక్ ఉంచబడిన మనకు తెలుసు కాబట్టి, 2 ఇప్పుడు మా క్రొత్త లింక్ చేయవచ్చు. మరియు ఈ కొత్త Red గై 2 మరియు 3 లో మాత్రం ఉంటే, అప్పుడు ఏమి ఆ వ్యక్తి పాయింటర్ సూచించడానికి ఉండబోతుంది? >> [విద్యార్థి] టెంప్. ఉష్ణం. అవును. కాబట్టి ఈ Red గై యొక్క తదుపరి విలువ టెంప్ అని అన్నారు. మీరు లింక్ జాబితాలు లోకి ఇన్సర్ట్ చేసిన తర్వాత, మేము అని చూసింది సులభంగా, ఒక తాత్కాలిక శ్రేణి సృష్టించడం ద్వారా చివర ఏదో జోడించండి లేదా మేము మా శ్రేణి యొక్క మధ్యలో ఏదో జోడించడానికి కోరుకుంటే, అప్పుడు ఎక్కువ shuffling ఒక బిట్ పడుతుంది. మీరు, ఉదాహరణకు, ఒక క్రమబద్ధీకరించబడతాయి అనుసంధాన జాబితా అప్పుడు మీరు ఆ ఖర్చులు మరియు ప్రయోజనాలను అంచనా రకమైన ఉంటుంది మీరు ఒక క్రమబద్ధీకరించబడతాయి శ్రేణి కలిగి అనుకుంటే, మీరు ఇది ఇన్సర్ట్ ఆ ప్రతిసారీ అర్థం, ఎందుకంటే అది ఒక బిట్ ఎక్కువ సమయం చెప్పారు. మీకు తర్వాత మీరు ఉంటే, మేము పొందుతారు వంటి మేము, మీరు ఉంటుంది మీరు ప్రతిదీ క్రమంలో అని తెలిస్తే అనుబంధ జాబితా ద్వారా శోధన, అప్పుడు సులభంగా ఉంటుంది. కాబట్టి మీరు ఆ ఖర్చులు మరియు ప్రయోజనాలను అంచనా అనుకోవచ్చు. ఒక లింక్ జాబితా ఇన్సర్ట్ చెయ్యడానికి మరొక మార్గం జాబితా ప్రారంభం ఇన్సర్ట్ ఉంది. మేము ఇక్కడ మా ANCHOR డ్రా ఉంటే - ఈ మా అధినేత - మరియు ఈ ప్రజలు, దానికి లింక్ చేసారు మరియు తర్వాత మేము ప్రారంభంలో చొప్పించడానికి ఒక కొత్త నోడ్ కలిగి అప్పుడు మనం చెయ్యవలసింది ఉంటుంది? కేవలం, నేను నీలం ఎరుపు లింక్ చెయ్యాలనుకుంటున్న మాట్లాడుతూ తప్పు అంటే ఏమిటో వాటిలో మొదటిది ఎందుకంటే? ఇక్కడికి జరుగుతుంది? ఈ మూడు అన్ని కోల్పోయింది ఉంటుంది. కాబట్టి మేము అలా చేయకూడదని. మళ్లీ, మేము తాత్కాలిక పాయింటర్ రకమైన కలిగి ఉండాలి తెలిసింది చేసిన. ఈ వ్యక్తి ఒక తాత్కాలిక పాయింట్ కలిగి ఎంచుకోండి యొక్క లెట్. అప్పుడు మేము తాత్కాలిక కు నీలం ఒక పాయింట్ కలిగి మరియు తర్వాత నీలం ఎరుపు స్థానం. మేము నిజంగా చూసేందుకు మీరు ఎందుకంటే నేను ఇక్కడ ప్రజలు ఉపయోగించి నేను ఎందుకు కారణం ప్రజలు పట్టుకుని మరియు మేము వారికి ఒక లింక్ను కలిగి నిర్ధారించాడు మేము ఆ వంటి మరొక చేతితో లేదా ఏదో వీడలేదు ముందు. ఇప్పుడు మేము లింక్ జాబితాలు యొక్క జ్ఞానం కలిగి - మేము అనుబంధ జాబితా సృష్టించవచ్చు ఎలా మరియు ఆ నోడ్సుకోసం టైప్ డెఫినిషన్ కలిగి కోసం నిర్మాణాలు సృష్టించడానికి మరియు తర్వాత ఆ లింక్ జాబితా యొక్క తల ఒక పాయింటర్ ఉందని మేకింగ్ - ఒకసారి, ఆ కలిగి మరియు మేము ఒక అర్రే ద్వారా ప్రయాణించేందుకు ఎలా , వివిధ అంశాలను యాక్సెస్, మేము ఇన్సర్ట్ చెయ్యడానికి ఎలా మరియు మేము వారిని ఎలా అప్పుడు మేము అక్షరదోషాలు లోకి పొందవచ్చు. సాధారణంగా, మీరు లింక్ జాబితాలు తో ఆపరేటింగ్ అలవాటుపడతారు ఆ ప్రశ్నలు ఒక విభాగం ఉంటుంది మరియు క్యూలు మరియు స్టాక్స్ వంటి వివిధ నిర్మాణాలు. అప్పుడు మేము అక్షరదోషాలు లోకి తరలించవచ్చు. అక్షరదోషాలు పంపిణీ కోడ్ ముఖ్యమైన ఫైళ్ళను జంట ఉంది. మొదటి మేము, మేము ఇక్కడ ఈ Makefile మేము గుర్తించాము ఇది మేము నిజంగా ముందు ఎదుర్కొంది లేదు. మీరు pset5 ఫోల్డర్ లోపల కనిపించింది, మీరు, మీరు ఒక. H ఫైలు మేము గుర్తించాము భావిస్తున్న అప్పుడు మీరు రెండు. సి ఫైళ్లను కలిగి ఉంటాయి. ఈ Makefile కంటే ముందు ఉంది, మేము ప్రోగ్రామ్ పేరు అప్పుడు తయారు టైప్ మరియు ఉంటుంది మరియు తర్వాత మేము కంపైలర్ కి పాస్ ఈ వాదనలు మరియు జెండాలు అన్ని చూస్తాము. వేటికి Makefile ఉంది మాకు ఒకేసారి పలు ఫైళ్లను కంపైల్ అనుమతిస్తుంది మరియు మేము కావలసిన ఫ్లాగ్ పాస్. ఇక్కడ మేము ఒక శీర్షికా ఫైలును ఇక్కడ చూడండి. అప్పుడు మేము నిజానికి రెండు మూల ఫైళ్ళు ఉన్నాయి. మేము speller.c మరియు dictionary.c ఉన్నాయి. మీరు అనుకుంటే Makefile సవరించడానికి సంతోషాన్నిస్తుంది. మీరు శుభ్రంగా టైప్ ఉంటే ఇక్కడ గమనించండి, అది ఏమి ఏదైనా తొలగిస్తుంది వాస్తవానికి కోర్. మీరు విభజన లోపంగా వచ్చి ఉంటే, ప్రధానంగా మీరు ఒక కోర్ డంప్ పొందండి. కాబట్టి ఈ ది అగ్లీ లిటిల్ ఫైలు కోర్ అని మీ డైరెక్టరీలో కనిపిస్తుంది. మీరు శుభ్రం చేయడానికి ఆ తొలగించాలని చేస్తాము. ఇది ఏ exe ఫైళ్ళను తొలగిస్తుంది మరియు. O ఫైళ్లు. యొక్క dictionary.h ఒక పరిశీలించి చూద్దాం. ఇది ఒక నిఘంటువు యొక్క కార్యాచరణ ప్రకటించే చెప్పారు. మేము నిఘంటువులో ఏ పదం కోసం గరిష్ట పొడవు కలిగి ఉంటాయి. మేము ఈ సాధ్యమైనంత పొడవైన పదం మాత్రం చెపుతారు. ఇది పొడవు 45 ఉంది. కాబట్టి మేము ఆ పొడవును ఏ పదాలు కొనసాగుతుందని లేదు. ఇక్కడ మేము ఫంక్షన్ నమూనాలను కలిగి ఉంటాయి. మేము ఈ pset కోసం చేస్తూ ఉంటాను ఏది ఎందుకంటే మేము అసలు అమలు లేదు. మేము ఇక్కడ పెద్ద ఫైళ్ళను వ్యవహరించే ఉన్నందున కాని ఈ ఉండదు మరియు ఒక పెద్ద స్థాయిలో కార్యాచరణ అది. h ఫైలు కలిగి ఉపయోగం మీ కోడ్ చదవడం లేదా ఉపయోగించి ఇతరుల ఏమి అర్థం చేయవచ్చు. మీరు హాష్ పట్టికలు లేదా దీనికి విరుద్ధంగా చేస్తే చేసి వారు అమలుచెయ్యాలని ప్రయత్నిస్తుంది. అప్పుడు వారు, నా లోడ్ ఫంక్షన్ చెబుతా అసలు అమలు తేడా అన్నారు, కానీ ఈ నమూనా మార్చదు. ఇక్కడ మేము ఒక నిఘంటువులో పదం ఉంటే నిజమైన తిరిగి, తనిఖీ చేశారు. అప్పుడు మేము ప్రాథమికంగా ఒక నిఘంటువు ఫైలులో జరుగుతాయి లోడ్ కలిగి మరియు తర్వాత కొన్ని డేటా నిర్మాణాన్ని ఇది లోడుచేస్తుంది. మేము, అని, మీ నిఘంటువు యొక్క పరిమాణం తిరిగి, పరిమాణం కలిగి , అది ఎన్ని పదాలు నిల్వ చేయబడతాయి మరియు తర్వాత మీరు చేపట్టిన ఉండవచ్చు అన్ని మెమరీ అప్ కాపాడి, దించుతున్న మీ నిఘంటువు చేస్తున్నప్పుటికీ. యొక్క dictionary.c పరిశీలించి చూద్దాం. మేము ఇప్పుడు అది కేవలం అది ఈ టొడోస్ అన్ని తప్ప, dictionary.h సమానమైన కనిపించే చూడండి. అందువలన, మీ పని. చివరికి, మీరు ఈ కోడ్ యొక్క అన్ని speller.c నింపడం వస్తారు. Dictionary.c, అమలు చేసేటప్పుడు, నిజంగా, ఏమీ ఉండదని కాబట్టి మేము ని వాస్తవ అమలు చూడటానికి speller.c వైపు చూడండి. మీరు, ఈ కోడ్ యొక్క ఏ సవరణ జరగదు ఉన్నప్పటికీ ఇది చదివి లోడ్ అంటారు అర్థం ముఖ్యం, నేను చెక్ కాల్ am, కేవలం, అర్థం దీనిని మ్యాప్, ఫంక్షన్ ఎలా పనిచేస్తుంది చూడటానికి. మేము సరైన వాడుక తనిఖీ చేసే చూడండి. ముఖ్యంగా, ఎవరైనా స్పెల్లర్ నడుస్తుంది, ఈ అది ఇచ్చాపూరితం సూచిస్తుంది డిఫాల్ట్ నిఘంటువు ఫైలు ఉన్నట్లు జరగబోతోంది ఎందుకంటే వాటిని ఒక ఫైల్ నిఘంటువు లో పాస్ కోసం. మరియు తర్వాత వారు స్పెల్ తనిఖీ టెక్స్ట్ లో ఉత్తీర్ణత సాధించవలసి ఉంటుంది. సమయం rusage ఒప్పందాలు మేము తరువాత ఈ pset భాగంగా వ్యవహరించే మేము ఎందుకంటే ఒక పని ని పని కాదు మాత్రమే కానీ వాస్తవానికి అది వేగవంతంగా పొందడానికి. Rusage సైన్ వచ్చి అన్నారు పేరు కాబట్టి అప్పుడు ఆ ఇక్కడ, మేము లోడ్ ఇది మా dictionary.c ఫైళ్ళను ఒక మొదటి కాల్ చూడండి. విజయం మీద నిజమైన, వైఫల్యం మీద తప్పుడు - లోడ్ ఒప్పు లేదా తప్పు చూపిస్తుంది. నిఘంటువు సరిగ్గా లోడ్ లేదు చేస్తే, అప్పుడు speller.c 1 తిరిగి అండ్ క్విట్ కనిపిస్తుంది. అది సరిగా లోడ్ కాని, అది కొనసాగించటానికి జరగబోతోంది. , మేము కొనసాగించాలని, మరియు మేము ఇక్కడ I / కొన్ని ఫైల్ O చూడండి అది టెక్స్ట్ ఫైల్ తెరిచి వ్యవహరించే చేస్తాడు పేరు. ఇక్కడ, ఈ చేస్తుంది టెక్స్ట్ ప్రతి ఒక్క పదం స్పెల్ తనిఖీ ఉంది. కాబట్టి speller.c ఇక్కడే ఏమి టెక్స్ట్ ఫైల్ పదాలు ప్రతి పైగా iterating ఉంది ఆపై నిఘంటువు వాటిని తనిఖీ. ఇక్కడ, మనం చెక్ నిజమైన లేదా తిరిగి ఉంటే చూసే తప్పుగా బూలియన్ ఉన్నాయి. నిఘంటువులో పదం వాస్తవానికి ఉంటే, అప్పుడు చెక్ నిజమైన తిరిగి కనిపిస్తుంది. ఆ పదం తప్పుగా లేదు అంటే. కాబట్టి తప్పుగా తప్పుడు ఉంటుంది, మరియు మేము అక్కడ బ్యాంగ్ ఎందుకు ఆ, సూచన ఉంది. మేము వెళ్లి చేస్తూనే, మరియు అప్పుడు అది పదాలు తప్పుగా ఎన్ని ట్రాక్ ఫైల్ లో ఉన్నాయి. ఇది కొనసాగుతుంది మరియు ఫైల్ ముగుస్తాయి. ఇక్కడ, మీరు కలిగి ఎన్ని తప్పుగా పదాలు నివేదిస్తోంది. ఇది, నిఘంటువు లోడ్ పట్టింది ఎంత సమయం లెక్కిస్తుంది ఇది తనిఖీ పట్టింది ఎంత సమయం ఎంత అది పరిమాణం లెక్కించేందుకు పట్టే సమయాన్ని, ఇది మేము కొనసాగుదాం వంటి చాలా చిన్న ఉండాలి మరియు తర్వాత ఎంత సమయం నిఘంటువు దించుతున్న పట్టింది. ఇక్కడ మేము ఇక్కడ దించుతున్న పిలుపు పైన చూడండి. మేము ఇక్కడ పరిమాణం తనిఖీ ఉంటే, అప్పుడు మేము ఇక్కడ నిఘంటువు యొక్క పరిమాణం నిర్ణయిస్తుంది పరిమాణం కాల్ అని చూడండి. అద్భుతం. ఈ pset కోసం మా పని నిఘంటువు లోడ్ ఇది లోడ్, అమలు చేయడం డేటా నిర్మాణం - మీరు మీకు కావాల్సిన, అది ఒక హాష్ పట్టిక లేదా ఒక ప్రయత్నించండి - నిఘంటువు ఫైల్ నుండి పదాలతో. అప్పుడు మీరు నిఘంటువు పదాలు సంఖ్య అందించే పరిమాణం కలిగి ఉంటాయి. మీరు స్మార్ట్ విధంగా లోడ్ అమలు ఉంటే, అప్పుడు పరిమాణం చాలా సులభమైన ఉండాలి. అప్పుడు మీరు ఇచ్చిన నిఘంటువులో పదం ఉంటే తనిఖీ చేస్తుంది, ఇది తనిఖీ చేశారు. కాబట్టి speller.c స్ట్రింగ్ లో వెళుతుంది మరియు మీరు లేదో ఆ స్ట్రింగ్ తనిఖీ చేయాలి మీ నిఘంటువు లోపల ఉంది. మేము సాధారణంగా ప్రామాణిక నిఘంటువులు మేము గుర్తించాము, కానీ ఈ pset లో, ప్రధానంగా ఏ డిక్షనరీ ఏ భాష లో ఆమోదించింది. కాబట్టి మేము కేవలం పదం లోపల భావించవలసి కాదు. పదం FOOBAR మేము సైన్ పాస్ ఒక నిర్దిష్ట నిఘంటువు నిర్వచించవచ్చు కాలేదు మరియు తర్వాత మేము మెమరీ నుంచి నిఘంటువు కాపాడి, ఇది దించుతున్న చేశారు. మొదటి, నేను హాష్ పట్టిక పద్ధతి వెళ్ళి చేయాలనుకుంటున్న మేము ఆ నాలుగు ఫంక్షన్లు అన్ని అమలు ఎలా గురించి, మరియు నేను, మేము ఆ నాలుగు ఫంక్షన్లు అమలు ఎలా, పద్ధతి ప్రయత్నిస్తుంది వెళ్ళి చేస్తాము మరియు కొన్ని సాధారణ చిట్కాలు గురించి ముగింపు చర్చ వద్ద మీరు pset చేస్తున్న సమయంలో మరియు మీరు ఉపయోగించవచ్చు ఎలా మెమరీ లీకేజ్ తనిఖీ Valgrind. యొక్క హాష్ పట్టిక పద్ధతి పొందడానికి లెట్. ఒక హాష్ పట్టిక బకెట్లు జాబితా కలిగి ఉంటుంది. ప్రతి విలువ, ప్రతి పదం, ఈ బకెట్లు ఒకటి వెళ్ళాలని అన్నారు. ఒక హాష్ పట్టిక ఆదర్శంగా సమానంగా మీరు అక్కడ చేస్తున్న ఈ విలువలు అన్ని పంపిణీ మరియు తర్వాత ఆ బకెట్ వాటిని populates ప్రతి బకెట్ అది విలువలు సమాన సంఖ్య గురించి ఉంది. ఒక హాష్ పట్టిక కోసం నిర్మాణం, మేము లింక్ జాబితాలు యొక్క వ్యూహం ఉంది. ఆ విలువ చెందిన చోట మేము ఒక విలువ పాస్ ఏమి మేము ఉంది, మేము, తనిఖీ ఇది బకెట్ ఇది చెందిన మరియు ఆ బకెట్ సంబంధం అనుబంధ జాబితా లో ఉంచండి. ఇక్కడ, నేను కలిగి హాష్ విధి. ఇది ఒక పూర్ణాంకానికి హాష్ పట్టిక యొక్క. కాబట్టి మొదటి బకెట్ కోసం, 10 క్రింద ఏ పూర్ణాంకాల మొదటి బకెట్ లోకి వెళ్ళండి. ఏదైనా 10 పై పూర్ణ కాని క్రింద రెండవ లోకి 20 ప్రయాణంలో, మరియు ఆ విధంగా మరియు మొదలైనవి. నాకు, ప్రతి బకెట్ ఈ సంఖ్యలు ప్రాతినిధ్యం ఉంది. అయితే, నేను ఉదాహరణకు, 50 లో పాస్ తెలిపారు. మొదటి మూడు పది సంఖ్యల శ్రేణి కలిగి ఉంటే ఇది కనిపిస్తుంది. అయితే నా హాష్ పట్టిక, పూర్ణ ఏ విధమైన లో అయ్యేలా మీరు కాబట్టి నేను గత బకెట్ లోకి 30 పై అన్ని సంఖ్యలు ఫిల్టర్ వుంటుంది. కాబట్టి ఆ క్రమరాహిత్యం హాష్ పట్టిక ఒక రకమైన ఫలితంగా. పునరుద్ఘాటించు ఒక హాష్ పట్టిక కేవలం బకెట్లు ఒక శ్రేణి పేరు ప్రతి బకెట్ అనుబంధ జాబితా ఉంది. ప్రతి విలువ వెళతాడు, అక్కడ మరియు అందువలన లోకి వెళుతుంది బకెట్, గుర్తించడానికి, మీరు హాష్ విధి అని దేనిని చూడాలని అప్పుడు ఒక విలువ తీసుకుని ఈ విలువ కొన్ని బకెట్ అనుగుణంగా చెప్పారు. కాబట్టి ఈ ఉదాహరణ పైన, నా హాష్ ఫంక్షన్ను ప్రతి విలువ పట్టింది. ఇది 10 కంటే తక్కువ అని తనిఖీ. ఇది, అది మొదటి బకెట్ లో ఉంచుతాడు. ఇది కంటే తక్కువ 20 కావచ్చు వెతుకుతుంది నిజమైన ఉంటే రెండవ దానిని ఉంచుతుంది, తనిఖీలను అది 30 కంటే తక్కువ, మరియు ఉంటే, మూడవ బకెట్ లో ఉంచుతుంది ఆపై అన్ని else కేవలం నాలుగో బకెట్ పడుతుంది. మీరు ఒక విలువను కలిగి ఉంటారు చేసినప్పుడు, మీ హాష్ ఫంక్షన్ను తగిన బకెట్ ఆ విలువ ఉంచుతుంది. హాష్ ఫంక్షన్ను ప్రధానంగా మీరు ఎన్ని బకెట్లు తెలుసుకోవాలి. మీ హాష్ పట్టిక పరిమాణం, మీరు బకెట్లు సంఖ్య, , మీరు నిర్ణయించే కోసం, మీరు వరకు ఒక స్థిర సంఖ్య చేస్తాడు కానీ ఒక నిర్దిష్ట సంఖ్య చేస్తాడు. ప్రతి కీ లోకి వెళుతుంది బకెట్ గుర్తించవచ్చు ఆధారపడవచ్చు మీ హాష్ ఫంక్షన్ను కాబట్టి అది సమానంగా పంపిణీ చేసే అటువంటి. ఇప్పుడు లింక్ జాబితాలు మా అమలు, hash పట్టిక ప్రతి నోడ్ లాగానే వాస్తవానికి రకం చార్ కలిగి అన్నారు. కాబట్టి మేము, పదం అనే చార్ శ్రేణి మరియు తరువాత నోడ్ మరొక పాయింటర్ కలిగి అది ఒక లింక్ జాబితా చేస్తాడు ఎందుకంటే అర్థవంతంగా ఉంటుంది. మేము జాబితాలు అనుసంధానం చేసాడు గుర్తుంచుకోండి, నేను తల అనే నోడ్ * చేసిన ఆ లింక్ జాబితాలో మొదటి నోడ్ సూచించే జరిగినది. కానీ మా హాష్ పట్టిక కోసం, మేము అనేక లింక్ జాబితాలు ఉన్నాయి ఎందుకంటే, మనం కావలసిన మేము మా హాష్ పట్టిక ఇలా అనుకుంటున్నారా "ఒక బకెట్ అంటే ఏమిటి?" ఒక బకెట్, కేవలం నోడ్ గమనికలు జాబితా అందువలన బకెట్ ప్రతి మూలకం వాస్తవానికి దాని సంబంధిత లింక్ జాబితా కు సూచిస్తుంది. ఈ సాధారణ తిరిగి వెళ్లడానికి, మీరు, బక్కెట్లు తాము బాణాలు అని చూడండి కాదు అసలు నోడ్స్. హాష్ విధులు ఒకటి అవసరమైన ఆస్తి వారు నిర్ణయాత్మక అని ఉంది. అనగా చేసినప్పుడు మీరు హాష్ సంఖ్య 2, ఆ ఇది ఎల్లప్పుడూ ఒకే బకెట్ తిరిగి ఉండాలి. పునరావృతం ఉంటే, హాష్ విధి వెళ్ళే ప్రతి విలువ, అదే ఇండెక్స్ పొందడానికి ఉంది. మీ హాష్ ఫంక్షన్ను శ్రేణి యొక్క ఇండెక్స్ తిరిగి కాబట్టి ఆ విలువ చెందిన పేరు. నేను ముందు చెప్పినట్లుగా, బక్కెట్లు సంఖ్య, పరిష్కరించబడింది మరియు మీరు తిరిగి మీ సూచిక బకెట్లు సంఖ్య కంటే తక్కువగా ఉండాలి కానీ 0 కన్నా ఎక్కువ. మేము బదులుగా కేవలం ఒక సింగిల్ లింక్ జాబితా యొక్క హాష్ విధులు ఎందుకు కారణం లేదా ఒకే శ్రేణి మేము చాలా సులభంగా ఒక నిర్దిష్ట విభాగానికి జంప్ చెయ్యడానికి కావలసిన ఉంది మేము ఒక విలువ యొక్క లక్షణం తెలిస్తే - బదులుగా మొత్తం పూర్తి నిఘంటువు ద్వారా శోధన కలిగి, అది ఒక నిర్దిష్ట విభాగానికి దూకడం చేయగలదు. మీ హాష్ ఫంక్షన్ను, ఆ ఆదర్శంగా ఖాతాలోకి తీసుకోవాలని ప్రతి బకెట్ సుమారు కీలను అదే ఉంది. హాష్ పట్టిక లింక్ జాబితాలు ఒక సిరీస్ నుంచి అప్పుడు లింక్ జాబితాలు తాము ఒకటి కంటే ఎక్కువ నోడ్ పొందబోతున్నారు. మునుపటి ఉదాహరణ, అవి సమానం కాదు ఉన్నప్పటికీ రెండు వివిధ సంఖ్యలు, హ్యాష్, అదే ఇండెక్స్ చేరాడు. కాబట్టి మీరు పదాలు వ్యవహరించే చేసినప్పుడు, ఒక పదం హ్యాష్ ఉన్నప్పుడు మరొక పదం అదే హాష్ విలువ ఉంటుంది. మేము హ్యాష్ ఉన్నప్పుడు, ఒక కణుపు ఉన్నప్పుడు ఆ, మేము ఢీకొట్టడంతో కాల్ ఏది ఆ బకెట్ వద్ద లింక్ జాబితా ఖాళీగా లేదు. మేము అక్కడ కాల్ పద్ధతిని, పరిశీలించకుండా సరళంగా ఉంటుంది మీరు లింక్ జాబితా వెళ్ళాలని మరియు మీరు ఆ నోడ్ ఇన్సర్ట్ చోట అప్పుడు కనుగొనే మీరు ఢీకొట్టడంతో ఎందుకంటే. మీరు కుడి, ఇక్కడ ఒక రాజీ చెయ్యదగిన చూడగలరు? మీరు చాలా చిన్న హాష్ పట్టిక, బక్కెట్లు యొక్క అతి తక్కువ సంఖ్యలో కలిగి ఉంటే అప్పుడు మీరు ప్రమాదాలలో చాలా చూడాలని. కానీ మీరు చాలా పెద్ద హాష్ పట్టిక చేస్తే మీరు బహుశా, ప్రమాదాలలో తగ్గించడానికి చూడాలని కానీ చాలా పెద్ద డేటా నిర్మాణం చేస్తాడు. ఆ విక్రయాల్లో ఉన్నట్లు జరగబోతోంది. కాబట్టి మీరు మీ pset చేస్తున్న సమయంలో, చుట్టూ ప్లే ప్రయత్నించండి బహుశా ఒక చిన్న హాష్ పట్టిక తయారు మధ్య కానీ అప్పుడు వివిధ అంశాలను ప్రయాణించేందుకు ఒక బిట్ సమయం పడుతుంది వెళుతున్న తెలుసుకునేందుకు ఆ లింక్ జాబితాలు యొక్క. ఏమి లోడ్ చేయడానికి వెళ్తున్నారు నిఘంటువు ప్రతి పదం మీద iterate ఉంది. ఇది నిఘంటువు ఫైలు ఒక పాయింటర్ లో ప్రవహిస్తుంది. కాబట్టి మీరు pset4 లో ప్రావీణ్యం ఆ I / O విధులు ఫైలు యొక్క ప్రయోజనాన్ని చూడాలని మరియు నిఘంటువు ప్రతి పదం మీద iterate. మీరు ఒక కొత్త నోడ్ మారింది నిఘంటువు ప్రతి పదం మీరు మరియు మీరు మీ నిఘంటువు డేటా నిర్మాణం లోపల ఆ నోడ్స్ యొక్క ప్రతి ఒకే చోట చూడాలని. మీరు ఒక కొత్త పదం పొందడానికి ఎప్పుడు మీరు ఒక నోడ్ మారింది వెళుతున్న తెలుసు. కాబట్టి మీరు కలిగి ప్రతి కొత్త పదం కోసం ఒక నోడ్ పాయింటర్ straightaway వెళ్ళి malloc చేయవచ్చు. ఇక్కడ నా నోడ్ పాయింటర్ new_node కాల్ మరియు నేను ఏమి mallocing చేస్తున్నాను? ఒక నోడ్ యొక్క పరిమాణం. నిఘంటువు వాస్తవానికి నిల్వ ఎందుకంటే అప్పుడు, ఒక ఫైల్ నుండి అసలు స్ట్రింగ్ చదవడానికి అప్పుడు ఒక పదం మరియు మేము పొందగలరు ఏ న్యూ లైన్ ద్వారా , విధి fscanf ఉంది అనగా ఫైలు, మేము జారీ చేస్తున్న నిఘంటువు ఫైలు కాబట్టి ఇది ఒక స్ట్రింగ్ కోసం ఫైల్ స్కాన్ మరియు గత వాదన లోకి నెలకొల్పే స్ట్రింగ్. మీరు మేము వద్దకు వెళ్లినందుకు ఉపన్యాసాలు ఒకటి, తిరిగి గుర్తు ఉంటే మరియు రకమైన, CS50 లైబ్రరీ తిరిగి పొరలు ఒలిచిన మేము అక్కడ fscanf అభివృద్దిని చూసింది. Fscanf తిరిగి వెళ్లడానికి, మేము, మేము చదవడం చేస్తున్న ఫైలుని కలిగి ఆ ఫైల్ను ఒక స్ట్రింగ్ చూస్తున్న, మరియు అప్పుడు మేము దాన్ని ఉంచడం చేస్తున్నారు new_node ఒక నోడ్ పాయింటర్ ఎందుకంటే ఇక్కడ నేను new_node-> పదం కలిగి, వాస్తవ నోడ్. కాబట్టి నేను new_node మాట్లాడుతూ నేను, నేను సూచించే చేసే నోడ్ కు వెళ్లాలని మీరు అనుకుంటున్నారా తరువాత పదం ఆ లెక్కించాల్సి. మేము ఆ పదం తీసుకొని హాష్ పట్టిక ఇన్సర్ట్ చెయ్యడానికి మీరు. మేము ఒక నోడ్ పాయింటర్ new_node చేసిన రియలైజ్ మేము ఆ నోడ్ యొక్క చిరునామా ఏమిటి తెలుసుకోవాలని చూడాలని ఎందుకంటే మేము ఎందుకంటే struct యొక్క నోడ్స్ తాము నిర్మాణం, అది ఇన్సర్ట్ చేసినప్పుడు వారు ఒక కొత్త నోడ్ ఒక పాయింటర్ కలిగి ఉంది. కాబట్టి అప్పుడు సూచించడానికి వెళ్ళి ఆ నోడ్ యొక్క చిరునామా ఏమిటి? ఆ చిరునామా new_node అని అన్నారు. ఆ సమంజసం లేదు, మనం ఒక నోడ్ వ్యతిరేకంగా ఒక నోడ్ * new_node చేస్తున్న? సరే. మేము ఒక పదం ఉంది. ఆ విలువ new_node-> పదం. అంటే ఇన్పుట్ చేయదలిచిన నిఘంటువు నుండి పదం ఉంది. మేము ఆ స్ట్రింగ్ మా హాష్ ఫంక్షన్ను కాల్ మీరు సో వాట్ మేము చేయాలనుకుంటున్నారా ఉంది మా హాష్ ఫంక్షన్ను, ఒక స్ట్రింగ్ లో పడుతుంది మరియు తర్వాత మాకు పూర్ణాంకం తిరిగి ఎందుకంటే ఆ పూర్ణాంక ఆ సూచిక వద్ద hashtable ఆ బకెట్ సూచిస్తుంది పేరు సూచిక పేరు. మేము ఆ సూచిక తీసుకొవాలనుకోవటము మరియు తరువాత హాష్ పట్టిక యొక్క ఇండెక్స్ వెళ్ళండి ఆపై new_node వద్ద నోడ్ ఇన్సర్ట్ చెయ్యడానికి ఆ లింక్ జాబితాను ఉపయోగించండి. అయితే మీరు మీ నోడ్ ఇన్సర్ట్ నిర్ణయించుకుంటారు గుర్తుంచుకోండి మీరు క్రమం అనుకుంటే అది మధ్యలో కావచ్చు లేదా ప్రారంభంలో లేదా చివరిలో, మీ చివరి నోడ్ ఎల్లప్పుడూ శూన్య పాయింతు నిర్ధారించుకోండి మా లింక్ జాబితా యొక్క చివరి మూలకం ఉన్న మేము తెలిసిన ఏకైక మార్గం అని ఎందుకంటే. పరిమాణం ఒక నిఘంటువులో పదాల సంఖ్య సూచించే పూర్ణాంక ఉంటే, అప్పుడు దీన్ని ఒక మార్గం పరిమాణం అంటారు చేసినప్పుడు ఆ మేము మా హాష్ పట్టిక ప్రతి మూలకం ద్వారా వెళ్ళి మరియు తర్వాత హాష్ పట్టిక లోపల ప్రతి లింక్ జాబితా ద్వారా iterate మరియు తర్వాత 1 మన కౌంటర్ 1 పెరుగుతుంది ఆ పొడుగు గణించటం. కానీ పరిమాణం అని ప్రతిసారీ, ఒక కాలం పడుతుంది వెళుతున్న మేము ప్రతి లింక్ జాబితా పరిశీలించకుండా సరళంగా మాత్రం ఉన్నారు. మీరు పాస్ ఎలా అనేక పదాల ట్రాక్ బదులుగా, అది చాలా సులభం చేస్తాడు మీరు మీ లోడ్ ఫంక్షన్ ఒక కౌంటర్ ఉన్నాయి కాబట్టి అప్పుడు ఉంటే అవసరమైన వంటి నవీకరణలను, అప్పుడు కౌంటర్, మీరు ఒక ప్రపంచ వేరియబుల్ దానిని సెట్ చేస్తే, పరిమాణం ద్వారా యాక్సెస్ చేయగలరు. సో వాట్ పరిమాణం కేవలం చేయగలిగే లైన్ లో, కేవలం, కౌంటర్ విలువ తిరిగి మీరు ఇప్పటికే లోడ్ వ్యవహరిస్తుంది, నిఘంటువు యొక్క పరిమాణం,. అంటే, నేను అన్నాడు మీరు సహాయకరమైన మార్గం లో లోడ్ అమలు నేను అర్థం ఏమిటి అప్పుడు పరిమాణం చాలా సులభం అన్నారు. కాబట్టి ఇప్పుడు మేము తనిఖీ ను. ఇప్పుడు మేము, ఇన్పుట్ టెక్స్ట్ ఫైల్ పదాలను వ్యవహరించే చేస్తున్నారు అందువలన మేము ఆ ఇన్పుట్ పదాల అనే పరిశీలించలేరని చూడాలని నిఘంటువులో లేదా ఉన్నాయి. పెనుగులాట లాగానే, మేము కేస్ చురుకుదనాన్ని అనుమతించాలనుకుంటున్న. మీరు, వారు మిశ్రమ కేసు ఉన్నప్పటికీ, అన్నీ జారీ ఆ నిర్ధారించుకోవాలి స్ట్రింగ్ పోల్చి పిలిచింది ఉన్నప్పుడు, సమానంగా ఉంటాయి. నిఘంటువు టెక్స్ట్ ఫైళ్లు పదాలు నిజానికి చిన్న ఉంటాయి. మరొక విషయమేమంటే, మీరు ప్రతి పదం ప్రతి స్ట్రింగ్, జారీ చేసే ఊహించవచ్చు ఉంది అక్షర లేదా సంగ్రహంగా రాయడానికి కలిగి ఉంటుంది అన్నారు. సంగ్రహంగా రాయడానికి మా నిఘంటువులో చెల్లుబాటు అయ్యే పదాలు మాత్రమే ఇస్తున్నాయి. మీరు అపాస్టిఫియర్ S ఒక పదం కలిగి అయితే, మీ నిఘంటువు ఒక నిజమైన చట్టబద్ధమైన పదం మీ హాష్ పట్టిక లో నోడ్ యొక్క ఒక చేస్తాడు. పదం ఉంటే పనిచేసే తనిఖీ, అది మా హాష్ పట్టిక లో తీరవలసినదే. నిఘంటువులో పదం ఉంటే, అప్పుడు నిఘంటువు పదాలు అన్ని, hash పట్టిక ఉంటాయి కాబట్టి యొక్క హాష్ పట్టిక లో ఈ పదం కోసం చూద్దాం. మేము నుండి మేము మా హాష్ ఫంక్షన్ను అమలు తెలుసు ప్రతి ఏకైక పదం ఎప్పుడూ అదే విలువకు హ్యాష్ ఉండదు, అప్పుడు మేము తెలిసిన బదులుగా మా మొత్తం పూర్తి హాష్ పట్టిక ద్వారా శోధించే, మేము నిజంగా ఆ పదం చెందిన అని అనుబంధ జాబితా వివరాలు తెలుసుకోండి. ఇది నిఘంటువులో ఉంటే, అప్పుడు ఆ బకెట్ లో ఉంటుంది. పదం జారీ మా స్ట్రింగ్ యొక్క పేరు ఉంటే మేము, చేయగలరు, మేము కేవలం హాష్ చేస్తాడు లింక్ జాబితా వద్ద పదం మరియు లుక్ hashtable విలువ [హాష్ (పదం)] వద్ద. అక్కడ నుండి, వాట్ వి కాన్ డు, మేము ఈ పదం కోసం శోధించడానికి నోడ్స్ యొక్క చిన్న ఉపసమితి కలిగి ఉంది అందువలన మేము, walkthrough ఆరంభంలో ఒక ఉదాహరణగా ఉపయోగించి, అనుబంధ జాబితా సంచరిస్తారు చేయవచ్చు తరువాత, కర్సర్ కు సూచిస్తుంది ఎక్కడ string పదం మీద పోల్చి కాల్ ఆ పదం, మరియు ఆ పోల్చి లేదో చూడండి. మీరు మీ హాష్ ఫంక్షన్ను నిర్వహించడానికి విధంగా ఆధారపడి, అది క్రమబద్ధీకరించబడతాయి అయితే, మీరు, తప్పుడు ఒక బిట్ మునుపటి తిరిగి చేయగలరు అది క్రమబద్ధీకరించనిది అయితే కానీ, అప్పుడు మీరు మీ లింక్ జాబితా ద్వారా నదీ ప్రవాహానికి అడ్డంగా ప్రయాణం కొనసాగించాలని మీరు మీరు జాబితా యొక్క చివరి మూలకం క్లిక్ చెయ్యండి. మరియు మీరు ఇప్పటికీ మీరు లింక్ జాబితా ముగింపు చేరుకున్నారు సమయానికి పదం దొరకలేదు ఉంటే, మీ నిఘంటువులో పదం లేదు అని, అందువలన ఆ పదం, చెల్లదు మరియు చెక్ తప్పుడు తిరిగి ఉంటుంది. మేము malloc'd చేసిన నోడ్స్ యొక్క ఉచిత చోట ఇప్పుడు మేము, దించుతున్న వచ్చారు కాబట్టి ఉచిత మా హాష్ పట్టిక లోపల నోడ్స్ అన్ని. మేము లింక్ జాబితాలు మరియు ఆ నోడ్స్ అన్ని ఉచిత పై iterate మీరు చూడాలని. మేము అనుబంధ జాబితా విడిపించేందుకు పేరు మీరు ఉదాహరణగా walkthrough పైన చూస్తే, అప్పుడు మీరు హాష్ పట్టిక ప్రతి మూలకం కోసం ఆ విధానాన్ని పునరుక్తి చెయ్యవచ్చును. నేను, walkthrough చివరలో ఈ పైగా వెళ్తారో కానీ Valgrind మీరు సరిగ్గా విముక్తి ఉంటే మీరు చూడవచ్చు ఉపకరణం మీరు malloc'd లేదా మీరు malloc'd చేసిన ఏదైనా, ఏ ఇతర పాయింటర్ చేసిన ప్రతి నోడ్. మేము బకెట్లు ఒక పరిమిత సంఖ్యలో పేరు కాబట్టి, hash పట్టికలు యొక్క మరియు ఒక విలువ తీసుకుని, దానిని నిర్దిష్ట బకెట్ ఆ విలువ కేటాయిస్తుంది ఒక హాష్ ఫంక్షన్ను. ఇప్పుడు మేము ప్రయత్నాలు వస్తారు. ఇలా రకం ప్రయత్నిస్తుంది, మరియు నేను కూడా ఒక ఉదాహరణను డ్రా చేస్తాము. సాధారణంగా, మీరు, సంభావ్య అక్షరాల వ్యూహరచనలు కలిగి ఆపై చేసినప్పుడు మీరు ఒక పదం నిర్మిస్తోంది చేస్తున్నారు ఆ లేఖ అవకాశాలను విస్తృత పరిధిలో ఒక నిఘంటువు కోసం లింక్ చేయగలరు. కొన్ని పదాలు, C ప్రారంభం తరువాత కొనసాగించాలని కానీ ఇతరులు ఉదాహరణకు, ఓ కొనసాగించాలని. ఒక trie ఆ పదాల అవకాశాలున్న కలయిక అన్ని ఊహించుకోవడానికి ఒక మార్గం. ఒక trie పదాలు కలిగి ఉన్న అక్షర క్రమాన్ని ట్రాక్ అన్నారు, అవసరమైనప్పుడు ఒక లేఖ అక్షరాల బహుళ తరువాత కాబట్టి, ఆఫ్ విభాగాలు మరియు చివరిలో ఆ పదం చెల్లుబాటు అయ్యే లేదా అని ప్రతి పాయింట్ వద్ద సూచిస్తున్నాయి మీరు పదం మాత్ స్పెల్లింగ్ అయితే, భావించడం లేదు MA చెల్లుబాటు అయ్యే పదం, కానీ మాత్ ఎందుకంటే. కాబట్టి మీ trie లో, అది మాత్ తర్వాత వాస్తవానికి చెల్లుబాటు అయ్యే పదం సూచిస్తుంది. మా trie ప్రతి నోడ్ వాస్తవానికి, నోడ్ గమనికలు యొక్క వ్యూహం కలిగి అన్నారు మరియు మేము, ప్రత్యేకంగా, ఆ నోడ్ గమనికలు యొక్క 27 చూడాలని వర్ణమాల ప్రతి అక్షరం అలాగే అపాస్టిఫియర్ పాత్ర కోసం ఒకటి. ఆ శ్రేణి లో ప్రతి మూలకం స్వయంగా మరొక నోడ్ సూచించడానికి అన్నారు. ఆ నోడ్ ఆ తర్వాత ఏమీ ఉంటే, NULL ఉంది, అయితే అప్పుడు మేము ఆ పదం క్రమంలో ఎటువంటి అక్షరాలు ఉన్నాయి మనకు తెలుసు. ఆ నోడ్ NULL కానీ, ఆ లేఖ క్రమంలో మరింత అక్షరాలు ఉన్నాయి అర్థం. మరియు తర్వాత ఇంకా, ప్రతి నోడ్ ఒక పదం లేదా యొక్క చివరి అక్షరం అయినా సూచిస్తుంది. యొక్క ఒక trie ఒక ఉదాహరణ లోకి వెళ్ళి తెలపండి. మొదటి నేను ఈ శ్రేణి లో 27 నోడ్స్ కోసం గది ఉంటుంది. నేను పదం BAR ఉంటే - నేను పదం BAR ఉంది మరియు నాకు ఆ ఇన్సర్ట్ చెయ్యడానికి, మొదటి లేఖ నా trie ఖాళీగా ఉంది కనుక B ఉంది, B వర్ణమాల యొక్క రెండవ అక్షరం, కాబట్టి నేను ఈ ఇండెక్స్ వద్ద ఇక్కడ ఈ ఉండడానికి ఎంచుకున్న వెళుతున్న. నేను ఇక్కడ B కలిగి వెళుతున్న. B ఉన్న అన్ని అక్షరాలు మరో శ్రేణి చూపాడు ఒక నోడ్ అవతరిస్తుంది లేఖ B. తర్వాత అనుసరించండి ఆ ఈ సందర్భంలో, నేను పదం BAR వ్యవహరించే చేస్తున్నాను కాబట్టి ఇక్కడ వెళ్తుంది. ఒక తరువాత, నేను అప్పుడు లేఖ R, దాని స్వంత కలయిక ఒక ఇప్పుడు పాయింట్లు కలిగి ఆపై R ఇక్కడ ఉంటుంది. BAR పూర్తి పదం, కాబట్టి నేను మరొక నోడ్ కు R పాయింట్ కలిగి వెళుతున్న ఆ పదం చెల్లుబాటు అని చెప్పాడు. ఆ నోడ్ కూడా, నోడ్స్ యొక్క వ్యూహం కలిగి అన్నారు కానీ ఆ NULL కావచ్చు. కానీ సాధారణంగా, ఆ వంటి కొనసాగించవచ్చు. మేము వేరే ఉదాహరణ వెళ్లి ఆ, ఒక బిట్ మరింత స్పష్టమైన అవుతుంది కాబట్టి అక్కడే నాతో బేర్. ఇప్పుడు మేము మా నిఘంటువు లోపలి BAR ఉన్నాయి. ఇప్పుడు మేము పదం బాజ్ కలిగి చెప్పారు. మేము B ప్రారంభం మరియు మేము ఇప్పటికే మా నిఘంటువులో ఉన్న అక్షరాలు ఒకటిగా B ఉన్నాయి. A. తరువాత దట్ మేము ఇప్పటికే ఉన్నాయి. కానీ బదులుగా, మేము Z క్రింది ఉంటాయి. కాబట్టి అప్పుడు మా శ్రేణి ఒక మూలకం Z ఉండబోతుంది, మరియు అందువలన ఒక పదం యొక్క మరొక సరిఅయిన చివరి సూచించడానికి అన్నారు. కాబట్టి మేము, మేము అప్పుడు B ద్వారా కొనసాగుతుంది మరియు ఒక చూడండి B మరియు A. ప్రారంభమవుతాయి పదాలకు ప్రస్తుతం మా నిఘంటువులో రెండు వేర్వేరు ఎంపికలు ఉన్నాయి మేము పదం FOOBAR ఇన్సర్ట్ అనుకున్నారు సే. అప్పుడు మేము F. వద్ద ఒక ఎంట్రీ చేస్తుంది F మొత్తం శ్రేణి చూపాడు ఒక నోడ్ ఉంది. మేము ఓ వెళ్లి, ఓ గుర్తించవచ్చు, O తర్వాత పూర్తి జాబితాను లింకులు. మేము B కలిగి ఆపై కొనసాగింది, మనం భావిస్తున్న ఒక ఆపై ఆర్ FOOBAR వరకు డౌన్ కాబట్టి అప్పుడు FOOBAR ప్రవహిస్తుంది అన్ని మార్గం ఒక సరైన పదం. కాబట్టి అప్పుడు ఇది ఒక చెల్లుబాటు అయ్యే పదం ఉంటుంది. ఇప్పుడు నిఘంటువులో మా తరువాతి పదాన్ని వాస్తవానికి పదం foo అంటారు. మేము F క్రింది F. ఏమి చెబుతా? నిజానికి ఇప్పటికే ఓ కోసం ఒక స్థలం కలిగి ఉంటాయి, కాబట్టి నేను కొనసాగుతుంది వెళుతున్న. నేను ఒక కొత్త వన్ లేదు. కొనసాగించు. Foo ఈ నిఘంటువు ఒక చెల్లుబాటు అయ్యే పదం, కాబట్టి నేను సూచిస్తున్నాయి వెళుతున్న ఆ చెల్లుబాటు అయ్యే ఉంటుంది. నేను నా క్రమం ఆపివేస్తే, ఆ సరిగ్గా ఉంటుంది. కానీ మేము B కి foo నుండి మా క్రమం డౌన్ కొనసాగినట్లయితే మరియు కేవలం FOOB కలిగి, FOOB పదం కాదు, మరియు ఒక చెల్లుబాటు అయ్యే ఒక సూచించిన కాదు. ఒక trie, మీరు ప్రతి నోడ్ అది చెల్లని పదం లేదా, అయినా సూచిస్తుంది చేశారు తర్వాత ప్రతి నోడ్ కూడా 27 నోడ్ గమనికలు యొక్క వ్యూహం ఉంది తాము నోడ్స్ తరువాత సూచించబడిన. ఇక్కడ మీరు ఈ నిర్వచించడానికి కావలసిన ఎలా ఒక మార్గం. మేము ఒక నోడ్ * తల ​​ఉండడం అయితే, హాష్ పట్టిక ఉదాహరణలో వలె మా లింక్ జాబితా ప్రారంభం సూచించడానికి, మేము కూడా మీరు చూడాలని మా trie ప్రారంభంలో ఉన్న తెలుసుకోవడం విధంగా. కొంతమంది ప్రజలు కాల్ చెట్లు ప్రయత్నిస్తుంది, మరియు మూలం నుంచి వచ్చింది పేర్కొంది. కాబట్టి మేము మా చెట్టు యొక్క root మేము గ్రౌన్దేడ్ ఉండండి నిర్ధారించుకోవాలి మా trie ఉంది ఎక్కడ. మేము ఇప్పటికే రకమైన పైగా వెళ్ళింది మీరు నిఘంటువు లోకి ప్రతి పదం లోడ్ ఆలోచించే కాలేదు మార్గం. ముఖ్యంగా, ప్రతి పదం కోసం మీరు మీ trie ద్వారా iterate మీరు చూడాలని మేము ఈ సందర్భంలో పిల్లలు అని - మరియు పిల్లలు ప్రతి మూలకం తెలుసుకునేందుకు - వేరే లేఖ అనుగుణంగా, ఆ విలువలు తనిఖీ చేయండి వెళుతున్న లేఖ సంబంధించిన నిర్దిష్ట సూచిక వద్ద. సీజర్ మరియు విజెనెరే తిరిగి అన్ని మార్గం ఆలోచించడం కాబట్టి, తెలుసుకోవడం మీరు ఒక అక్షర సూచిక తిరిగి మాప్ రకం చెయ్యవచ్చు ప్రతి అక్షరం ఖచ్చితంగా ఒక Z ద్వారా, ఒక అక్షర లేఖ ను అందంగా సులభంగా అన్నారు కానీ దురదృష్టవశాత్తు, సంగ్రహంగా రాయడానికి కూడా మాటలలో ఒక అంగీకరించిన పాత్ర ఉంటాయి. నేను కూడా ASCII విలువను ఏమిటి ఖచ్చితంగా తెలియదు తద్వారా కోసం మీరు మొదటి ఒకటి లేదో నిర్ణయించే ఒక సూచిక కావలసిన వారికి లేదా చివరి, మీరు ఆ కోసం ఒక హార్డ్ కోడెడ్ చెక్ చేయడానికి ఉంటుంది మరియు ఆ ఉంచారు ఉదాహరణకు ఇండెక్స్ 26, లో. కాబట్టి మీరు [i] పిల్లలను విలువ తనిఖీ చేస్తున్నాము పేరు [i] సమంగా యు ఆర్ ఎట్ ఏ అక్షరాన్ని. ఆ NULL అయితే, ఏ అవకాశం అక్షరాలు ప్రస్తుతం లేదు అంటే ఆ క్రమంలో గత కారణంగా, కాబట్టి మీరు malloc మీరు చూడాలని మరియు ఒక కొత్త నోడ్ తయారుచేస్తాయి మరియు దాన్ని ఆ పిల్లలు [i] పాయింట్ కలిగి తద్వారా మీరు సృష్టించడానికి - మేము దీర్ఘ చతురస్రం ఒక అక్షరం అమర్చినప్పుడు - కొత్త నోడ్ లో కాని NULL మరియు పాయింట్ పిల్లలు తయారు. ఆ NULL కానీ, foo మా ఉదాహరణకు లాగే మేము ఇప్పటికే FOOBAR ఉన్నప్పుడు, మేము, కొనసాగించటానికి మరియు మేము ఎన్నడూ ఒక కొత్త నోడ్ తయారు కానీ కేవలం ఒప్పుకు is_word సెట్ లేదు ఆ పదం చివర. కాబట్టి అప్పుడు ముందు వంటి, ఇక్కడ మీరు ఒక సమయంలో ప్రతి అక్షరం రంజింప చేయడానికి ప్రయత్నిస్తున్నాము, అది బదులుగా లెక్కించేందుకు కలిగి, పరిమాణానికి మీరు సులభంగా చేస్తాడు మరియు మొత్తం చెట్టు ద్వారా వెళ్ళి నేను ఎన్ని పిల్లలు ఉన్నాయి లెక్కించేందుకు తరువాత ఎడమ వైపు మరియు కుడి వైపున ఎన్ని గుర్తు, ఆఫ్ శాఖలు మరియు ఆ వంటి వాటిని, మీరు కోసం చాలా సులభంగా చేస్తాడు మీరు మీరు జోడించే ఎన్ని పదాలు ట్రాక్ ఉంటే మీరు లోడ్ వ్యవహరించే చేసినప్పుడు. కాబట్టి ఆ విధంగా పరిమాణం కేవలం పరిమాణం యొక్క ఒక అంతర్జాతీయ వేరియబుల్ తిరిగి రావచ్చు. ఇప్పుడు మేము తనిఖీ వస్తారు. ముందు అదే ప్రమాణాలు, మేము కేస్ చురుకుదనాన్ని అనుమతించాలనుకుంటున్న పేరు. అలాగే, మేము తీగలను మాత్రమే అక్షర అక్షరాలు లేదా సంగ్రహంగా రాయడానికి భావించాలి పిల్లలు దీర్ఘ 27 యొక్క వ్యూహం ఎందుకంటే, కాబట్టి వర్ణమాల ప్లస్ అపాస్టిఫియర్ యొక్క అక్షరాలు అన్ని. మీరు చెయ్యవచ్చును ఏమి ఉంది తనిఖీ కోసం మీరు root వద్ద మొదలు చెయ్యవచ్చును root కలిగి ఒక శ్రేణి ఆకర్షిస్తాయి ఎందుకంటే ఒక పదం యొక్క ప్రారంభ సాధ్యం అక్షరాలు అన్ని. మీరు, అక్కడ ఆరంభమవుతుంది చేస్తున్నారు మరియు తర్వాత మీరు తనిఖీ చూడాలని ఈ విలువ NULL లేదా, ఉంది విలువ NULL ఉంటే, ఆ నిఘంటువు ఏ విలువలను కలిగి అర్థం కాదు ఎందుకంటే ఆ నిర్దిష్ట క్రమంలో ఆ లేఖ కలిగి. అది యొక్క NULL, అప్పుడు ఆ పదం వెంటనే తప్పుగా అని అర్థం. కానీ NULL కాదు, అప్పుడు మీరు, కొనసాగించవచ్చు మొదటి అక్షరం పదం ఒక సాధ్యం మొదటి లేఖ పేర్కొన్నారు, కాబట్టి ఇప్పుడు నేను రెండవ అక్షరం, ఆ క్రమంలో, నా నిఘంటువు లోనే ఉంది తనిఖీ మీరు. కాబట్టి మీరు మొదటి నోడ్ యొక్క పిల్లల సూచిక వెళ్ళండి చూడాలని మరియు ఆ రెండవ లేఖ ఉంది తనిఖీ చేసుకోండి. అప్పుడు మీరు ఆ క్రమం ఒక చెల్లుబాటు అయ్యే లేదా అని తనిఖీ చెయ్యడానికి ఆ విధానాన్ని పునరుక్తి మీ trie లోపల. ఆ సూచిక పాయింట్ల వద్ద నోడ్ పిల్లలు శూన్య కు వెంటనే, మీరు, ఆ క్రమంలో లేదు తెలుసు కానీ అప్పుడు మీరు, మీరు ఇన్పుట్ చేసిన పదం యొక్క చివరి చేరుకోవడానికి ఉంటే అప్పుడు మీరు ఈ క్రమంలో పూర్తి చేసారు ఇప్పుడు తనిఖీ మీరు మరియు నా trie లోపల అది దొరకలేదు, చెల్లుబాటు అయ్యే లేదా ఆ పదం? కాబట్టి మీరు ఆ తనిఖీ మీరు, మరియు ఆ సమయంలో మీరు ఆ క్రమంలో అనిపిస్తే, అప్పుడు మీరు ఆ పదం చెల్లుబాటు అయ్యే లేదా అని తనిఖీ చెయ్యడానికి మీరు ఎందుకంటే మేము FOOB ఉండటంతో నేను తీసుకున్న మునుపటి సందర్భంలో గుర్తుంచుకోండి మేము కనుగొన్నాము కానీ అసలు చెల్లుబాటు అయ్యే పదం కాదు అని ఒక చెల్లుబాటు అయ్యే క్రమం ఉంది. అదేవిధంగా, మీరు మీ trie లో నోడ్స్ అన్ని దించుతున్న మీరు ప్రయత్నాలలో దించుతున్న కోసం. క్షమించాలి. దించుతున్న లో మేము అన్ని నోడ్స్ విముక్తి పేరు హాష్ పట్టికలు లాగానే, మేము కూడా నోడ్స్ యొక్క ఉచిత మీరు ప్రయత్నాలలో. దించుతున్న వాస్తవానికి పైకి అడుగు నుండి సులభమైన పని చేస్తుంది ఈ తప్పనిసరిగా లింక్ జాబితాలు ఎందుకంటే. కాబట్టి మేము విలువలు అన్ని న మేము కలిగి ఉండే నిర్ధారించుకోవాలి మరియు వాటిని స్పష్టంగా అన్ని ఉచిత. మీరు ఒక trie పని మీకు చేయాలనుకుంటున్నారా వెళ్లి ఏమి మొదటి అడుగు మరియు ఉచిత సాధ్యమైనంత తక్కువ నోడ్ ప్రయాణించడానికి ఉంది మరియు, అప్పుడు ఆ పిల్లలు అన్ని వరకు వెళ్లి ఉచిత అందరి అప్ వెళ్లి ఉచిత, మొదలైనవి Trie మొదటి దిగువ పొర వ్యవహరించే వంటి కైండ్ మీరు ప్రతిదీ విముక్తి చేసిన తర్వాత ఆపై టాప్ వెళుతున్నారు. ఈ పునరావృత ఫంక్షన్ ఉపయోగపడుట ఎక్కడ మంచి ఉదాహరణ. మీరు, మీ trie దిగువన పొర విముక్తి చేసిన అప్పుడు మీరు, అది మిగిలిన దించుతున్న కాల్ మీరు ప్రతి చిన్న విడిపించేందుకు నిర్ధారించాడు - మీరు రకమైన ఇది చిన్న ప్రయత్నిస్తాడు ఊహించడానికి చేయవచ్చు. కాబట్టి మీరు మీ root ఉన్నాయి. నేను 26 డ్రా లేదు కాబట్టి నేను అది సరళీకృతం చేస్తున్నాను. మీరు ఈ కలిగి, మరియు ఈ పదాల క్రమాన్ని ప్రతిబించించడానికి పేరు ఈ చిన్న అన్ని సర్కిల్ల అక్షరాల చెల్లుబాటు అయ్యే సన్నివేశాలు అక్షరాలు ఉంటాయి. యొక్క ఒక బిట్ మరింత చెయ్యనివ్వండి. మీరు ఏమి అనుకుంటున్నారా చూడాలని ఇక్కడ ఆపై ఉచిత ఈ కింది ఉచితం మరియు మీరు ఇక్కడ టాప్ ఒక దిగువన ఉచిత ఈ ఒక ఉచిత ముందు ఎందుకంటే ఇక్కడ రెండవ స్థాయి మీరు ఉచిత ఏదో, అప్పుడు మీరు నిజంగా ఇక్కడ ఈ విలువ కోల్పోతుంది. మీరు మొదటి అడుగు విడిపించేందుకు నిర్ధారించుకోండి ఒక trie కోసం దించుతున్న ముఖ్యమైన వై పేర్కొంది. మీరు ప్రతి నోడ్ తెలియజేస్తుంది నాకు ఇష్టంలేదు గల నేను పిల్లల అన్ని దించుతున్న మీరు. మేము, hash పట్టిక పద్ధతి అలాగే trie పద్ధతి కోసం దించుతున్న పైగా మారారు ఇప్పుడు ఆ మేము Valgrind వద్ద చూడవచ్చు చూడాలని. మీరు కింది ఆదేశాలను తో రన్ Valgrind. మీరు valgrind-v కలిగి ఉంటాయి. మీరు ఈ కొన్ని టెక్స్ట్ ఇచ్చిన స్పెల్లర్ అమలు మీరు అన్ని దోషాలను కోసం తనిఖీ చేస్తున్నాము స్పెల్లర్ ఒక టెక్స్ట్ ఫైల్ తీసుకుని అవసరం ఎందుకంటే. కాబట్టి Valgrind, మీ ప్రోగ్రామ్ రన్ మీరు కేటాయించింది ఎన్ని బైట్లు మీరు చెప్పండి, కనిపిస్తుంది మీరు విముక్తి, మరియు అది మీరు తగినంత విముక్తి లేదో మీరు చెప్పండి ఎలా అనేక బైట్లు లేదా మీరు కావలసినంత ఉచిత కాదు, అని లేదా కొన్నిసార్లు మీరు, ఉచిత నోడ్సుకోసం వంటి ఆ ఇప్పటికే కూడా ఎక్కువ ఉచిత విముక్తి చెయ్యబడిన చేయవచ్చు మరియు కనుక ఇది మీరు లోపాలు తిరిగి కనిపిస్తుంది. మీరు Valgrind ఉపయోగిస్తే, మీరు కొన్ని సందేశాలు ఇస్తుంది మీరు కేవలం తగినంత, తక్కువ తగినంత కంటే గాని విముక్తి లేదో సూచిస్తుంది తగినంత సార్లు కంటే ఎక్కువ లేదా. ఈ pset ఒక భాగం, అది బిగ్ బోర్డు సవాలు ఇచ్చాపూరితం. కానీ మేము ఈ డేటా నిర్మాణాలు వ్యవహరించే చేసినప్పుడు మీ డేటాను నిర్మాణాలు విధంగా త్వరగా మరియు సమర్థవంతమైన ఎలా చూడటానికి సరదాగా ఉంటాము. ప్రమాదాలలో చాలా మీ హాష్ ఫంక్షన్ను దారితీస్తుంది? లేదా మీ డేటా పరిమాణం నిజంగా పెద్దది? అది దాటటానికి సమయం చాలా పడుతుంది? స్పెల్లర్ యొక్క లాగ్ లో, మీరు లోడ్ ఉపయోగించే ఎంత సమయం అందిస్తుంది ,, తనిఖీ పరిమాణం నిర్వహించడం, మరియు దించుతున్న కు అందువలన ఆ, బిగ్ బోర్డు లో పోస్ట్ మీ సహ విద్యార్థులను వ్యతిరేకంగా పోటీ చేయవచ్చు మరియు కొన్ని సిబ్బంది వేగంగా ని కలిగి ఉంది ఎవరు. నేను హాష్ పట్టికలు గురించి గమనించండి చెయ్యాలనుకునే ఒక విషయం మేము భావిస్తారు అని కొన్ని అందంగా సాధారణ హాష్ విధులు ఉన్నాయి ఉంది. ఉదాహరణకు, మీరు ప్రతి బకెట్ కాబట్టి 26 బకెట్లు కలిగి, మరియు ఒక పదం లో మొదటి అక్షరం అనుగుణంగా కానీ ఒక అందమైన క్రమరాహిత్యం హాష్ పట్టిక దారి వెళుతున్న ఉదాహరణకు, M తో ప్రారంభం కంటే X ప్రారంభం ఒక చాలా తక్కువ పదాలు ఉన్నాయి ఎందుకంటే. స్పెల్లర్ చెయ్యటానికి ఒక మార్గం మీరు ఇతర కార్యాచరణ యొక్క అన్ని క్రిందికి అనుకుంటే ఉంది, అప్పుడు మీ కోడ్ అమలు పొందవచ్చు సాధారణ హాష్ ఫంక్షన్ను ఉపయోగించడానికి తరువాత తిరిగి వెళ్లి మీ హాష్ పట్టిక మరియు నిర్వచనం యొక్క పరిమాణం మార్చవచ్చు. హాష్ విధులు కోసం ఇంటర్నెట్ రిసోర్సెస్ చాలా ఉన్నాయి మరియు ఈ pset కోసం మీరు ఇంటర్నెట్ లో హాష్ విధులు పరిశోధన అనుమతించబడతాయి మీరు దాని నుండి వచ్చింది పేరు cite నిర్ధారించుకోండి కాలం కొన్ని సూచనలు మరియు స్ఫూర్తి కోసం. మీరు ఇంటర్నెట్ లో కనిపించిన కొన్ని హాస్ విధి చూసి అనువదించేందుకు స్వాగతం ఉన్నాము. తిరిగి ఆ, మీరు ఎవరైనా trie ఉపయోగిస్తారు చూడండి చేయగలరు వారి అమలు మీ హాష్ పట్టిక లేదా కంటే వేగంగా అనే. మీరు బిగ్ బోర్డ్ అనేక సార్లు సమర్పించవచ్చు. మీ ఇటీవలి ఎంట్రీ రికార్డ్ చేస్తాము. కాబట్టి బహుశా మీరు మీ హాష్ ఫంక్షన్ను మార్చి అప్పుడు చాలా వేగంగా నిజానికి ఆ తెలుసుకుంటారు లేదా ముందు కంటే తక్కువ చాలా. ఒక సరదా పనే ఒక బిట్ ఉంటుంది. ఎల్లప్పుడూ 1 లేదా నెమ్మదిగా సాధ్యం నిఘంటువు చేయడానికి ప్రయత్నిస్తారు 2 సిబ్బంది ఉన్నాయి కాబట్టి కు ఎల్లప్పుడూ వినోదంగా ఉంటుంది. pset కోసం వినియోగ మీరు ఒక ఐచ్ఛిక నిఘంటువు తో స్పెల్లర్ నడుపబడుతుంది మరియు తర్వాత ఒక తప్పనిసరి టెక్స్ట్ ఫైల్. అప్రమేయంగా మీరు ఒక టెక్స్ట్ ఫైల్ తో స్పెల్లర్ అమలు మరియు ఒక నిఘంటువు పేర్కొనండి లేనప్పుడు, నిఘంటువు టెక్స్ట్ ఫైల్, పెద్ద ఒక ఉపయోగించడానికి జరగబోతోంది cs50/pset5/dictionaries ఫోల్డర్లో. ఒక 100,000 పదాలను కలిగి ఉంది. వారు కూడా గణనీయంగా తక్కువ పదాలు కలిగిన చిన్న నిఘంటువు కలిగి ఆ CS50 మీరు చేసింది. అయితే, మీరు చాలా సులభంగా మీ నిఘంటువు చేయవచ్చు - మీరు చిన్న ఉదాహరణలు పని చేయడం అనుకుంటే ఉదాహరణకు, మీరు GDB ఉపయోగించాలనుకుంటున్నాను మరియు మీరు నిర్దిష్ట విలువలు తెలిసిన మీరు మీ హాష్ పట్టిక కు మ్యాప్ చేయదలిచిన. కాబట్టి మీరు, కేవలం BAR, బాజ్, foo, మరియు FOOBAR మీ స్వంత టెక్స్ట్ ఫైల్ తయారు కేవలం చేయవచ్చు ఒక టెక్స్ట్ ఫైల్ లో ఆ తయారు, 1 లైన్ తో ఆ ప్రతి వేరు ఆపై అక్షరాలా మాత్రమే ఉండవచ్చు 1 లేదా 2 పదాలు కలిగి మీ స్వంత టెక్స్ట్ ఫైల్ తయారు కాబట్టి మీరు అవుట్పుట్ ఉండాలి ఖచ్చితంగా ఏమి ఆ. మీరు సవాలు అమలు చేసినప్పుడు బిగ్ బోర్డు తనిఖీ చేసే నమూనా టెక్స్ట్ ఫైళ్లు కొన్ని యుద్ధం మరియు శాంతి మరియు ఒక జేన్ ఆస్టన్ నవల లేదా అలాంటిదే ఉంటాయి. మీరు మొదలు పెడుతున్నారు కాబట్టి, అది మీ స్వంత టెక్స్ట్ ఫైళ్లు చేయడానికి చాలా సులభం ఆ మాత్రమే పదాల జంట లేదా బహుశా 10 కలిగి మీరు ఫలితం ఉండాలి ఏమి అంచనా, తద్వారా తరువాత, ఆ వ్యతిరేకంగా నియంత్రిత ఉదాహరణ యొక్క ఎక్కువ అది తనిఖీ. కాబట్టి మేము, విషయాలను ఊహించడం మరియు గీయడం వ్యవహరించే ఉన్నందున మళ్ళీ నేను మీరు కలం మరియు కాగితం ఉపయోగించడానికి ప్రోత్సహిస్తాము ఇది నిజంగా ఈ ఒక మీకు సహాయం వెళుతున్న ఎందుకంటే - మీ trie కనిపించే తీరును హాష్ పట్టిక లేదా ఎలా, బాణాలు గీయడం, మీరు బాణాలు వెళ్తున్నారు పేరు ఏదో ఉండండి చేసినప్పుడు, మీరు కావలసినంత పట్టుకుని, మీరు ఏ లింక్లను కనుమరుగవుతుంది చూస్తారు మరియు వెల్లడైంది మెమరీ అగాధం పడే. కాబట్టి, దయచేసి మీరు కోడ్ లిఖించడానికి పొందుతారు ముందు విషయాలను డ్రా ప్రయత్నించండి. మీరు విషయాలను వెళ్లాలని ఎలా అర్థం కనుక విషయాలను గీయండి ఎందుకంటే అప్పుడు నేను మీరు అక్కడ తక్కువ పాయింటర్ muddles ఆకస్మికంగా చేస్తాము హామీ. అన్ని కుడి. నేను మీరు ఈ pset తో అదృష్టం చాలా ఉత్తమ అనుకుంటున్నారా మీరు. ఇది బహుశా తీవ్ర ఒకటి. కాబట్టి, తొలి ప్రారంభించడానికి ప్రయత్నించండి విషయాలను డ్రా, విషయాలను డ్రా, అదృష్టం. ఈ Walkthrough 5 ఉంది. [CS50.TV]