1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:11,137 [संगीत खेल] 3 00:00:11,137 --> 00:00:12,220 डेविड जे Malan: सब ठीक है. 4 00:00:12,220 --> 00:00:13,950 इस CS50 है. 5 00:00:13,950 --> 00:00:18,560 इस हफ्ते पांच जारी रखा है, और हम कुछ अच्छी खबर है और कुछ बुरी खबर है. 6 00:00:18,560 --> 00:00:21,140 तो अच्छी खबर यह है कि CS50 है इस शुक्रवार की शुरूआत. 7 00:00:21,140 --> 00:00:24,430 आप हमारे साथ शामिल करना चाहते हैं, यहां सामान्य यूआरएल के लिए सिर. 8 00:00:24,430 --> 00:00:28,670 इससे भी अच्छी खबर है, कोई व्याख्यान इस 13 वीं सोमवार आ रहा है. 9 00:00:28,670 --> 00:00:31,970 थोड़ा कम बेहतर खबर है, प्रश्नोत्तरी शून्य अगले बुधवार है. 10 00:00:31,970 --> 00:00:33,840 अधिक जानकारी के लिए किया जा सकता है यहाँ इस URL पर पाया. 11 00:00:33,840 --> 00:00:36,340 और अगले कुछ दिनों में हम रिक्त स्थान को भरने हो जाएगा 12 00:00:36,340 --> 00:00:39,234 कमरे के संबंध में हम आरक्षित होगा. 13 00:00:39,234 --> 00:00:41,400 बेहतर खबर है हूँ एक पाठ्यक्रम में व्यापक समीक्षा हो 14 00:00:41,400 --> 00:00:43,570 सत्र इस आ शाम में सोमवार. 15 00:00:43,570 --> 00:00:46,270 पाठ्यक्रम के लिए देखते रहो स्थान और जानकारी के लिए वेबसाइट. 16 00:00:46,270 --> 00:00:49,290 यह एक है, भले ही धारा, छुट्टी, भी रूप में अच्छी तरह से पूरा करेगा. 17 00:00:49,290 --> 00:00:50,490 18 00:00:50,490 --> 00:00:52,940 सबसे अच्छी खबर, अगले शुक्रवार को व्याख्यान. 19 00:00:52,940 --> 00:00:56,220 तो यह एक परंपरा है कि हम है पाठ्यक्रम के अनुरूप है. 20 00:00:56,220 --> 00:00:58,100 Just-- यह अद्भुत होने जा रहा है. 21 00:00:58,100 --> 00:01:02,510 आप की तरह बातें देखेंगे लगातार समय डेटा संरचनाओं 22 00:01:02,510 --> 00:01:04,730 और हैश तालिकाओं और पेड़ों और कोशिश करता है. 23 00:01:04,730 --> 00:01:07,150 और हम जन्मदिन की समस्याओं के बारे में बात करेंगे. 24 00:01:07,150 --> 00:01:09,440 सामान की एक पूरी गुच्छा अगले शुक्रवार इंतजार कर रहा है. 25 00:01:09,440 --> 00:01:11,212 26 00:01:11,212 --> 00:01:12,200 ठीक. 27 00:01:12,200 --> 00:01:13,190 किसी भी तरह. 28 00:01:13,190 --> 00:01:17,080 >> इसलिए हम किया गया है कि याद क्या है की इस तस्वीर पर ध्यान केंद्रित 29 00:01:17,080 --> 00:01:18,980 हमारे कंप्यूटर की मेमोरी के अंदर. 30 00:01:18,980 --> 00:01:22,875 तो स्मृति या राम जहां कार्यक्रमों है आप उन्हें चला रहे हैं, जबकि मौजूद हैं. 31 00:01:22,875 --> 00:01:25,215 आप एक डबल क्लिक करें आइकन कुछ कार्यक्रम चलाने के लिए 32 00:01:25,215 --> 00:01:27,520 या एक डबल क्लिक करें कुछ फ़ाइल को खोलने के लिए चिह्न 33 00:01:27,520 --> 00:01:30,430 यह आपके कठिन से भरी हुई है ड्राइव या ठोस राज्य ड्राइव 34 00:01:30,430 --> 00:01:34,190 राम, रैंडम एक्सेस मेमोरी, जहां में सत्ता से दूर चला जाता है जब तक यह रहता है 35 00:01:34,190 --> 00:01:36,700 लैपटॉप ढक्कन बंद कर देता है या आप प्रोग्राम से बाहर निकलें. 36 00:01:36,700 --> 00:01:38,960 >> अब जब कि स्मृति की जो आप शायद 37 00:01:38,960 --> 00:01:41,950 1 गीगाबाइट इन दिनों, 2 गीगाबाइट, या और भी अधिक, 38 00:01:41,950 --> 00:01:44,420 आम तौर पर बाहर रखी है किसी दिए गए कार्यक्रम के लिए 39 00:01:44,420 --> 00:01:47,170 आयताकार के इस प्रकार में वैचारिक मॉडल 40 00:01:47,170 --> 00:01:50,860 हम तल पर ढेर है जिससे और शीर्ष पर अन्य सामान का एक गुच्छा. 41 00:01:50,860 --> 00:01:53,140 बहुत शीर्ष पर बात हम इस तस्वीर को देखा है 42 00:01:53,140 --> 00:01:55,670 लेकिन इससे पहले कभी नहीं के बारे में बात की थी तथाकथित पाठ खंड है. 43 00:01:55,670 --> 00:01:58,419 पाठ खंड सिर्फ एक अच्छा तरीका है शून्य और लोगों कह के कि 44 00:01:58,419 --> 00:02:01,150 अपने वास्तविक संकलित कार्यक्रम रचना. 45 00:02:01,150 --> 00:02:03,910 >> तो जब आप डबल क्लिक करें अपने मैक या पीसी पर माइक्रोसॉफ्ट वर्ड, 46 00:02:03,910 --> 00:02:08,030 आप डॉट चलाते समय या एक पर मारियो स्लेश अपने टर्मिनल विंडो में लिनक्स कंप्यूटर, 47 00:02:08,030 --> 00:02:12,460 रचना कि शून्य और लोगों पद या मारियो अस्थायी रूप से जमा हो जाती है 48 00:02:12,460 --> 00:02:16,610 तथाकथित में अपने कंप्यूटर की रैम में एक विशेष कार्यक्रम के लिए पाठ खंड. 49 00:02:16,610 --> 00:02:19,080 जाता है कि नीचे initialized और गई डेटा. 50 00:02:19,080 --> 00:02:22,655 इस वैश्विक चर सामान की तरह है, हम में से कई का प्रयोग नहीं किया गया है कि, 51 00:02:22,655 --> 00:02:24,910 लेकिन इस अवसर पर हम है वैश्विक चर था 52 00:02:24,910 --> 00:02:28,819 या स्थिर रुप से तार परिभाषित कि कठिन "नमस्ते" जैसे शब्दों कोडित है 53 00:02:28,819 --> 00:02:31,860 उपयोगकर्ता से नहीं ले रहे हैं कि कि अपने कार्यक्रम में हार्ड कोडित रहे हैं. 54 00:02:31,860 --> 00:02:34,230 >> अब, नीचे तल पर हम तथाकथित ढेर है. 55 00:02:34,230 --> 00:02:37,665 और ढेर, इस प्रकार अब तक, हम किया गया है उद्देश्यों की क्या प्रकार के लिए इस्तेमाल नहीं करते? 56 00:02:37,665 --> 00:02:39,706 57 00:02:39,706 --> 00:02:40,997 ढेर क्या के लिए इस्तेमाल किया गया है? 58 00:02:40,997 --> 00:02:41,160 हाँ? 59 00:02:41,160 --> 00:02:42,070 >> दर्शक: कार्य. 60 00:02:42,070 --> 00:02:43,320 >> डेविड जे Malan: कार्यों के लिए? 61 00:02:43,320 --> 00:02:44,980 कार्यों के लिए क्या मायने में? 62 00:02:44,980 --> 00:02:48,660 >> दर्शक: तुम एक समारोह कहते हैं, तर्क ढेर पर नकल कर रहे हैं. 63 00:02:48,660 --> 00:02:49,660 >> डेविड जे Malan: बिल्कुल. 64 00:02:49,660 --> 00:02:52,650 आप एक समारोह कॉल करते हैं, तो अपने तर्क ढेर पर नकल कर रहे हैं. 65 00:02:52,650 --> 00:02:56,330 इसलिए किसी भी एक्स या वाई या एक या बी आप एक समारोह में गुजर रहे हैं कि 66 00:02:56,330 --> 00:02:58,680 अस्थायी रूप से पर डाल रहे हैं तथाकथित ढेर, 67 00:02:58,680 --> 00:03:02,000 बस Annenberg में से एक की तरह डायनिंग हॉल ट्रे, और भी बातें 68 00:03:02,000 --> 00:03:03,190 स्थानीय चर की तरह. 69 00:03:03,190 --> 00:03:06,290 यदि आपके foo समारोह या अपने स्वैप समारोह स्थानीय चर है, 70 00:03:06,290 --> 00:03:08,602 अस्थायी तरह, उन दो ढेर पर खत्म होता है. 71 00:03:08,602 --> 00:03:11,560 अब, हम के बारे में बहुत ज्यादा बात नहीं करेंगे उन्हें, लेकिन इन वातावरण चर 72 00:03:11,560 --> 00:03:15,690 तल पर हम कुछ समय पहले जब देखा मैं कुंजीपटल एक दिन में futzing था 73 00:03:15,690 --> 00:03:20,050 और मैं चीजों पहुँचने शुरू argv 100 या argv 1000 की तरह, 74 00:03:20,050 --> 00:03:22,320 बस elements-- मैं भूल जाते हैं numbers-- लेकिन उस 75 00:03:22,320 --> 00:03:24,330 मेरे द्वारा पहुँचा जा नहीं करने वाले थे. 76 00:03:24,330 --> 00:03:26,581 हम कुछ देखना शुरू किया स्क्रीन पर कायरता चिह्न. 77 00:03:26,581 --> 00:03:28,330 उन तथाकथित थे पर्यावरण चर 78 00:03:28,330 --> 00:03:32,390 के लिए वैश्विक सेटिंग की तरह मेरे कार्यक्रम या मेरे कंप्यूटर, नहीं करने के लिए 79 00:03:32,390 --> 00:03:37,090 हाल के लिए असंबंधित हम चर्चा है कि बग, 80 00:03:37,090 --> 00:03:39,670 SHELLSHOCK, कि हो गया है काफी कुछ कंप्यूटर नाक में दम. 81 00:03:39,670 --> 00:03:42,960 >> अब अंत में, आज के फोकस में हम अंततः ढेर पर हो जाएगा. 82 00:03:42,960 --> 00:03:44,864 यह स्मृति का एक और हिस्सा है. 83 00:03:44,864 --> 00:03:47,030 और मौलिक यह सब स्मृति में एक ही बात है. 84 00:03:47,030 --> 00:03:48,040 यह एक ही हार्डवेयर है. 85 00:03:48,040 --> 00:03:49,956 हम की तरह बस रहे हैं विभिन्न समूहों के इलाज 86 00:03:49,956 --> 00:03:51,460 के विभिन्न प्रयोजनों के लिए बाइट्स. 87 00:03:51,460 --> 00:03:56,540 ढेर भी जहां होने जा रहा है आपसे अनुरोध है कि चर और स्मृति 88 00:03:56,540 --> 00:03:58,810 ऑपरेटिंग सिस्टम से अस्थायी रूप से संग्रहीत किया जाता है. 89 00:03:58,810 --> 00:04:01,890 >> लेकिन एक समस्या की तरह नहीं है यहाँ, चित्र के रूप में निकलता. 90 00:04:01,890 --> 00:04:05,261 हम की तरह दो के बारे में जहाजों के टकराने के लिए. 91 00:04:05,261 --> 00:04:08,010 आप अधिक से अधिक उपयोग के रूप में, क्योंकि आज हम देख ढेर के रूप में, और 92 00:04:08,010 --> 00:04:11,800 आगे, आप का अधिक से अधिक उपयोग के रूप में ढेर, निश्चित रूप से बुरी बातें हो सकता है. 93 00:04:11,800 --> 00:04:15,054 और वास्तव में, हम है कि पैदा कर सकते हैं जानबूझकर या अनजाने में. 94 00:04:15,054 --> 00:04:16,970 पिछले cliffhanger तो समय इस कार्यक्रम था, 95 00:04:16,970 --> 00:04:20,570 किसी भी कार्य की सेवा नहीं था जो प्रदर्शित करने के अलावा अन्य उद्देश्य 96 00:04:20,570 --> 00:04:24,750 कैसे आप एक बुरा आदमी वास्तव में ले जा सकते हैं किसी कार्यक्रम में कीड़े का लाभ 97 00:04:24,750 --> 00:04:28,460 और यहां तक ​​कि एक एक कार्यक्रम या पर ले पूरे कंप्यूटर सिस्टम या सर्वर. 98 00:04:28,460 --> 00:04:31,660 तो बस नज़र को संक्षेप में, आप तल पर कि मुख्य नोटिस 99 00:04:31,660 --> 00:04:34,510 आदेश पंक्ति में ले जाता है argv अनुसार तर्क,. 100 00:04:34,510 --> 00:04:38,480 और यह एक समारोह च के लिए एक फोन है, अनिवार्य रूप से एक बेनाम समारोह बुलाया 101 00:04:38,480 --> 00:04:40,250 एफ, और यह argv में गुजर रहा है [1]. 102 00:04:40,250 --> 00:04:43,960 >> तो कम में जो भी शब्द उपयोगकर्ता प्रकार इस कार्यक्रम के नाम के बाद शीघ्र, 103 00:04:43,960 --> 00:04:49,310 और फिर यह मनमाना समारोह अप शीर्ष, एफ, एक स्ट्रिंग में लेता है, उर्फ ​​* चार, 104 00:04:49,310 --> 00:04:51,720 हम चर्चा करने के लिए शुरू कर दिया है, के रूप में और यह सिर्फ "बार." यह कॉल 105 00:04:51,720 --> 00:04:53,310 लेकिन हम कुछ भी कह सकते हैं. 106 00:04:53,310 --> 00:04:57,470 और फिर इसके अंदर, वाणी एफ, वर्णों की एक सरणी की 107 00:04:57,470 --> 00:04:59,930 12 ऐसे पात्रों c-- बुलाया. 108 00:04:59,930 --> 00:05:03,580 >> अब, कहानी से मैं कह रहा था एक पल पहले, जहां स्मृति में 109 00:05:03,580 --> 00:05:06,720 सी है, या उन 12 हैं खत्म हो जा घर का काम? 110 00:05:06,720 --> 00:05:07,570 अभी स्पष्ट होना करने के लिए. 111 00:05:07,570 --> 00:05:08,070 हाँ? 112 00:05:08,070 --> 00:05:08,590 >> दर्शक: ढेर पर. 113 00:05:08,590 --> 00:05:09,420 >> डेविड जे Malan: ढेर पर. 114 00:05:09,420 --> 00:05:10,720 तो सी एक स्थानीय चर रहा है. 115 00:05:10,720 --> 00:05:14,079 हम 12 वर्ण या 12 बाइट्स के लिए पूछ रहे हैं. 116 00:05:14,079 --> 00:05:16,120 उन समाप्त करने के लिए जा रहे हैं तथाकथित ढेर पर. 117 00:05:16,120 --> 00:05:18,530 अब अंत में यह अन्य समारोह है कि वास्तव में बहुत उपयोगी है 118 00:05:18,530 --> 00:05:20,571 लेकिन हम वास्तव में इस्तेमाल नहीं किया है यह अपने आप को, strncopy. 119 00:05:20,571 --> 00:05:21,550 120 00:05:21,550 --> 00:05:25,200 यह स्ट्रिंग प्रतिलिपि मतलब है, लेकिन केवल अक्षर, एन अक्षर N. 121 00:05:25,200 --> 00:05:31,990 तो एन अक्षर हो जाएगा सी में बार से नकल. 122 00:05:31,990 --> 00:05:32,980 और कितने? 123 00:05:32,980 --> 00:05:34,110 पट्टी की लंबाई. 124 00:05:34,110 --> 00:05:36,330 तो दूसरे शब्दों में, कि एक लाइन, strncopy, 125 00:05:36,330 --> 00:05:39,500 कॉपी करने के लिए जा रहा है प्रभावी ढंग से करने के लिए ग में पट्टी. 126 00:05:39,500 --> 00:05:42,340 >> अब, बस की तरह का अनुमान लगाने इस कहानी का नैतिक, 127 00:05:42,340 --> 00:05:44,750 क्या यहाँ संभावित समस्याग्रस्त है? 128 00:05:44,750 --> 00:05:49,710 हम लंबाई जाँच कर रहे हैं भले ही बार की और strncopy में इसे पारित, 129 00:05:49,710 --> 00:05:53,145 क्या आप अपने पेट है कह रही है अभी भी इस कार्यक्रम के बारे में टूट? 130 00:05:53,145 --> 00:05:54,410 131 00:05:54,410 --> 00:05:55,220 हाँ? 132 00:05:55,220 --> 00:05:57,491 >> दर्शक: शामिल नहीं है अशक्त चरित्र के लिए कमरे. 133 00:05:57,491 --> 00:05:59,990 डेविड जे Malan: शामिल नहीं है अशक्त चरित्र के लिए कमरे. 134 00:05:59,990 --> 00:06:02,073 में संभावित विपरीत पिछले अभ्यास हम भी नहीं करते 135 00:06:02,073 --> 00:06:04,810 एक प्लस 1 के रूप में इतनी ज्यादा कि अशक्त चरित्र को समायोजित. 136 00:06:04,810 --> 00:06:06,649 लेकिन यह उससे भी बदतर है. 137 00:06:06,649 --> 00:06:07,940 और क्या हम ऐसा करने में विफल रहे हैं? 138 00:06:07,940 --> 00:06:08,432 हाँ? 139 00:06:08,432 --> 00:06:09,307 >> दर्शक: [अश्राव्य] 140 00:06:09,307 --> 00:06:15,440 141 00:06:15,440 --> 00:06:16,440 डेविड जे Malan: बिल्कुल सही. 142 00:06:16,440 --> 00:06:18,490 हम कड़ी मेहनत बहुत मनमाने ढंग से 12 कोडित किया है. 143 00:06:18,490 --> 00:06:19,497 144 00:06:19,497 --> 00:06:21,330 यह इतना नहीं है समस्या है, लेकिन तथ्य 145 00:06:21,330 --> 00:06:25,630 हम भले ही जाँच नहीं कर रहे हैं कि पट्टी की लंबाई कम से कम 12 है 146 00:06:25,630 --> 00:06:28,530 जो मामले में यह होने जा रहा है स्मृति में डाल करने के लिए सुरक्षित 147 00:06:28,530 --> 00:06:30,260 हम आवंटित किया है कि कहा जाता सी. 148 00:06:30,260 --> 00:06:32,960 दरअसल, बार की तरह अगर लंबे 20 वर्ण, 149 00:06:32,960 --> 00:06:39,010 इस समारोह नकल प्रतीत होता है जिससे सी में बार से 20 वर्ण 150 00:06:39,010 --> 00:06:41,310 कम से कम 8 बाइट्स लेने यह नहीं होना चाहिए कि. 151 00:06:41,310 --> 00:06:42,690 यही कारण है कि यहां निहितार्थ है. 152 00:06:42,690 --> 00:06:44,347 >> संक्षेप में, टूटा कार्यक्रम में तो. 153 00:06:44,347 --> 00:06:45,180 एक बड़ी बात ऐसी नहीं है. 154 00:06:45,180 --> 00:06:46,360 शायद तुम विखंडन दोष मिलता है. 155 00:06:46,360 --> 00:06:47,651 हम सभी कार्यक्रमों में कीड़े लिया है. 156 00:06:47,651 --> 00:06:50,196 हम सभी कीड़े हो सकता है सही अब कार्यक्रमों में. 157 00:06:50,196 --> 00:06:51,320 लेकिन निहितार्थ क्या है? 158 00:06:51,320 --> 00:06:54,390 वैसे, यहाँ की एक तेजी से बढ़ी में संस्करण अपने कंप्यूटर की मेमोरी की उस तस्वीर. 159 00:06:54,390 --> 00:06:56,230 यह मेरी ढेर के नीचे है. 160 00:06:56,230 --> 00:06:59,644 और वास्तव में, बहुत नीचे क्या है कहा जाता है माता पिता दिनचर्या पर ढेर, फैंसी तरीका 161 00:06:59,644 --> 00:07:00,560 की है कि मुख्य कह. 162 00:07:00,560 --> 00:07:03,772 समारोह में कहा कि जो कोई भी तो हम के बारे में बात कर रहे हैं कि एफ. 163 00:07:03,772 --> 00:07:05,230 तो इस ढेर के नीचे है. 164 00:07:05,230 --> 00:07:06,640 वापसी पता कुछ नया है. 165 00:07:06,640 --> 00:07:08,810 यह हमेशा वहाँ गया है हमेशा लगता है कि तस्वीर में किया गया. 166 00:07:08,810 --> 00:07:10,440 हम यह करने के लिए ध्यान बुलाया बस कभी नहीं. 167 00:07:10,440 --> 00:07:15,290 यह पता चला है क्योंकि सी तरह काम करता है एक समारोह में एक और कहता है कि जब, 168 00:07:15,290 --> 00:07:18,780 इतना ही नहीं करने के लिए तर्क करना समारोह ढेर पर धकेल दिया हो, 169 00:07:18,780 --> 00:07:22,470 न केवल समारोह के स्थानीय करना चर ढेर पर धकेल दिया हो, 170 00:07:22,470 --> 00:07:26,820 कुछ एक वापसी पता बुलाया भी ढेर पर डाल दिया जाता है. 171 00:07:26,820 --> 00:07:33,330 विशेष रूप से, मुख्य कॉल फू अगर, मुख्य है स्मृति में स्वयं के पते, बैल कुछ, 172 00:07:33,330 --> 00:07:38,240 प्रभावी ढंग से ढेर पर डाल दिया जाता है इतना है कि च इसे क्रियान्वित किया जाता है जब 173 00:07:38,240 --> 00:07:43,630 पाठ में वापस करने के लिए कूद करने के लिए जानता है, जहां क्रियान्वित जारी रखने के लिए खंड. 174 00:07:43,630 --> 00:07:47,760 >> हम धारणा यहाँ कर रहे हैं तो, मुख्य में, तो च बुलाया जाता है. 175 00:07:47,760 --> 00:07:50,200 च पता कैसे करता है जो वापस हाथ नियंत्रण करने के लिए? 176 00:07:50,200 --> 00:07:52,020 खैर, इस छोटे से यहाँ लाल में ब्रेडक्रम्ब, 177 00:07:52,020 --> 00:07:54,978 वापसी पता कहा जाता है, यह सिर्फ चेक, कि वापसी पता क्या है? 178 00:07:54,978 --> 00:07:57,039 ओह, मुझे यहाँ वापस मुख्य करने के लिए कूद करते हैं. 179 00:07:57,039 --> 00:07:59,080 और कहा कि एक छोटा सा है एक अति सरलीकरण की, 180 00:07:59,080 --> 00:08:00,750 शून्य और लोगों क्योंकि मुख्य लिए तकनीकी रूप से कर रहे हैं 181 00:08:00,750 --> 00:08:01,967 यहाँ तकनीक खंड में. 182 00:08:01,967 --> 00:08:03,800 लेकिन उस विचार है. च बस पता है क्या करना है 183 00:08:03,800 --> 00:08:06,680 जहां तक ​​नियंत्रण अंततः वापस चला जाता है. 184 00:08:06,680 --> 00:08:09,790 >> लेकिन जिस तरह से कंप्यूटर लंबी बातें बाहर रखी है 185 00:08:09,790 --> 00:08:12,320 स्थानीय चर की तरह और तर्क इस तरह है. 186 00:08:12,320 --> 00:08:17,180 इस तस्वीर के ऊपर में तो नीले इतना सब, च के लिए ढेर फ्रेम है 187 00:08:17,180 --> 00:08:19,630 स्मृति की कि च विशेष रूप से उपयोग कर रहा है. 188 00:08:19,630 --> 00:08:22,990 तो तदनुसार, कि नोटिस बार इस तस्वीर में है. 189 00:08:22,990 --> 00:08:23,980 बार अपने तर्क था. 190 00:08:23,980 --> 00:08:27,240 और हम ने दावा किया तर्क को कि कार्यों ढेर पर धकेल दिया हो. 191 00:08:27,240 --> 00:08:29,910 और सी, ज़ाहिर है, इस तस्वीर में. 192 00:08:29,910 --> 00:08:33,520 >> और सिर्फ सांकेतिक प्रयोजनों के लिए, शीर्ष बाएँ हाथ के कोने पर नोटिस 193 00:08:33,520 --> 00:08:37,020 ब्रैकेट 0 सी क्या होगा और तो थोड़ा सही करने के लिए नीचे 194 00:08:37,020 --> 00:08:38,220 सी ब्रैकेट 11 है. 195 00:08:38,220 --> 00:08:41,240 तो दूसरे शब्दों में, आप कल्पना कर सकते हैं बाइट्स की एक ग्रिड है कि वहाँ 196 00:08:41,240 --> 00:08:44,380 वहाँ है, जो पहले के ऊपर छोड़ दिया, नीचे जो की 197 00:08:44,380 --> 00:08:48,360 उन 12 बाइट्स के अंतिम है. 198 00:08:48,360 --> 00:08:49,930 >> लेकिन अब तेजी से आगे बढ़ाने के लिए प्रयास करें. 199 00:08:49,930 --> 00:08:55,580 क्या हम पास अगर होने वाला है सी की तुलना में अब है कि एक स्ट्रिंग बार में? 200 00:08:55,580 --> 00:08:59,130 और हम अगर जाँच नहीं कर रहे हैं यह वास्तव में लंबे समय तक 12 से अधिक है. 201 00:08:59,130 --> 00:09:03,146 इस तस्वीर के किस हिस्से में जा रहा है बाइट्स 0, 1, 2, 3 द्वारा ओवरराइट हो, 202 00:09:03,146 --> 00:09:07,890 डॉट डॉट डॉट, 11, और उसके बाद बुरा, 12, 19 के माध्यम से 13? 203 00:09:07,890 --> 00:09:11,820 क्या, यहाँ होने जा रहा है आप आदेश से अनुमान अगर 204 00:09:11,820 --> 00:09:14,790 कि सी ब्रैकेट 0 शीर्ष पर है और सी ब्रैकेट 11 के नीचे तरह है 205 00:09:14,790 --> 00:09:15,812 सही करने के लिए? 206 00:09:15,812 --> 00:09:16,796 हाँ? 207 00:09:16,796 --> 00:09:19,260 >> दर्शक: खैर, यह जा रहा है * चार बार अधिलेखित करने के लिए. 208 00:09:19,260 --> 00:09:22,260 >> डेविड जे Malan: हाँ, ऐसा लग रहा है आप * चार बार अधिलेखित करने के लिए जा रहे हैं. 209 00:09:22,260 --> 00:09:26,245 और भी बुरा है, आप एक बहुत लंबे समय में भेज स्ट्रिंग, आप भी क्या ऊपर लिख सकता है? 210 00:09:26,245 --> 00:09:27,460 211 00:09:27,460 --> 00:09:28,570 वापसी पता. 212 00:09:28,570 --> 00:09:31,380 कौन सा फिर से, बस एक तरह है कार्यक्रम जहां बताने के लिए ब्रेडक्रम्ब 213 00:09:31,380 --> 00:09:34,060 जब एफ के लिए वापस जाने के लिए कहा जा रहा से किया जाता है. 214 00:09:34,060 --> 00:09:37,140 >> तो बुरे लोगों को आम तौर पर क्या करते हैं वे एक कार्यक्रम भर आया है 215 00:09:37,140 --> 00:09:41,290 वे चाहे वह उत्सुक हैं कि इस तरह से दोहन, छोटी गाड़ी 216 00:09:41,290 --> 00:09:43,550 वह या वह ले जा सकते हैं उस बग का लाभ, 217 00:09:43,550 --> 00:09:45,720 आम तौर पर वे नहीं मिलता यह सही पहली बार. 218 00:09:45,720 --> 00:09:48,590 वे सिर्फ उदाहरण के लिए, भेजने शुरू, अपने कार्यक्रम में यादृच्छिक तार, 219 00:09:48,590 --> 00:09:50,260 कीबोर्ड पर कि क्या, या स्पष्ट रूप से वे शायद 220 00:09:50,260 --> 00:09:52,740 एक छोटे से कार्यक्रम के लिए लिखने बस स्वचालित रूप से तार उत्पन्न, 221 00:09:52,740 --> 00:09:55,430 और के द्वारा अपने कार्यक्रम पर पीटना शुरू विभिन्न आदानों की बहुत सारी में भेज 222 00:09:55,430 --> 00:09:56,340 अलग लंबाई में. 223 00:09:56,340 --> 00:09:58,990 >> जैसे ही अपने कार्यक्रम दुर्घटनाओं के रूप में, कि एक अद्भुत बात है. 224 00:09:58,990 --> 00:10:01,020 यह वह अर्थ है क्योंकि या वह की खोज की है 225 00:10:01,020 --> 00:10:02,660 क्या वास्तव में शायद एक बग है. 226 00:10:02,660 --> 00:10:05,830 और फिर वे अधिक चतुर प्राप्त कर सकते हैं और शुरू अधिक बाल बाल केंद्रित थी 227 00:10:05,830 --> 00:10:07,420 उस बग का फायदा उठाने के लिए पर. 228 00:10:07,420 --> 00:10:11,480 विशेष रूप से, क्या वह या वह हो सकता है ऐसा नमस्कार, सबसे अच्छा मामले में, भेज रहा है. 229 00:10:11,480 --> 00:10:12,210 कोई बड़ी बात नहीं. 230 00:10:12,210 --> 00:10:14,750 यह पर्याप्त छोटा है कि एक स्ट्रिंग है. 231 00:10:14,750 --> 00:10:18,100 लेकिन क्या वह या वह भेजता है, और हम, के रूप में यह सामान्यीकरण हूँ 232 00:10:18,100 --> 00:10:20,890 हमले शून्य तो code-- और है कि लोगों को बातें करते हैं 233 00:10:20,890 --> 00:10:25,150 RM-आरएफ तरह, सब कुछ हटा दें कि हार्ड ड्राइव से या स्पैम भेजने 234 00:10:25,150 --> 00:10:27,000 या किसी भी तरह की मशीन पर हमला? 235 00:10:27,000 --> 00:10:29,570 >> इनमें से प्रत्येक तो अगर पत्र एक बस का प्रतिनिधित्व करता है 236 00:10:29,570 --> 00:10:32,380 धारणा, हमले, हमले, हमले, हमले, कुछ बुरा कोड 237 00:10:32,380 --> 00:10:36,410 किसी और ने लिखा है कि, लेकिन उस व्यक्ति को काफी चालाक है 238 00:10:36,410 --> 00:10:40,790 न केवल सभी शामिल उन RM-RFS की, लेकिन यह भी 239 00:10:40,790 --> 00:10:46,100 उसके या उसके पिछले कुछ बाइट्स है मेल खाती है कि एक नंबर हो 240 00:10:46,100 --> 00:10:50,540 का पता करने के लिए अपने या अपने हमले कोड 241 00:10:50,540 --> 00:10:53,820 वह या वह बस में पारित शीघ्र इसे उपलब्ध कराने के द्वारा, 242 00:10:53,820 --> 00:10:58,760 आप प्रभावी रूप से कंप्यूटर चाल कर सकते हैं च क्रियान्वित किया जाता है जब देख में, 243 00:10:58,760 --> 00:11:02,400 ओह, यह मेरे लिए कूद करने के लिए समय है वापस लाल भेजने वाले का पता करने के लिए. 244 00:11:02,400 --> 00:11:06,070 लेकिन वह या वह किसी न किसी तरह है क्योंकि कि वापसी पता छा 245 00:11:06,070 --> 00:11:09,602 उनकी खुद की संख्या के साथ, और वे काफी समझदार हो 246 00:11:09,602 --> 00:11:11,560 कि विन्यस्त किया है करने के लिए नंबर के रूप में, का उल्लेख करने के लिए 247 00:11:11,560 --> 00:11:13,740 सुपर ऊपर देखना वहाँ बाएं हाथ के कोने, 248 00:11:13,740 --> 00:11:18,020 कंप्यूटर के वास्तविक पते उनके हमले कोड में से कुछ की स्मृति, 249 00:11:18,020 --> 00:11:21,740 एक बुरा आदमी कंप्यूटर चाल कर सकते हैं अपने या अपने खुद के कोड को क्रियान्वित करने में. 250 00:11:21,740 --> 00:11:23,700 >> और उस कोड, फिर से, कुछ भी हो सकता है. 251 00:11:23,700 --> 00:11:26,120 यह आम तौर पर कहा जाता है बस जो खोल कोड, 252 00:11:26,120 --> 00:11:29,030 ऐसा नहीं है कि कहने का एक तरीका RM-आरएफ के रूप में सरल आम तौर पर कुछ. 253 00:11:29,030 --> 00:11:32,340 यह वास्तव में बैश की तरह कुछ है या एक वास्तविक कार्यक्रम उसे देता है 254 00:11:32,340 --> 00:11:37,230 या उसे प्रोग्रामेटिक नियंत्रण निष्पादित करने के लिए वे चाहते हैं कि कुछ और. 255 00:11:37,230 --> 00:11:40,210 तो संक्षेप में, यह सब साधारण तथ्य से निकला 256 00:11:40,210 --> 00:11:44,490 शामिल इस बग जाँच नहीं कि अपने सरणी की सीमाओं. 257 00:11:44,490 --> 00:11:47,250 और वैसे भी, क्योंकि कंप्यूटर काम है कि वे 258 00:11:47,250 --> 00:11:49,430 से ढेर उपयोग प्रभावी ढंग से, धारणा, 259 00:11:49,430 --> 00:11:54,830 ऊपर की ओर नीचे, लेकिन फिर तत्वों आप नीचे ऊपर बढ़ने ढेर पर धक्का 260 00:11:54,830 --> 00:11:56,624 यह अविश्वसनीय रूप से समस्याग्रस्त है. 261 00:11:56,624 --> 00:11:58,290 अब, इस के आसपास काम करने के तरीके हैं. 262 00:11:58,290 --> 00:12:00,800 और सच कहूँ तो, भाषाएं हैं जिसके साथ इस के आसपास काम करने के लिए. 263 00:12:00,800 --> 00:12:03,100 जावा, उदाहरण के लिए, प्रतिरक्षा है इस विशेष मुद्दे को. 264 00:12:03,100 --> 00:12:04,110 वे आपको संकेत नहीं देते हैं. 265 00:12:04,110 --> 00:12:05,943 वे तुम्हें नहीं देते प्रत्यक्ष स्मृति पते. 266 00:12:05,943 --> 00:12:08,560 हम हैं कि इस शक्ति के साथ तो स्मृति में कुछ भी छूने के लिए 267 00:12:08,560 --> 00:12:11,580 हम मानते, महान जोखिम, आता चाहते हैं. 268 00:12:11,580 --> 00:12:12,430 >> तो एक आंख बाहर रखने के लिए. 269 00:12:12,430 --> 00:12:14,596 सच में, अगर, महीने में या साल कभी भी आने के लिए 270 00:12:14,596 --> 00:12:17,740 आप कुछ शोषण के बारे में पढ़ा एक कार्यक्रम या एक सर्वर की, 271 00:12:17,740 --> 00:12:22,370 क्या तुमने कभी कुछ का एक संकेत देखते हैं एक बफर अतिप्रवाह हमले की तरह, 272 00:12:22,370 --> 00:12:25,390 या पोट अतिप्रवाह एक और प्रकार है हमले की आत्मा में भी इसी तरह, 273 00:12:25,390 --> 00:12:28,770 वेबसाइट के लिए प्रेरित करती है के रूप में ज्यादा आप यह जानते हैं, नाम, 274 00:12:28,770 --> 00:12:33,170 यह सब बस के बारे में बात कर रहा है कुछ चरित्र का आकार ढेर 275 00:12:33,170 --> 00:12:36,200 सरणी या अधिक आम तौर पर कुछ सरणी. 276 00:12:36,200 --> 00:12:38,822 इस पर तो कोई प्रश्न,,? 277 00:12:38,822 --> 00:12:39,780 घर पर इस कोशिश मत करो. 278 00:12:39,780 --> 00:12:41,620 279 00:12:41,620 --> 00:12:42,300 >> ठीक है. 280 00:12:42,300 --> 00:12:47,270 तो malloc इस प्रकार अब तक हमारे नए कर दिया गया है हम स्मृति आवंटित कर सकते हैं कि में दोस्त 281 00:12:47,270 --> 00:12:50,540 हम जरूरी में पता नहीं है कि इसलिए हम नहीं चाहते कि अग्रिम 282 00:12:50,540 --> 00:12:52,920 में हार्ड कोड के लिए हमारे 12 जैसे कार्यक्रम संख्या. 283 00:12:52,920 --> 00:12:55,550 उपयोगकर्ता हमें कितना कहता है एक बार वह या वह इनपुट के लिए करना चाहता डेटा, 284 00:12:55,550 --> 00:12:58,000 हम चाहते हैं कि ज्यादा स्मृति malloc कर सकते हैं. 285 00:12:58,000 --> 00:13:01,484 >> तो malloc यह तक पता चला है, हम यह प्रयोग कर रहे थे हद तक, 286 00:13:01,484 --> 00:13:03,900 स्पष्ट रूप से पिछली बार, और उसके बाद आप लोग इसे प्रयोग कर रहे हैं 287 00:13:03,900 --> 00:13:08,160 के लिए अनजाने getstring के लिए कई सप्ताह, malloc स्मृति के सभी 288 00:13:08,160 --> 00:13:09,820 तथाकथित ढेर से आता है. 289 00:13:09,820 --> 00:13:13,852 और यह, उदाहरण के लिए, क्यों getstring है गतिशील स्मृति आवंटित कर सकते हैं 290 00:13:13,852 --> 00:13:16,060 आप क्या कर रहे हैं जानने के बिना अग्रिम में टाइप करने के लिए जा रहा है, 291 00:13:16,060 --> 00:13:21,520 उस स्मृति को वापस एक सूचक आप हाथ, और कहा कि स्मृति रखने के लिए तुम्हारा अब भी है, 292 00:13:21,520 --> 00:13:24,080 यहां तक ​​कि रिटर्न getstring के बाद. 293 00:13:24,080 --> 00:13:27,450 क्योंकि याद सब के बाद कि ढेर लगातार ऊपर और नीचे जा रहा है 294 00:13:27,450 --> 00:13:27,950 ऊपर और नीचे. 295 00:13:27,950 --> 00:13:30,230 और जैसे ही यह हो जाता है नीचे, कि किसी भी स्मृति का मतलब 296 00:13:30,230 --> 00:13:33,030 इस्तेमाल किया यह कार्य करना चाहिए किसी और के द्वारा प्रयोग नहीं किया जा. 297 00:13:33,030 --> 00:13:34,570 अब यह कचरा मूल्यों है. 298 00:13:34,570 --> 00:13:36,120 >> लेकिन ढेर यहां तक ​​है. 299 00:13:36,120 --> 00:13:39,360 और malloc है के बारे में अच्छा क्या है malloc यहां स्मृति का आवंटन करते हैं, 300 00:13:39,360 --> 00:13:42,070 इसके लिए, प्रभावित नहीं कर रहा है ढेर से अधिकांश भाग,. 301 00:13:42,070 --> 00:13:46,000 और इसलिए किसी भी समारोह का उपयोग कर सकते हैं malloc'd गया है कि स्मृति, 302 00:13:46,000 --> 00:13:49,120 यहां तक ​​कि getstring तरह एक समारोह से, के बाद भी यह वापस आ रहा है. 303 00:13:49,120 --> 00:13:51,700 >> अब, malloc की बातचीत के लिए स्वतंत्र है. 304 00:13:51,700 --> 00:13:53,900 और वास्तव में, नियम है कि आप गोद लेने शुरू करने की जरूरत 305 00:13:53,900 --> 00:13:58,950 किसी भी, किसी भी, आप malloc का उपयोग किसी भी समय है तुम अपने आप को, अंत में, नि: शुल्क का उपयोग करना चाहिए 306 00:13:58,950 --> 00:14:00,280 कि एक ही सूचक पर. 307 00:14:00,280 --> 00:14:03,289 हम लिख दिया गया है यह सब समय छोटी गाड़ी, कई कारणों के लिए छोटी गाड़ी कोड,. 308 00:14:03,289 --> 00:14:05,580 लेकिन जो की गई है CS50 पुस्तकालय, का उपयोग कर जो 309 00:14:05,580 --> 00:14:09,010 खुद को जानबूझ है छोटी गाड़ी है, यह स्मृति लीक. 310 00:14:09,010 --> 00:14:11,410 आप getstring बुलाया है किसी भी समय पिछले कुछ सप्ताह से अधिक 311 00:14:11,410 --> 00:14:13,870 हम ऑपरेटिंग पूछ रहे हैं प्रणाली, लिनक्स, स्मृति के लिए. 312 00:14:13,870 --> 00:14:15,780 और अगर आप एक बार इसे वापस कभी नहीं दिया है. 313 00:14:15,780 --> 00:14:17,730 और इस में, नहीं है एक अच्छी बात का अभ्यास करेंगे. 314 00:14:17,730 --> 00:14:20,330 >> और वेलग्रिंड, में से एक Pset 4 में पेश उपकरण, 315 00:14:20,330 --> 00:14:22,900 आप मदद करने के बारे में सब है अब कि जैसे कीड़े हैं. 316 00:14:22,900 --> 00:14:27,060 लेकिन शुक्र Pset 4 के लिए आप की जरूरत नहीं CS50 पुस्तकालय या getstring उपयोग करने के लिए. 317 00:14:27,060 --> 00:14:31,220 तो स्मृति से संबंधित किसी भी कीड़े हैं अंत में अपने स्वयं के होने जा रहा. 318 00:14:31,220 --> 00:14:34,060 >> तो malloc बस की तुलना में अधिक है इस उद्देश्य के लिए सुविधाजनक है. 319 00:14:34,060 --> 00:14:37,420 हम वास्तव में अब हल कर सकते हैं मौलिक रूप से अलग समस्याओं, 320 00:14:37,420 --> 00:14:41,640 और मौलिक अधिक समस्याओं का समाधान प्रभावी रूप से सप्ताह शून्य का वादा के अनुसार. 321 00:14:41,640 --> 00:14:44,720 इस प्रकार अब तक इस कामुक है डेटा संरचना हम लिया है. 322 00:14:44,720 --> 00:14:47,804 और डेटा संरचना से मैं सिर्फ मतलब conceptualizing स्मृति का एक तरीका 323 00:14:47,804 --> 00:14:50,720 सिर्फ इतना कह परे चला जाता है कि एक तरह से, यह इस एक चार है, एक पूर्णांक है. 324 00:14:50,720 --> 00:14:52,930 हम एक साथ क्लस्टर बातें करने के लिए शुरू कर सकते हैं. 325 00:14:52,930 --> 00:14:54,460 >> तो एक सरणी इस तरह से देखा. 326 00:14:54,460 --> 00:14:57,270 और के बारे में महत्वपूर्ण क्या था सरणी यह ​​आपको देता है 327 00:14:57,270 --> 00:14:59,724 वापस करने वाली पीठ का हिस्सा स्मृति, जिनमें से प्रत्येक की 328 00:14:59,724 --> 00:15:02,765 एक ही प्रकार का होने जा रहा है, पूर्णांक, पूर्णांक, पूर्णांक, पूर्णांक, या चार, चार, चार, 329 00:15:02,765 --> 00:15:03,330 चार. 330 00:15:03,330 --> 00:15:04,496 लेकिन कुछ downsides है. 331 00:15:04,496 --> 00:15:06,570 इस उदाहरण के लिए, है छह आकार की एक सरणी. 332 00:15:06,570 --> 00:15:10,650 आप छह से इस सरणी भरने मान लीजिए संख्या और फिर, जो कुछ कारणों के लिए, 333 00:15:10,650 --> 00:15:13,187 अपने उपयोगकर्ता देना चाहता है आप एक सातवें नंबर. 334 00:15:13,187 --> 00:15:14,020 जहां आप इसे रखा है? 335 00:15:14,020 --> 00:15:15,490 336 00:15:15,490 --> 00:15:18,990 >> अगर आपके पास क्या समाधान है ढेर पर एक सरणी बनाया, 337 00:15:18,990 --> 00:15:22,030 उदाहरण के लिए, बस सप्ताह के साथ हम शुरू की है कि दो अंकन, 338 00:15:22,030 --> 00:15:23,730 अंदर एक नंबर के साथ वर्ग कोष्ठक की? 339 00:15:23,730 --> 00:15:25,160 340 00:15:25,160 --> 00:15:27,260 खैर, आप छह मिल गया है इन बक्सों में संख्या. 341 00:15:27,260 --> 00:15:28,530 अपने सहज ज्ञान क्या होगा? 342 00:15:28,530 --> 00:15:29,973 आप कहाँ रखा करने के लिए चाहता है? 343 00:15:29,973 --> 00:15:30,860 >> दर्शक: [अश्राव्य] 344 00:15:30,860 --> 00:15:31,315 >> डेविड जे Malan: क्षमा करें? 345 00:15:31,315 --> 00:15:32,380 >> दर्शक: अंत पर रखो. 346 00:15:32,380 --> 00:15:33,796 >> डेविड जे Malan: अंत पर रखो. 347 00:15:33,796 --> 00:15:35,880 तो बस सही करने के लिए, इस बॉक्स के बाहर. 348 00:15:35,880 --> 00:15:38,710 कौन सा अच्छा होगा, लेकिन यह होगा आप ऐसा नहीं कर सकते पता चला है. 349 00:15:38,710 --> 00:15:41,350 आप से पूछा नहीं गया है क्योंकि अगर स्मृति के इस टुकड़ा के लिए, 350 00:15:41,350 --> 00:15:44,490 यह यह है कि संयोग से हो सकता है कुछ अन्य चर द्वारा इस्तेमाल किया जा रहा है 351 00:15:44,490 --> 00:15:45,030 कुल मिलाकर. 352 00:15:45,030 --> 00:15:49,210 हम रखी तो जब एक सप्ताह वापस लगता है कि या Zamyla और Davin और Gabe के नाम बाहर 353 00:15:49,210 --> 00:15:49,930 स्मृति में. 354 00:15:49,930 --> 00:15:51,638 सचमुच में वे थे वापस वापस करने के लिए वापस करने के लिए. 355 00:15:51,638 --> 00:15:53,550 तो हम जरूरी नहीं कर सकते कि जो कुछ भी ट्रस्ट 356 00:15:53,550 --> 00:15:55,800 यहाँ पर मुझे का उपयोग करने के लिए उपलब्ध है. 357 00:15:55,800 --> 00:15:56,990 >> तो आप और क्या कर सकता है? 358 00:15:56,990 --> 00:16:00,282 खैर, एक बार आप साकार , आकार सात की एक सरणी की जरूरत 359 00:16:00,282 --> 00:16:02,490 आप सिर्फ एक बना सकता है आकार सात की सरणी तो उपयोग 360 00:16:02,490 --> 00:16:05,950 एक पाश या एक जबकि पाश के लिए, नई सरणी में इसे कॉपी, 361 00:16:05,950 --> 00:16:09,680 और फिर किसी तरह बस से छुटकारा पाने के इस सरणी या बस इसे का उपयोग बंद. 362 00:16:09,680 --> 00:16:12,130 लेकिन यह है कि विशेष रूप से कुशल नहीं है. 363 00:16:12,130 --> 00:16:15,340 संक्षेप में, सरणियों न दें आप गतिशील आकार. 364 00:16:15,340 --> 00:16:17,900 >> तो एक तरफ आप मिल जो आश्चर्यजनक है रैंडम एक्सेस,. 365 00:16:17,900 --> 00:16:20,108 यह सुविधा देता है क्योंकि हम बातें करते हैं विभाजन और जीत की तरह, 366 00:16:20,108 --> 00:16:23,100 हम सब जो की द्विआधारी खोज, यहाँ स्क्रीन पर के बारे में बात की थी. 367 00:16:23,100 --> 00:16:24,950 लेकिन अगर आप एक कोने में खुद को रंग. 368 00:16:24,950 --> 00:16:27,810 जैसे ही आप हिट अपने सरणी के अंत, 369 00:16:27,810 --> 00:16:29,980 आप एक बहुत क्या करना है महंगा ऑपरेशन 370 00:16:29,980 --> 00:16:33,910 या कोड की एक पूरी गुच्छा लिखने अब लगता है कि समस्या से निपटने के लिए. 371 00:16:33,910 --> 00:16:36,680 >> तो बजाय अगर हम क्या था कुछ एक सूची कहा जाता है, 372 00:16:36,680 --> 00:16:38,820 या एक विशेष सूची में जुड़े? 373 00:16:38,820 --> 00:16:41,930 क्या होगा अगर बजाय वाले आयतों, वापस वापस करने के लिए वापस 374 00:16:41,930 --> 00:16:45,730 हम एक छोटे से छोड़ कि आयतों है उन दोनों के बीच में wiggle कमरा के सा? 375 00:16:45,730 --> 00:16:49,670 भले ही और मैं इस खींचा है चित्र या इस तस्वीर अनुकूलित 376 00:16:49,670 --> 00:16:54,696 ग्रंथों में से एक से यहां वापस करने के लिए होने के लिए वापस वास्तविकता में, बहुत व्यवस्थित वापस करने के लिए, 377 00:16:54,696 --> 00:16:56,820 उन आयतों में से एक यहाँ स्मृति में हो सकता है. 378 00:16:56,820 --> 00:16:58,028 उनमें से एक यहां तक ​​हो सकता है. 379 00:16:58,028 --> 00:17:00,420 उनमें से एक, यहाँ तक हो सकता है यहाँ, और आगे अधिक. 380 00:17:00,420 --> 00:17:02,910 >> लेकिन हम आकर्षित क्या अगर इस मामले में, तीर 381 00:17:02,910 --> 00:17:05,650 किसी भी तरह इन जुडे हुए एक साथ rectangles? 382 00:17:05,650 --> 00:17:08,170 दरअसल, हम एक तकनीकी देखा है एक तीर से अवतार. 383 00:17:08,170 --> 00:17:09,839 384 00:17:09,839 --> 00:17:13,710 क्या हम हाल ही में इस्तेमाल किया है दिन है कि, हुड के नीचे, 385 00:17:13,710 --> 00:17:15,210 एक तीर की प्रतिनिधि है? 386 00:17:15,210 --> 00:17:16,290 387 00:17:16,290 --> 00:17:17,349 एक सूचक, है ना? 388 00:17:17,349 --> 00:17:19,780 >> तो क्या हुआ अगर, बजाय बस संख्या भंडारण, 389 00:17:19,780 --> 00:17:23,130 जैसे 9, 17, 22, 26, 34, क्या हम नहीं संग्रहीत अगर 390 00:17:23,130 --> 00:17:27,079 केवल एक संख्या है लेकिन एक सूचक ऐसे प्रत्येक संख्या के बगल में? 391 00:17:27,079 --> 00:17:30,690 इसलिए कि ज्यादा आप एक धागा होता है जैसे कपड़े की एक पूरी गुच्छा के माध्यम से सुई, 392 00:17:30,690 --> 00:17:32,950 किसी भी तरह बांधने बातें एक साथ, इसी तरह कर सकते हैं 393 00:17:32,950 --> 00:17:35,550 संकेत के रूप में साथ हम यहां तीर से अवतीर्ण, 394 00:17:35,550 --> 00:17:38,550 एक तरह से एक साथ बुनाई इन व्यक्तिगत आयतों 395 00:17:38,550 --> 00:17:41,780 प्रभावी रूप से एक सूचक का उपयोग करके प्रत्येक संख्या के बगल में है कि 396 00:17:41,780 --> 00:17:46,065 कि, कुछ अगले संख्या के लिए अंक बदले में, कुछ अगले संख्या को इंगित करता? 397 00:17:46,065 --> 00:17:47,940 तो दूसरे शब्दों में, क्या हम वास्तव में चाहते थे 398 00:17:47,940 --> 00:17:49,820 कुछ इस तरह लागू करने के लिए? 399 00:17:49,820 --> 00:17:53,610 वैसे दुर्भाग्य से, इन आयतों, 9 के साथ कम से कम एक, 17, 22 में, 400 00:17:53,610 --> 00:17:57,040 और बहुत आगे है, ये अब नहीं रहे एकल संख्या के साथ अच्छा वर्गों. 401 00:17:57,040 --> 00:17:59,960 नीचे, आयत 9 नीचे, उदाहरण के लिए, 402 00:17:59,960 --> 00:18:04,330 का प्रतिनिधित्व करता है क्या करना चाहिए एक सूचक, 32 बिट हो. 403 00:18:04,330 --> 00:18:09,460 अब, मैं अभी तक किसी भी डेटा प्रकार के बारे में पता नहीं कर रहा हूँ सी में है कि आप न केवल एक पूर्णांक देता है 404 00:18:09,460 --> 00:18:11,630 लेकिन एक सूचक कुल मिलाकर. 405 00:18:11,630 --> 00:18:15,020 >> हम चाहते हैं, तो समाधान क्या है इस के लिए अपने स्वयं के जवाब आविष्कार करने के लिए? 406 00:18:15,020 --> 00:18:15,760 हाँ? 407 00:18:15,760 --> 00:18:16,640 >> दर्शक: [अश्राव्य] 408 00:18:16,640 --> 00:18:17,360 >> डेविड जे Malan: वह क्या है? 409 00:18:17,360 --> 00:18:17,880 >> दर्शक: नई संरचना. 410 00:18:17,880 --> 00:18:19,590 >> डेविड जे Malan: हाँ, क्यों इतना हम एक नई संरचना का निर्माण नहीं किया है, 411 00:18:19,590 --> 00:18:20,920 या सी, एक संरचना में? 412 00:18:20,920 --> 00:18:25,990 हम अगर संक्षेप में, पहले structs देखा है हम एक छात्र संरचना के साथ पेश किया जहां 413 00:18:25,990 --> 00:18:27,780 इस तरह, एक नाम और एक घर था जो. 414 00:18:27,780 --> 00:18:31,980 Pset में 3 ब्रेकआउट आप एक पूरे इस्तेमाल किया structs-- GRect और GOvals का गुच्छा 415 00:18:31,980 --> 00:18:34,810 स्टैनफोर्ड के लिए बनाए गए एक साथ क्लस्टर जानकारी. 416 00:18:34,810 --> 00:18:38,580 तो क्या हम इस एक ही विचार ले कीवर्ड "typedef" और "संरचना" 417 00:18:38,580 --> 00:18:42,890 और फिर कुछ छात्र विशेष सामान, और बाद में यह विकसित: 418 00:18:42,890 --> 00:18:46,210 typedef संरचना node-- और नोड है सिर्फ एक बहुत ही सामान्य कंप्यूटर विज्ञान 419 00:18:46,210 --> 00:18:49,980 एक आंकड़ा संरचना में कुछ के लिए अवधि, एक आंकड़ा संरचना में एक कंटेनर. 420 00:18:49,980 --> 00:18:53,900 मैं दावा एक नोड किया जा रहा है पूरी तरह से सीधा एक पूर्णांक N,, 421 00:18:53,900 --> 00:18:58,810 और तो और अधिक cryptically एक छोटी सी, इस दूसरी लाइन, संरचना नोड * अगले. 422 00:18:58,810 --> 00:19:01,300 लेकिन कम तकनीकी शब्दों में, कि दूसरी पंक्ति क्या है 423 00:19:01,300 --> 00:19:02,980 घुंघराले ब्रेसिज़ के अंदर कोड का? 424 00:19:02,980 --> 00:19:03,737 हाँ? 425 00:19:03,737 --> 00:19:04,851 >> दर्शक: [अश्राव्य] 426 00:19:04,851 --> 00:19:06,600 डेविड जे Malan: एक दूसरे नोड के लिए संकेतक. 427 00:19:06,600 --> 00:19:09,910 तो बेशक, एक छोटे से गुप्त सिंटेक्स. 428 00:19:09,910 --> 00:19:13,250 लेकिन अगर आप सचमुच इसे पढ़ा, तो अगले एक चर का नाम है. 429 00:19:13,250 --> 00:19:14,410 अपने डेटा प्रकार क्या है? 430 00:19:14,410 --> 00:19:18,206 यह इस समय एक छोटी सी वाचाल है लेकिन यह * प्रकार संरचना नोड की है. 431 00:19:18,206 --> 00:19:22,960 हम कुछ सितारा देखा है किसी भी समय है कि, यह उस डेटा प्रकार के लिए एक संकेत है इसका मतलब है. 432 00:19:22,960 --> 00:19:26,810 तो अगली जाहिरा तौर पर एक है एक struct नोड के लिए संकेतक. 433 00:19:26,810 --> 00:19:28,310 >> अब, एक struct नोड क्या है? 434 00:19:28,310 --> 00:19:31,044 खैर, आप उन देखना नोटिस शीर्ष सही पर एक ही शब्द. 435 00:19:31,044 --> 00:19:33,960 और वास्तव में, आप भी शब्द देख यहाँ नीचे बाईं तल पर "नोड". 436 00:19:33,960 --> 00:19:35,640 और यह वास्तव में सिर्फ एक सुविधा है. 437 00:19:35,640 --> 00:19:39,930 हमारे छात्र परिभाषा में सूचना है कि केवल एक बार शब्द "छात्र" है. 438 00:19:39,930 --> 00:19:42,510 और कहा कि एक छात्र वजह है वस्तु आत्म referential नहीं था. 439 00:19:42,510 --> 00:19:45,340 एक छात्र के अंदर कुछ भी नहीं है कि एक अन्य छात्र को इंगित करने की जरूरत है, 440 00:19:45,340 --> 00:19:45,610 persay. 441 00:19:45,610 --> 00:19:47,630 उस तरह का होगा वास्तविक दुनिया में अजीब. 442 00:19:47,630 --> 00:19:50,880 >> लेकिन एक में एक नोड के साथ जुड़ा हुआ सूची, हम एक नोड चाहते हैं 443 00:19:50,880 --> 00:19:53,970 एक समान उद्देश्य के लिए referential हो. 444 00:19:53,970 --> 00:19:57,900 और तो यहाँ बदलाव नहीं है नोटिस बस क्या घुंघराले ब्रेसिज़ के अंदर है. 445 00:19:57,900 --> 00:20:00,800 लेकिन हम "नोड" शब्द जोड़ शीर्ष पर और साथ ही 446 00:20:00,800 --> 00:20:02,930 सबसे अंत में के एवज में "छात्र." 447 00:20:02,930 --> 00:20:06,000 और यह केवल एक तकनीकी विस्तार है ताकि, फिर से, आपके डेटा संरचना 448 00:20:06,000 --> 00:20:11,380 आत्म referential हो सकता है एक तो यह है कि नोड एक और ऐसी नोड के लिए बात कर सकते हैं. 449 00:20:11,380 --> 00:20:13,840 >> तो यह अंततः क्या है हमारे लिए मतलब करने के लिए जा रहे हैं? 450 00:20:13,840 --> 00:20:17,560 खैर, एक, इस सामान अंदर हमारे नोड की सामग्री है. 451 00:20:17,560 --> 00:20:19,360 यहाँ यह बात, शीर्ष सही, बस इतना है 452 00:20:19,360 --> 00:20:20,860 कि, फिर से, हम अपने आप उल्लेख कर सकते हैं. 453 00:20:20,860 --> 00:20:23,401 और फिर सबसे बाहरी सामान, नोड एक नया शब्द है, भले ही 454 00:20:23,401 --> 00:20:25,500 शायद, यह अभी भी है छात्र और क्या रूप में एक ही 455 00:20:25,500 --> 00:20:27,520 एसपीएल में हुड के नीचे था. 456 00:20:27,520 --> 00:20:31,095 >> इसलिए हम अब शुरू करना चाहता था इस लिंक की गई सूची को लागू करने, 457 00:20:31,095 --> 00:20:33,220 हम कैसे अनुवाद हो सकता है कुछ इस तरह कोड के लिए? 458 00:20:33,220 --> 00:20:35,350 खैर, चलो बस एक देखते हैं एक कार्यक्रम के उदाहरण है कि 459 00:20:35,350 --> 00:20:36,840 वास्तव में एक लिंक सूची का उपयोग करता है. 460 00:20:36,840 --> 00:20:40,870 आज के वितरण कोड के बीच सूची शून्य नामक एक कार्यक्रम है. 461 00:20:40,870 --> 00:20:44,980 मैं इस दौड़ और अगर मैं एक सुपर बनाया सरल जीयूआई, ग्राफिकल यूजर इंटरफेस, 462 00:20:44,980 --> 00:20:46,460 लेकिन यह सच में सिर्फ printf है. 463 00:20:46,460 --> 00:20:50,930 और अब मैं अपने आप को कुछ मेनू दिया है options-- हटाएँ, सम्मिलित करें, खोज, 464 00:20:50,930 --> 00:20:51,750 और Traverse. 465 00:20:51,750 --> 00:20:52,630 और छोड़ दिया. 466 00:20:52,630 --> 00:20:55,970 ये एक पर सिर्फ आम संचालन कर रहे हैं एक लिंक सूची के रूप में जाना जाता है डेटा संरचना. 467 00:20:55,970 --> 00:20:58,409 >> अब, जा रहा है हटाएं सूची में से एक नंबर हटा दें. 468 00:20:58,409 --> 00:21:00,200 सम्मिलित जोड़ने के लिए जा रहा है सूची में एक संख्या. 469 00:21:00,200 --> 00:21:02,181 खोज लग रहा है सूची में संख्या के लिए. 470 00:21:02,181 --> 00:21:04,930 और पार सिर्फ एक अच्छा तरीका है कहने का, सूची के माध्यम से चलना, 471 00:21:04,930 --> 00:21:06,245 इसे बाहर प्रिंट, लेकिन यह बात है. 472 00:21:06,245 --> 00:21:07,720 किसी भी तरह से इसे बदल नहीं है. 473 00:21:07,720 --> 00:21:08,570 >> तो चलो इस कोशिश करते हैं. 474 00:21:08,570 --> 00:21:10,160 आगे जाने के लिए और 2 प्रकार करते हैं. 475 00:21:10,160 --> 00:21:12,710 और फिर मैं जा रहा हूँ नंबर डालें, 9 कहना. 476 00:21:12,710 --> 00:21:13,620 लिखें. 477 00:21:13,620 --> 00:21:17,480 और अब मेरे कार्यक्रम बस है कहने के लिए प्रोग्राम किया, सूची अब 9. 478 00:21:17,480 --> 00:21:20,190 अब, मुझे आगे जाना है और अगर फिर डालने हो, चलो 479 00:21:20,190 --> 00:21:23,680 मुझे आगे जाना है और बाहर ज़ूम और 17 में लिखें. 480 00:21:23,680 --> 00:21:25,770 अब मेरी सूची में तो, 17 9. 481 00:21:25,770 --> 00:21:27,750 मैं फिर से डालने हो तो, चलो एक को छोड़ दें. 482 00:21:27,750 --> 00:21:32,400 इसके बजाय 22 के, चित्र के अनुसार हम है यहां पर लग गया, मुझे आगे कूद जाने 483 00:21:32,400 --> 00:21:34,630 और अगले 26 डालें. 484 00:21:34,630 --> 00:21:36,230 तो मैं 26 टाइप करने के लिए जा रहा हूँ. 485 00:21:36,230 --> 00:21:37,755 मैं उम्मीद के रूप में सूची है. 486 00:21:37,755 --> 00:21:40,630 लेकिन अब, बस इस कोड को देखने के लिए अगर लचीला होने जा रहा है, अब मुझे जाने 487 00:21:40,630 --> 00:21:43,520 प्रकार 22, जो कम से कम धारणा, हम कर रहे हैं 488 00:21:43,520 --> 00:21:46,520 यह वास्तव में है, जो क्रमबद्ध रखने सही अब एक और गोल होने जा रहा, 489 00:21:46,520 --> 00:21:48,690 17 और 26 के बीच में जाना चाहिए. 490 00:21:48,690 --> 00:21:50,270 इसलिए मैं हिट दर्ज करें. 491 00:21:50,270 --> 00:21:51,380 दरअसल, वह काम करता है. 492 00:21:51,380 --> 00:21:54,950 और इसलिए अब मुझे सम्मिलित करते हैं पिछले, तस्वीर, 34 प्रति. 493 00:21:54,950 --> 00:21:55,450 >> ठीक है. 494 00:21:55,450 --> 00:21:58,980 तो अब के लिए मुझे लगता है कि निर्धारित करते हैं हटाएँ और जिओ और खोज करते हैं, 495 00:21:58,980 --> 00:21:59,760 वास्तव में, काम करते हैं. 496 00:21:59,760 --> 00:22:04,180 मैं खोज चला है वास्तव में, अगर, चलो लिखें, संख्या 22 के लिए खोज. 497 00:22:04,180 --> 00:22:05,010 यह 22 पाया. 498 00:22:05,010 --> 00:22:07,580 तो यह है कि क्या यह है कार्यक्रम सूची शून्य करता है. 499 00:22:07,580 --> 00:22:10,230 >> लेकिन वास्तव में क्या हो रहा है पर कि इस लागू? 500 00:22:10,230 --> 00:22:14,530 खैर, सबसे पहले मेरे पास है, और वास्तव में हो सकता है मैं एक फ़ाइल list0.h कहा जाता है, क्या करना है. 501 00:22:14,530 --> 00:22:16,540 502 00:22:16,540 --> 00:22:20,690 और यह वहाँ कहीं में रेखा, typedef, संरचना नोड, 503 00:22:20,690 --> 00:22:24,850 फिर मैं अपने घुंघराले ब्रेसिज़ n है int, और तो परिभाषा क्या था struct--? 504 00:22:24,850 --> 00:22:26,530 505 00:22:26,530 --> 00:22:28,545 Struct नोड अगले. 506 00:22:28,545 --> 00:22:29,920 507 00:22:29,920 --> 00:22:31,045 तो हम स्टार की जरूरत है. 508 00:22:31,045 --> 00:22:33,420 अब तकनीकी रूप से हम में मिलता है यहाँ यह ड्राइंग की आदत. 509 00:22:33,420 --> 00:22:35,670 आप पाठ्यपुस्तकों देख सकते हैं और ऑनलाइन संदर्भ इसे करते हैं. 510 00:22:35,670 --> 00:22:36,660 यह कार्यात्मक रूप समकक्ष है. 511 00:22:36,660 --> 00:22:37,980 वास्तव में, यह एक छोटे से अधिक विशिष्ट है. 512 00:22:37,980 --> 00:22:40,563 लेकिन मैं क्या साथ संगत हो जाएगा हम पिछली बार किया था और यह करते हैं. 513 00:22:40,563 --> 00:22:42,350 और फिर अंत में, मैं यह करने के लिए जा रहा हूँ. 514 00:22:42,350 --> 00:22:45,550 >> एक हेडर फाइल में तो कहीं न कहीं, list0.h में 515 00:22:45,550 --> 00:22:49,200 आज इस संरचना परिभाषा है, और शायद कुछ अन्य सामान. 516 00:22:49,200 --> 00:22:52,580 इस बीच list0c में वहाँ कुछ चीजें होने जा रहा. 517 00:22:52,580 --> 00:22:54,740 लेकिन हम करने जा रहे हैं बस शुरू करने और इसे खत्म नहीं. 518 00:22:54,740 --> 00:22:59,690 List0.h मैं चाहता हूँ कि एक फ़ाइल है मेरी सी फाइल में शामिल करने के लिए. 519 00:22:59,690 --> 00:23:03,910 और फिर कुछ बिंदु पर मैं हूँ , मुख्य, पूर्णांक है शून्य करने के लिए जा रहा है. 520 00:23:03,910 --> 00:23:06,530 और फिर मैं जा रहा हूँ करने के लिए करते कुछ यहाँ है है. 521 00:23:06,530 --> 00:23:10,620 मैं भी एक के लिए जा रहा हूँ प्रोटोटाइप, शून्य, खोज, पूर्णांक जैसे, 522 00:23:10,620 --> 00:23:13,610 एन, जीवन में जिसका उद्देश्य है एक तत्व के लिए खोज करने के लिए. 523 00:23:13,610 --> 00:23:18,310 और फिर यहाँ नीचे मैं में दावा आज के कोड, शून्य, खोज, पूर्णांक, एन, 524 00:23:18,310 --> 00:23:21,020 कोई अर्धविराम लेकिन खुले घुंघराले ब्रेसिज़. 525 00:23:21,020 --> 00:23:25,049 और अब मैं किसी भी तरह खोज करना चाहते हैं इस सूची में एक तत्व के लिए. 526 00:23:25,049 --> 00:23:27,340 लेकिन हम पर्याप्त नहीं है अभी तक स्क्रीन पर जानकारी. 527 00:23:27,340 --> 00:23:29,800 मैं वास्तव में नहीं है सूची ही प्रतिनिधित्व किया. 528 00:23:29,800 --> 00:23:33,070 तो एक तरह से हम लागू कर सकता है एक कार्यक्रम में एक लिंक सूची 529 00:23:33,070 --> 00:23:37,520 मैं एक तरह से कुछ करना चाहते है जैसे यहाँ सूची जोड़ा घोषणा. 530 00:23:37,520 --> 00:23:40,520 सादगी के लिए, मैं करने जा रहा हूँ यह भी सामान्य हम में हालांकि, वैश्विक 531 00:23:40,520 --> 00:23:41,645 यह बहुत ज्यादा नहीं करना चाहिए. 532 00:23:41,645 --> 00:23:43,260 लेकिन यह इस उदाहरण सरल होगा. 533 00:23:43,260 --> 00:23:45,890 इसलिए मैं घोषणा करना चाहते हैं यहाँ एक लिंक सूची अप. 534 00:23:45,890 --> 00:23:47,010 अब, मैं ऐसा कैसे कर सकता है? 535 00:23:47,010 --> 00:23:48,810 536 00:23:48,810 --> 00:23:50,750 >> यहाँ एक लिंक की गई सूची की तस्वीर है. 537 00:23:50,750 --> 00:23:53,030 और मैं वास्तव में नहीं है कैसे पल में पता 538 00:23:53,030 --> 00:23:56,710 मैं प्रतिनिधित्व करने के बारे में जाने के लिए जा रहा हूँ सिर्फ एक साथ इतनी सारी चीज़ें 539 00:23:56,710 --> 00:23:58,040 स्मृति में चर. 540 00:23:58,040 --> 00:23:59,160 लेकिन वापस एक पल लगता है. 541 00:23:59,160 --> 00:24:00,830 हम लिया है यह सब समय तार, फिर जो हम 542 00:24:00,830 --> 00:24:02,913 सरणियों होने का पता चला वर्ण, तो जो हम 543 00:24:02,913 --> 00:24:05,740 सिर्फ एक सूचक होने का पता चला पहले प्रकार 544 00:24:05,740 --> 00:24:08,890 वर्णों की एक सरणी में कि अशक्त समाप्त है. 545 00:24:08,890 --> 00:24:13,530 उस तर्क से, और इस के साथ तो अपने विचारों को बोने की तस्वीर तरह, 546 00:24:13,530 --> 00:24:17,964 हम वास्तव में क्या में लिखने की जरूरत है हमारे कोड एक लिंक सूची का प्रतिनिधित्व करने के लिए? 547 00:24:17,964 --> 00:24:21,130 कितना इस जानकारी की जरूरत है कि हम करते हैं सी कोड में कब्जा करने के लिए, आप कहेंगे? 548 00:24:21,130 --> 00:24:22,654 549 00:24:22,654 --> 00:24:23,154 हाँ? 550 00:24:23,154 --> 00:24:24,738 >> दर्शक: हम एक नोड के लिए एक संकेत की जरूरत है. 551 00:24:24,738 --> 00:24:26,237 डेविड जे Malan: एक नोड के लिए एक सूचक. 552 00:24:26,237 --> 00:24:29,320 विशेष रूप से, जो नोड अपनी होगा सहज ज्ञान के लिए एक सूचक रखने के लिए हो सकता है? 553 00:24:29,320 --> 00:24:30,026 >> दर्शक: पहला नोड. 554 00:24:30,026 --> 00:24:31,942 >> डेविड जे Malan: हाँ, शायद ही पहले. 555 00:24:31,942 --> 00:24:34,030 और, पहले नोटिस नोड एक अलग आकार है. 556 00:24:34,030 --> 00:24:37,690 यह संरचना के केवल आधे आकार है, क्योंकि यह वास्तव में केवल एक सूचक है. 557 00:24:37,690 --> 00:24:44,650 तो आप वास्तव में क्या कर सकते हैं की घोषणा है एक लिंक सूची * प्रकार नोड का हो. 558 00:24:44,650 --> 00:24:47,780 और चलो बस पहले यह कहते हैं और अशक्त करने के लिए यह इनिशियलाइज़. 559 00:24:47,780 --> 00:24:49,910 तो अशक्त, फिर आ रहा है, यहां तस्वीर में. 560 00:24:49,910 --> 00:24:53,620 इतना ही नहीं अशक्त एक विशेष तरह के रूप में प्रयोग किया जाता है getstring जैसी चीजों के लिए मान 561 00:24:53,620 --> 00:24:57,770 और malloc, शून्य भी शून्य है सूचक, एक सूचक की कमी, 562 00:24:57,770 --> 00:24:58,430 अगर तुम जाएगा. 563 00:24:58,430 --> 00:25:00,309 यह बस कुछ भी नहीं यहाँ अभी तक है इसका मतलब है. 564 00:25:00,309 --> 00:25:02,100 अब सबसे पहले, मैं कर सकता यह कुछ भी कहा जाता है. 565 00:25:02,100 --> 00:25:04,200 मैं "सूची" यह कहा जाता हो सकता था या अन्य चीजों के किसी भी संख्या. 566 00:25:04,200 --> 00:25:06,960 लेकिन मैं इतना है कि "पहला" यह बुला रहा हूँ इस तस्वीर के साथ यह लाइनें. 567 00:25:06,960 --> 00:25:10,280 तो सिर्फ एक स्ट्रिंग की तरह दर्शाया जा सकता है अपनी पहली बाइट के पते के साथ, 568 00:25:10,280 --> 00:25:11,280 इसलिए एक लिंक सूचीबद्ध कर सकते हैं. 569 00:25:11,280 --> 00:25:13,480 और हम अन्य डेटा देखेंगे संरचनाओं प्रतिनिधित्व किया 570 00:25:13,480 --> 00:25:16,700 सिर्फ एक सूचक के साथ, एक 32 बिट तीर, ओर इशारा करते हुए 571 00:25:16,700 --> 00:25:18,740 संरचना में बहुत पहले नोड पर. 572 00:25:18,740 --> 00:25:20,340 >> लेकिन अब की एक समस्या की आशा करते हैं. 573 00:25:20,340 --> 00:25:23,230 मैं केवल याद कर रहा हूँ तो मेरे कार्यक्रम पते में 574 00:25:23,230 --> 00:25:27,220 पहला नोड की, पहले इस डेटा संरचना में आयत, 575 00:25:27,220 --> 00:25:31,760 बेहतर था के बारे में भी मामला हो क्या मेरी सूची में से बाकी के कार्यान्वयन? 576 00:25:31,760 --> 00:25:35,820 जा रहा है कि एक महत्वपूर्ण विस्तार क्या है यह वास्तव में काम करता है यह सुनिश्चित करने के लिए? 577 00:25:35,820 --> 00:25:39,250 और मैं "वास्तव में काम करता है" ज्यादा एक स्ट्रिंग की तरह, मतलब, 578 00:25:39,250 --> 00:25:42,180 हमें पहले चरित्र से जाने की सुविधा देता है दूसरे को Davin के नाम पर, 579 00:25:42,180 --> 00:25:44,755 तीसरे करने के लिए, करने के लिए चौथा, बहुत अंत करने के लिए, 580 00:25:44,755 --> 00:25:47,880 हम अंत में कर रहे हैं जब हम जानते हैं कि कैसे इस तरह दिखता है कि एक लिंक की गई सूची की? 581 00:25:47,880 --> 00:25:50,035 582 00:25:50,035 --> 00:25:50,660 जब यह शून्य है. 583 00:25:50,660 --> 00:25:53,640 और मैं के रूप में इस तरह की प्रतिनिधित्व किया है एक बिजली इंजीनियर सकता है, 584 00:25:53,640 --> 00:25:56,420 थोड़ा ग्राउंडिंग के साथ प्रतीक, एक तरह की. 585 00:25:56,420 --> 00:25:58,246 लेकिन यह सिर्फ इस मामले में शून्य का मतलब है. 586 00:25:58,246 --> 00:26:00,370 आप इसे किसी भी संख्या को आकर्षित कर सकते हैं तरीके की है, लेकिन इस लेखक 587 00:26:00,370 --> 00:26:02,800 यहाँ इस प्रतीक का उपयोग करने के लिए हुआ. 588 00:26:02,800 --> 00:26:06,260 >> हम stringing रहे हैं के रूप में इतने लंबे समय एक साथ इन नोड्स के सभी, 589 00:26:06,260 --> 00:26:08,600 केवल जहां को याद पहले एक, इतने लंबे समय है 590 00:26:08,600 --> 00:26:11,760 हम पर एक विशेष प्रतीक के रूप सूची में बहुत पिछले नोड, 591 00:26:11,760 --> 00:26:15,130 क्योंकि है कि और हम अशक्त उपयोग करेंगे हमारे पास उपलब्ध क्या हम हैं, 592 00:26:15,130 --> 00:26:16,480 इस सूची में पूरा हो गया है. 593 00:26:16,480 --> 00:26:20,190 और यहां तक ​​कि मैं केवल यदि आप के लिए एक संकेत दे पहला तत्व है, तुम, प्रोग्रामर, 594 00:26:20,190 --> 00:26:22,486 निश्चित रूप से इसे आराम का उपयोग कर सकते हैं. 595 00:26:22,486 --> 00:26:24,360 लेकिन हम अपने मन चलो एक छोटा सा घूमना, 596 00:26:24,360 --> 00:26:26,140 वे पहले से ही नहीं कर रहे हैं काफी क्या wandered-- 597 00:26:26,140 --> 00:26:28,723 चलाने के समय होने जा रहा इस सूची में कुछ भी खोजने? 598 00:26:28,723 --> 00:26:30,450 599 00:26:30,450 --> 00:26:33,470 अरे नहीं, यह n के बिग हे, जो निष्पक्षता में, बुरा नहीं है. 600 00:26:33,470 --> 00:26:34,800 लेकिन यह रेखीय है. 601 00:26:34,800 --> 00:26:37,980 हम क्या सुविधा दे दिया है अधिक ले जाकर सरणियों की 602 00:26:37,980 --> 00:26:43,130 गतिशील की इस तस्वीर की ओर एक साथ बुना या नोड्स जुड़े? 603 00:26:43,130 --> 00:26:44,970 604 00:26:44,970 --> 00:26:46,687 हम रैंडम एक्सेस छोड़ दिया है. 605 00:26:46,687 --> 00:26:48,770 एक सरणी क्योंकि अच्छा है गणितीय सब कुछ 606 00:26:48,770 --> 00:26:50,340 वापस करने के लिए वापस करने के लिए वापस करने के लिए वापस आ गया है. 607 00:26:50,340 --> 00:26:52,370 यहां तक ​​कि इस तस्वीर हालांकि सुंदर लग रहा है, और यहां तक ​​कि 608 00:26:52,370 --> 00:26:55,830 यह इन नोड्स की तरह दिखता है, हालांकि अच्छी तरह से वास्तविकता में, अलग स्थान दिया गया है 609 00:26:55,830 --> 00:26:56,830 वे कहीं भी हो सकता है. 610 00:26:56,830 --> 00:27:01,590 OX1, Ox50, Ox123, Ox99, इन नोड्स कहीं भी हो सकता है. 611 00:27:01,590 --> 00:27:05,960 Malloc स्मृति आवंटित करता है क्योंकि ढेर से, लेकिन कहीं भी ढेर में. 612 00:27:05,960 --> 00:27:09,080 तुम जरूरी यह है कि पता नहीं है वापस होने जा रहा वापस करने के लिए वापस करने के लिए. 613 00:27:09,080 --> 00:27:12,460 और वास्तविकता में तो यह तस्वीर काफी इस सुंदर नहीं होने जा रहा. 614 00:27:12,460 --> 00:27:16,140 >> इसलिए इसके बारे में एक बिट ले जा रहा है इस समारोह को लागू करने के लिए काम करते हैं. 615 00:27:16,140 --> 00:27:17,880 तो चलो अब खोज को लागू करते हैं. 616 00:27:17,880 --> 00:27:20,250 और हम एक की तरह देखेंगे इस कर के चालाक रास्ता. 617 00:27:20,250 --> 00:27:24,660 मैं एक खोज समारोह हूँ तो अगर और मैं एक चर, पूर्णांक n दिया हूँ 618 00:27:24,660 --> 00:27:28,490 के लिए देखने के लिए, मैं पता करने की जरूरत अंदर तलाश के लिए नए वाक्यविन्यास 619 00:27:28,490 --> 00:27:32,400 है कि एक संरचना की , एन लगता है की ओर इशारा किया. 620 00:27:32,400 --> 00:27:33,210 तो चलो यह करते हैं. 621 00:27:33,210 --> 00:27:36,030 >> तो सबसे पहले मैं जा रहा हूँ आगे और * एक नोड की घोषणा. 622 00:27:36,030 --> 00:27:39,400 और मैं यह कॉल करने के लिए जा रहा हूँ बस कन्वेंशन द्वारा सूचक,. 623 00:27:39,400 --> 00:27:41,710 और मैं पहली बार के लिए यह को प्रारंभ करने जा रहा हूँ. 624 00:27:41,710 --> 00:27:43,770 और अब मैं ऐसा कर सकते हैं तरीकों की एक संख्या में. 625 00:27:43,770 --> 00:27:45,436 लेकिन मैं एक आम दृष्टिकोण लेने के लिए जा रहा हूँ. 626 00:27:45,436 --> 00:27:50,180 सूचक के बराबर नहीं है अशक्त, और कि वैध वाक्यविन्यास है. 627 00:27:50,180 --> 00:27:54,550 और यह सिर्फ इतना, निम्न कार्य का मतलब लंबे समय से आप कुछ भी नहीं है पर इंगित नहीं कर रहे हैं. 628 00:27:54,550 --> 00:27:55,800 मुझे क्या करना चाहते हैं? 629 00:27:55,800 --> 00:28:01,939 >> सूचक डॉट n, तो मुझे वापस आने दो उस के लिए, equals-- क्या बराबर होती है? 630 00:28:01,939 --> 00:28:03,105 क्या मूल्य के लिए मैं देख रहा हूँ? 631 00:28:03,105 --> 00:28:04,920 632 00:28:04,920 --> 00:28:06,590 में पारित किया गया था कि वास्तविक एन. 633 00:28:06,590 --> 00:28:09,020 तो यहाँ एक और विशेषता है सी और कई भाषाओं की. 634 00:28:09,020 --> 00:28:13,705 यहां तक ​​कि संरचना बुलाया नोड हालांकि एक मूल्य के एन, पूरी तरह से वैध है 635 00:28:13,705 --> 00:28:17,530 यह भी एक स्थानीय तर्क है की या चर n बुलाया. 636 00:28:17,530 --> 00:28:20,085 यहां तक ​​कि हम साथ क्योंकि मानव आंख, भेद कर सकते हैं 637 00:28:20,085 --> 00:28:22,087 इस n संभवतः है कि इस n से अलग. 638 00:28:22,087 --> 00:28:23,420 वाक्यविन्यास अलग है. 639 00:28:23,420 --> 00:28:26,211 आप एक डॉट और एक सूचक मिल गया है, यह एक जबकि ऐसी कोई बात नहीं है. 640 00:28:26,211 --> 00:28:27,290 तो यह ठीक है. 641 00:28:27,290 --> 00:28:29,120 वही बातें कि उन्हें फोन करने के लिए ठीक है. 642 00:28:29,120 --> 00:28:32,380 >> मैं आपको यह पता है, तो मैं कर रहा हूँ कुछ करना चाहते हो जा 643 00:28:32,380 --> 00:28:35,000 जैसे हम n पाया कि घोषणा. 644 00:28:35,000 --> 00:28:37,930 और हम एक के रूप में छोड़ दूँगा टिप्पणी या pseudocode कोड. 645 00:28:37,930 --> 00:28:40,190 वरना, और यहाँ है दिलचस्प बात यह है, क्या 646 00:28:40,190 --> 00:28:47,320 मैं वर्तमान नोड अगर ऐसा करना चाहते हैं मैं के बारे में परवाह है कि एन युक्त नहीं है? 647 00:28:47,320 --> 00:28:50,700 कैसे मैं निम्नलिखित हासिल करते हैं? 648 00:28:50,700 --> 00:28:53,710 यदि मेरी उंगली पल पीटीआर है, और यह बात है 649 00:28:53,710 --> 00:28:55,920 जो भी तरफ इशारा करते हुए पहला, पर इशारा कर रहा है 650 00:28:55,920 --> 00:28:59,290 मैं अपनी उंगली आगे? कैसे कोड में अगले नोड के लिए? 651 00:28:59,290 --> 00:29:01,915 ठीक है, हम कर रहे हैं ब्रेडक्रम्ब क्या है इस मामले में पालन करने के लिए जा रहे हैं? 652 00:29:01,915 --> 00:29:03,464 653 00:29:03,464 --> 00:29:04,380 दर्शक: [अश्राव्य]. 654 00:29:04,380 --> 00:29:05,630 डेविड जे Malan: हाँ, तो अगले. 655 00:29:05,630 --> 00:29:06,640 656 00:29:06,640 --> 00:29:09,824 मैं करने के लिए वापस जाना है तो मेरा यहाँ कोड है, वास्तव में, मैं हूँ 657 00:29:09,824 --> 00:29:12,990 , सूचक आगे जाना है और कहा जा रहा है, जो यह सिर्फ एक अस्थायी variable-- है 658 00:29:12,990 --> 00:29:15,320 एक अजीब नाम, पीटीआर, लेकिन यह सिर्फ temp-- की तरह है 659 00:29:15,320 --> 00:29:19,234 मैं सूचक सेट करने के लिए जा रहा हूँ जो भी सूचक is-- के बराबर 660 00:29:19,234 --> 00:29:22,150 और फिर, यह एक होने जा रहा है अगले एक moment-- डॉट के लिए छोटी छोटी गाड़ी. 661 00:29:22,150 --> 00:29:23,551 662 00:29:23,551 --> 00:29:26,550 दूसरे शब्दों में, मैं ले जा रहा हूँ मेरे इस नोड पर इशारा कर रहा है कि उंगली 663 00:29:26,550 --> 00:29:31,247 यहाँ और मैं तुम्हें पता है, कहने के लिए जा रहा हूँ क्या, अगले क्षेत्र पर एक नज़र रखना 664 00:29:31,247 --> 00:29:33,330 और अपनी उंगली को स्थानांतरित जो भी इसे ओर इशारा करते है. 665 00:29:33,330 --> 00:29:35,163 और इस के लिए जा रहा है , दोहराने, दोहराने दोहराने. 666 00:29:35,163 --> 00:29:37,630 लेकिन जब मेरी उंगली करता है सभी में कुछ भी करने से रोक? 667 00:29:37,630 --> 00:29:40,095 जैसे ही क्या कोड kicks की लाइन में हैं? 668 00:29:40,095 --> 00:29:40,970 दर्शक: [अश्राव्य] 669 00:29:40,970 --> 00:29:43,060 डेविड जे Malan: यदि बिंदु जबकि सूचक रिक्त करने के बराबर नहीं है. 670 00:29:43,060 --> 00:29:44,900 कुछ बिंदु मेरी उंगली है पर शून्य पर इंगित किया जा रहा 671 00:29:44,900 --> 00:29:47,070 और मैं महसूस करने के लिए जा रहा हूँ कि इस सूची के अंत में है. 672 00:29:47,070 --> 00:29:48,910 अब, यह एक छोटी सी है सादगी के लिए सफेद झूठ. 673 00:29:48,910 --> 00:29:51,580 यह पता चला है कि भले ही हम बस इस डॉट संकेतन सीखा 674 00:29:51,580 --> 00:29:55,220 संरचनाओं के लिए, सूचक एक संरचना नहीं है. 675 00:29:55,220 --> 00:29:56,580 पीटीआर क्या है? 676 00:29:56,580 --> 00:29:58,350 बस अधिक nitpicky हो. 677 00:29:58,350 --> 00:29:59,720 678 00:29:59,720 --> 00:30:01,360 यह एक नोड के लिए एक संकेत है. 679 00:30:01,360 --> 00:30:03,120 यह एक नोड ही नहीं है. 680 00:30:03,120 --> 00:30:06,650 मैं यहाँ कोई सितारा था, सूचक absolutely-- यह एक नोड है. 681 00:30:06,650 --> 00:30:08,650 इस सप्ताह एक की तरह है एक चर की घोषणा, 682 00:30:08,650 --> 00:30:10,120 यहां तक ​​कि शब्द "नोड" नया है, हालांकि. 683 00:30:10,120 --> 00:30:13,860 >> लेकिन हम एक परिचय के रूप में जल्द ही के रूप में सितारा, यह अब एक नोड के लिए एक संकेत है. 684 00:30:13,860 --> 00:30:17,960 और दुर्भाग्य से आप उपयोग नहीं कर सकते एक संकेतक के लिए डॉट संकेतन. 685 00:30:17,960 --> 00:30:21,070 आप तीर का उपयोग करने के लिए है अंकन, जो, ऊँची, 686 00:30:21,070 --> 00:30:23,470 पहली बार किसी भी टुकड़ा है वाक्यविन्यास का सहज लग रहा है. 687 00:30:23,470 --> 00:30:25,245 यह सचमुच एक तीर की तरह लग रहा है. 688 00:30:25,245 --> 00:30:26,370 और इसलिए है कि एक अच्छी बात है. 689 00:30:26,370 --> 00:30:28,995 और यहाँ नीचे सचमुच एक तीर की तरह लग रहा है. 690 00:30:28,995 --> 00:30:31,870 इसलिए मुझे लगता है कि मैं नहीं कर la-- लगता है मैं here-- अधिक-प्रतिबद्ध हूँ मैं 691 00:30:31,870 --> 00:30:34,120 कि पिछले नया टुकड़ा लगता है वाक्य रचना की हम देखने जा रहे हैं. 692 00:30:34,120 --> 00:30:36,500 और शुक्र है, यह वास्तव में है एक छोटे से अधिक सहज ज्ञान युक्त. 693 00:30:36,500 --> 00:30:40,090 >> अब, आप में से जो लोग पुराना तरीका पसंद हो सकता है, 694 00:30:40,090 --> 00:30:42,550 आप अभी भी डॉट संकेतन का उपयोग कर सकते हैं. 695 00:30:42,550 --> 00:30:45,380 लेकिन सोमवार की प्रति के रूप में बातचीत, हम पहली बार 696 00:30:45,380 --> 00:30:50,530 उस के लिए जाना है, वहाँ जाने की जरूरत पता है, और फिर क्षेत्र का उपयोग. 697 00:30:50,530 --> 00:30:51,897 तो यह भी सही है. 698 00:30:51,897 --> 00:30:53,730 और सच कहूँ तो, यह है एक अधिक पंडिताऊ थोड़ा. 699 00:30:53,730 --> 00:30:56,530 तुम सचमुच कह रहे हैं, भिन्नता सूचक और वहाँ जाओ. 700 00:30:56,530 --> 00:30:59,320 फिर एन हड़पने, क्षेत्र n बुलाया. 701 00:30:59,320 --> 00:31:01,370 लेकिन सच कहूँ तो, कोई नहीं चाहता टाइप करें, या इस पढ़ने के लिए. 702 00:31:01,370 --> 00:31:03,620 और इसलिए दुनिया का आविष्कार तीर अंकन, जो 703 00:31:03,620 --> 00:31:06,980 , समान, बराबर है यह सिर्फ वाक्यात्मक चीनी है. 704 00:31:06,980 --> 00:31:10,570 यह कह के तो एक अच्छा तरीका बेहतर लग रहा है, या सरल लग रहा है. 705 00:31:10,570 --> 00:31:12,296 >> तो अब मैं एक और बात करने के लिए जा रहा हूँ. 706 00:31:12,296 --> 00:31:15,420 मैं मैं एक बार "तोड़" कहने जा रहा हूँ यह तो मैं यह देखने के लिए नहीं रख पाया. 707 00:31:15,420 --> 00:31:17,620 लेकिन इस सार है एक खोज समारोह का. 708 00:31:17,620 --> 00:31:21,710 लेकिन उस में, एक बहुत आसान है अंत, कोड के माध्यम से चलने के लिए नहीं. 709 00:31:21,710 --> 00:31:25,570 यह वास्तव में औपचारिक कार्यान्वयन है आज के वितरण कोड में खोज की. 710 00:31:25,570 --> 00:31:30,530 मुझे लगता है कि सम्मिलित नहीं है कहने की हिम्मत के माध्यम से चलने के लिए विशेष रूप से मज़ा 711 00:31:30,530 --> 00:31:33,180 नेत्रहीन, और न ही है भी, हटाना दिन के अंत में, हालांकि 712 00:31:33,180 --> 00:31:35,460 वे काफी नीचे फोड़ा सरल heuristics. 713 00:31:35,460 --> 00:31:36,330 >> तो चलो यह करते हैं. 714 00:31:36,330 --> 00:31:39,250 आप यहाँ मुझे हास्य हूँ, मैंने किया तनाव गेंदों का एक गुच्छा ले आओ. 715 00:31:39,250 --> 00:31:40,620 मैं संख्या का एक गुच्छा लाया. 716 00:31:40,620 --> 00:31:46,562 और हम बस कुछ स्वयंसेवकों मिल सकता है 9, 17, 20, 22, 29, और 34 का प्रतिनिधित्व करने के लिए? 717 00:31:46,562 --> 00:31:48,270 तो अनिवार्य रूप से हर कोई यहाँ जो आज है. 718 00:31:48,270 --> 00:31:50,170 719 00:31:50,170 --> 00:31:52,760 यही है, एक, दो, तीन साल का था चार, पांच, छह लोग. 720 00:31:52,760 --> 00:31:55,740 और मैं नहीं, देखना go-- लिए कहा गया है पीठ में एक उनके हाथ उठाती है. 721 00:31:55,740 --> 00:32:01,910 ठीक है, एक, दो, तीन, चार, five-- मुझे छह balance-- लोड करते हैं. 722 00:32:01,910 --> 00:32:03,051 ठीक है, आप छह ऊपर की ओर आते हैं. 723 00:32:03,051 --> 00:32:04,050 हम अन्य लोगों की आवश्यकता होगी. 724 00:32:04,050 --> 00:32:05,460 हम अतिरिक्त तनाव गेंदों लाया. 725 00:32:05,460 --> 00:32:08,200 और अगर तुम सकता है, के लिए बस एक पल, लाइन 726 00:32:08,200 --> 00:32:10,490 अपने आप को सिर्फ यहाँ इस तस्वीर की तरह. 727 00:32:10,490 --> 00:32:15,200 728 00:32:15,200 --> 00:32:15,959 >> ठीक है. 729 00:32:15,959 --> 00:32:17,125 आपका नाम क्या है, चलो देखते हैं? 730 00:32:17,125 --> 00:32:17,550 >> दर्शक: एंड्रयू. 731 00:32:17,550 --> 00:32:18,800 >> डेविड जे Malan: एंड्रयू, आप संख्या 9 कर रहे हैं. 732 00:32:18,800 --> 00:32:19,540 आपसे मिलकर अच्छा लगा. 733 00:32:19,540 --> 00:32:20,400 हेयर यू गो. 734 00:32:20,400 --> 00:32:21,593 735 00:32:21,593 --> 00:32:22,176 दर्शक: जेन. 736 00:32:22,176 --> 00:32:22,662 डेविड जे Malan: जेन. 737 00:32:22,662 --> 00:32:23,162 डेविड. 738 00:32:23,162 --> 00:32:23,765 संख्या 17. 739 00:32:23,765 --> 00:32:24,950 740 00:32:24,950 --> 00:32:25,450 हाँ? 741 00:32:25,450 --> 00:32:26,400 >> दर्शक: मैं जूलिया हूँ. 742 00:32:26,400 --> 00:32:26,980 >> डेविड जे Malan: जूलिया, डेविड. 743 00:32:26,980 --> 00:32:27,545 संख्या 20. 744 00:32:27,545 --> 00:32:28,507 745 00:32:28,507 --> 00:32:29,340 दर्शक: ईसाई. 746 00:32:29,340 --> 00:32:30,715 डेविड जे Malan: ईसाई, डेविड. 747 00:32:30,715 --> 00:32:31,541 संख्या 22. 748 00:32:31,541 --> 00:32:32,040 और? 749 00:32:32,040 --> 00:32:32,649 >> दर्शक: जेपी. 750 00:32:32,649 --> 00:32:33,440 डेविड जे Malan: जेपी. 751 00:32:33,440 --> 00:32:34,880 संख्या 29. 752 00:32:34,880 --> 00:32:37,080 तो उह ओह आगे जाना है और in-- मिलता है. 753 00:32:37,080 --> 00:32:38,486 754 00:32:38,486 --> 00:32:38,985 उह ओह. 755 00:32:38,985 --> 00:32:39,650 756 00:32:39,650 --> 00:32:40,150 स्टैंडबाय. 757 00:32:40,150 --> 00:32:41,360 758 00:32:41,360 --> 00:32:42,390 20. 759 00:32:42,390 --> 00:32:43,682 किसी को भी एक मार्कर है? 760 00:32:43,682 --> 00:32:44,890 दर्शक: मैं एक Sharpie मिल गया है. 761 00:32:44,890 --> 00:32:45,660 डेविड जे Malan: आप एक Sharpie मिला? 762 00:32:45,660 --> 00:32:46,159 ठीक. 763 00:32:46,159 --> 00:32:47,577 764 00:32:47,577 --> 00:32:49,160 और किसी को भी एक कागज का टुकड़ा है? 765 00:32:49,160 --> 00:32:51,562 766 00:32:51,562 --> 00:32:52,270 व्याख्यान बचाओ. 767 00:32:52,270 --> 00:32:53,810 768 00:32:53,810 --> 00:32:55,362 चलो. 769 00:32:55,362 --> 00:32:56,320 दर्शक: हम यह मिल गया है. 770 00:32:56,320 --> 00:32:57,600 डेविड जे Malan: हम यह मिल गया? 771 00:32:57,600 --> 00:32:58,577 सब ठीक है, धन्यवाद. 772 00:32:58,577 --> 00:33:01,380 773 00:33:01,380 --> 00:33:02,520 ये रहा. 774 00:33:02,520 --> 00:33:03,582 इस लिए आप से था? 775 00:33:03,582 --> 00:33:04,540 तुम सिर्फ दिन बचा लिया. 776 00:33:04,540 --> 00:33:05,670 777 00:33:05,670 --> 00:33:07,220 तो 29. 778 00:33:07,220 --> 00:33:10,510 779 00:33:10,510 --> 00:33:11,110 ठीक है. 780 00:33:11,110 --> 00:33:13,360 781 00:33:13,360 --> 00:33:14,890 मैं 29 गलत वर्तनी, लेकिन ठीक है. 782 00:33:14,890 --> 00:33:15,720 आगे बढ़ें. 783 00:33:15,720 --> 00:33:18,114 सब ठीक है, मैं तुम्हें दे दूँगा अपनी कलम वापस क्षण भर के. 784 00:33:18,114 --> 00:33:19,280 इसलिए हम यहां इन लोगों की है. 785 00:33:19,280 --> 00:33:20,330 दूसरे एक करते हैं. 786 00:33:20,330 --> 00:33:23,750 Gabe, आप खेलना चाहते हैं यहां पहला तत्व? 787 00:33:23,750 --> 00:33:25,705 हम बात करने के लिए आप की आवश्यकता होगी इन ठीक लोगों पर. 788 00:33:25,705 --> 00:33:26,930 789 00:33:26,930 --> 00:33:31,030 तो 9, 17, 20, 22, की तरह 29, और फिर 34 का. 790 00:33:31,030 --> 00:33:32,160 791 00:33:32,160 --> 00:33:33,325 हम किसी को खो दिया? 792 00:33:33,325 --> 00:33:33,950 मैं एक 34 है. 793 00:33:33,950 --> 00:33:36,730 कहां चाहता है, जो did-- ठीक है, 34 हो सकता है? 794 00:33:36,730 --> 00:33:37,605 ठीक है, 34, ऊपर की ओर आते हैं. 795 00:33:37,605 --> 00:33:39,280 796 00:33:39,280 --> 00:33:41,220 ठीक है, यह हो जाएगा चरमोत्कर्ष के लायक भी. 797 00:33:41,220 --> 00:33:41,550 आपका नाम क्या है? 798 00:33:41,550 --> 00:33:42,040 >> दर्शक: पीटर. 799 00:33:42,040 --> 00:33:43,456 >> डेविड जे Malan: पीटर, ऊपर पर आ गए. 800 00:33:43,456 --> 00:33:46,810 ठीक है, तो यहाँ है एक नोड्स की पूरी गुच्छा. 801 00:33:46,810 --> 00:33:49,060 तुम लोगों में से प्रत्येक का प्रतिनिधित्व करता है इन आयतों में से एक. 802 00:33:49,060 --> 00:33:51,930 और Gabe, थोड़ा अजीब बाहर यार, पहले का प्रतिनिधित्व करता है. 803 00:33:51,930 --> 00:33:54,850 तो उसका सूचक एक छोटे से छोटा होता है हर किसी से स्क्रीन पर. 804 00:33:54,850 --> 00:33:58,120 और इस मामले में, अपने में से प्रत्येक के लिए छोड़ दिया हाथ, नीचे बात करने के लिए या तो जा रहा है 805 00:33:58,120 --> 00:34:01,085 जिससे इसलिए, शून्य का प्रतिनिधित्व सिर्फ एक सूचक के अभाव, 806 00:34:01,085 --> 00:34:03,210 या यह इशारा किया जा रहा है आप के बगल में एक नोड पर. 807 00:34:03,210 --> 00:34:05,440 >> इसलिए अभी आप सजाना अगर तस्वीर की तरह अपने आप को 808 00:34:05,440 --> 00:34:07,585 यहाँ, आगे बढ़ो और बिंदु Gabe साथ, एक दूसरे पर 809 00:34:07,585 --> 00:34:11,030 पर विशेष इशारा में संख्या 9 सूची प्रतिनिधित्व करने के लिए. 810 00:34:11,030 --> 00:34:14,050 ठीक है, और संख्या 34, अपने बाएँ हाथ सिर्फ मंजिल पर इंगित किया जाना चाहिए. 811 00:34:14,050 --> 00:34:15,750 >> ठीक है, तो इस लिंक सूची है. 812 00:34:15,750 --> 00:34:17,580 तो इस सवाल में मामला नहीं है. 813 00:34:17,580 --> 00:34:20,210 और वास्तव में, इस प्रतिनिधि है समस्याओं का एक वर्ग की 814 00:34:20,210 --> 00:34:21,929 आप कोड के साथ हल करने की कोशिश हो सकती है. 815 00:34:21,929 --> 00:34:25,020 आप अंततः सम्मिलित करना चाहते हैं सूची में एक नया तत्व. 816 00:34:25,020 --> 00:34:27,494 इस मामले में, हम करने जा रहे हैं संख्या 55 डालने की कोशिश. 817 00:34:27,494 --> 00:34:28,500 818 00:34:28,500 --> 00:34:30,860 लेकिन वहाँ जा रहा है विभिन्न मामलों पर विचार करने के लिए. 819 00:34:30,860 --> 00:34:34,409 और वास्तव में, यह एक होने जा रहा है बड़ी तस्वीर यहाँ takeaways की है, 820 00:34:34,409 --> 00:34:35,659 विभिन्न मामलों में क्या कर रहे हैं. 821 00:34:35,659 --> 00:34:39,120 स्थितियां अगर या अलग क्या हैं अपने कार्यक्रम के लिए हो सकता है कि शाखाओं? 822 00:34:39,120 --> 00:34:42,024 >> खैर, नंबर करने की कोशिश कर रहे हैं हम 55 होने के लिए अब जो पता डालें,, 823 00:34:42,024 --> 00:34:44,650 लेकिन आपको पता नहीं था अगर अग्रिम में, मैं हिम्मत करना 824 00:34:44,650 --> 00:34:47,840 कम से कम तीन में गिर जाता है संभव स्थितियों. 825 00:34:47,840 --> 00:34:49,717 जहां एक नया तत्व हो सकता है? 826 00:34:49,717 --> 00:34:51,050 दर्शक: और अंत या मध्य. 827 00:34:51,050 --> 00:34:54,150 डेविड जे Malan: अंत में, में मध्यम, या शुरुआत में. 828 00:34:54,150 --> 00:34:56,650 तो मैं कम से कम वहाँ का दावा तीन समस्याओं हम हल करने की जरूरत है. 829 00:34:56,650 --> 00:34:58,691 की शायद क्या चुनने दें यकीनन सरलतम 830 00:34:58,691 --> 00:35:01,090 एक, जहां नए तत्व शुरुआत में अंतर्गत आता है. 831 00:35:01,090 --> 00:35:04,040 तो मैं काफी कोड के लिए जा रहा हूँ जैसे मैं सिर्फ लिखा था, जो खोज. 832 00:35:04,040 --> 00:35:07,670 और मैं, पीटीआर किया जा रहा हूँ जो मैं, मेरी उंगली के साथ यहां का प्रतिनिधित्व करेंगे 833 00:35:07,670 --> 00:35:08,370 हमेशा की तरह. 834 00:35:08,370 --> 00:35:12,430 >> और, क्या मूल्य याद हम करने के लिए पीटीआर को प्रारंभ किया था? 835 00:35:12,430 --> 00:35:15,300 इसलिए हम शुरू में रिक्त करने के लिए यह initialized. 836 00:35:15,300 --> 00:35:16,410 837 00:35:16,410 --> 00:35:19,770 लेकिन तब हम एक बार में क्या किया हमारी खोज समारोह के अंदर थे? 838 00:35:19,770 --> 00:35:20,940 839 00:35:20,940 --> 00:35:24,870 हम पहले तक यह बराबर सेट इस काम को करने का मतलब यह नहीं है. 840 00:35:24,870 --> 00:35:25,890 841 00:35:25,890 --> 00:35:30,570 मैं पहले के बराबर पीटीआर में तय किया है, क्या मेरे हाथ वास्तव में इशारा करते हुए होना चाहिए? 842 00:35:30,570 --> 00:35:31,070 ठीक है. 843 00:35:31,070 --> 00:35:33,290 Gabe और मैं जा रहे हैं यहाँ बराबर मूल्यों होने के लिए, 844 00:35:33,290 --> 00:35:34,760 हम संख्या 9 पर दोनों बात करने के लिए जरूरत है. 845 00:35:34,760 --> 00:35:36,420 >> तो यह हमारी कहानी की शुरुआत थी. 846 00:35:36,420 --> 00:35:38,700 और अब यह सिर्फ सीधा है भले ही वाक्यविन्यास नया है. 847 00:35:38,700 --> 00:35:40,580 धारणा यह सिर्फ रैखिक खोज है. 848 00:35:40,580 --> 00:35:42,750 9 के बराबर 55 है? 849 00:35:42,750 --> 00:35:45,559 या यों कहें, 9 से कम हम कहते हैं. 850 00:35:45,559 --> 00:35:47,600 मैं कोशिश कर रहा हूँ क्योंकि 55 डाल करने के लिए जहां यह पता लगाने. 851 00:35:47,600 --> 00:35:51,270 9 से कम से कम 17, कम 20 से कम से कम 22 से कम 29, 852 00:35:51,270 --> 00:35:52,510 कम से कम 34, नहीं. 853 00:35:52,510 --> 00:35:55,080 तो अब हम इस मामले में कर रहे हैं कम से कम तीन में से एक. 854 00:35:55,080 --> 00:35:59,910 >> मैं यहाँ पर 55 सम्मिलित करना चाहते हैं, क्या कोड की जरूरत की तर्ज निष्पादित करने के लिए? 855 00:35:59,910 --> 00:36:01,890 कैसे की इस तस्वीर से करता है मनुष्य को बदलने की जरूरत है? 856 00:36:01,890 --> 00:36:03,181 मैं अपने बाएँ हाथ के साथ क्या करते हैं? 857 00:36:03,181 --> 00:36:04,530 858 00:36:04,530 --> 00:36:07,360 यह शुरू में शून्य होना चाहिए मैं इस सूची के अंत में कर रहा हूँ क्योंकि. 859 00:36:07,360 --> 00:36:09,318 और क्या होना चाहिए यहाँ पीटर के साथ, यह था? 860 00:36:09,318 --> 00:36:10,520 861 00:36:10,520 --> 00:36:12,430 वह स्पष्ट रूप से मेरे लिए बात करने के लिए जा रहा है. 862 00:36:12,430 --> 00:36:15,580 तो मैं कम से कम दो लाइनों का दावा आज से नमूना कोड में कोड की 863 00:36:15,580 --> 00:36:18,570 कि इस लागू करने के लिए जा रहा है पूंछ में 55 जोड़ने का परिदृश्य. 864 00:36:18,570 --> 00:36:20,950 और मैं किसी हॉप हो सकता था अप और सिर्फ 55 का प्रतिनिधित्व करते हैं? 865 00:36:20,950 --> 00:36:22,200 सब ठीक है, आप नए 55 हैं. 866 00:36:22,200 --> 00:36:23,580 867 00:36:23,580 --> 00:36:27,054 >> तो अब आगे क्या अगर परिदृश्य, के साथ आता है 868 00:36:27,054 --> 00:36:29,720 और हम में सम्मिलित करना चाहते हैं शुरुआत या इस सूची के सिर? 869 00:36:29,720 --> 00:36:31,100 और अपना नाम, संख्या 55 है? 870 00:36:31,100 --> 00:36:31,420 >> दर्शक: जैक. 871 00:36:31,420 --> 00:36:32,295 >> डेविड जे Malan: जैक? 872 00:36:32,295 --> 00:36:33,585 ठीक है, आपसे मिलकर अच्छा लगा. 873 00:36:33,585 --> 00:36:34,210 नाव पर स्वागत. 874 00:36:34,210 --> 00:36:36,640 तो अब हम जा रहे हैं कहते हैं, संख्या 5 डालें. 875 00:36:36,640 --> 00:36:39,840 यहाँ का दूसरा मामला है तीन हम पहले साथ आया था. 876 00:36:39,840 --> 00:36:43,050 तो 5 शुरुआत में ही होते है, हम पता लगाना है कि कैसे देखते हैं. 877 00:36:43,050 --> 00:36:46,310 मैं अपने पीटीआर को प्रारंभ फिर नंबर 9 के लिए संकेतक. 878 00:36:46,310 --> 00:36:49,140 और मैं 5 से कम 9, ओह, मुझे एहसास हुआ. 879 00:36:49,140 --> 00:36:50,880 इसलिए हमारे लिए इस तस्वीर को ठीक. 880 00:36:50,880 --> 00:36:54,820 जिनके हाथ, Gabe है या दाऊद के or-- संख्या 9 का नाम क्या है? 881 00:36:54,820 --> 00:36:55,740 >> दर्शक: जेन. 882 00:36:55,740 --> 00:36:58,406 >> डेविड जे Malan: जेन hands-- हमारे हाथ की जो बदलने की जरूरत है? 883 00:36:58,406 --> 00:36:58,905 884 00:36:58,905 --> 00:37:00,970 ठीक है, तो Gabe अब क्या पर अंक? 885 00:37:00,970 --> 00:37:01,640 मुझ पर. 886 00:37:01,640 --> 00:37:02,750 मैं नए नोड हूँ. 887 00:37:02,750 --> 00:37:04,870 इसलिए मैं इस कदम की तरह ही होगा यहाँ नेत्रहीन यह देखने के लिए. 888 00:37:04,870 --> 00:37:06,435 और इस बीच क्या मैं उस बिंदु है? 889 00:37:06,435 --> 00:37:07,910 890 00:37:07,910 --> 00:37:09,020 फिर भी, जहां मैं इशारा कर रहा हूँ. 891 00:37:09,020 --> 00:37:10,000 तो यह बात है. 892 00:37:10,000 --> 00:37:13,717 कोड सुधारों की तो सिर्फ सच में एक पंक्ति इस विशेष मुद्दे, यह प्रतीत होता है. 893 00:37:13,717 --> 00:37:14,800 ठीक है, तो यह अच्छी बात है. 894 00:37:14,800 --> 00:37:17,580 और अगर कोई 5 के लिए एक प्लेसहोल्डर हो सकता है? 895 00:37:17,580 --> 00:37:18,080 ऊपर आओ. 896 00:37:18,080 --> 00:37:20,270 897 00:37:20,270 --> 00:37:21,320 हम आपको अगली बार मिल जाएगा. 898 00:37:21,320 --> 00:37:24,280 >> ठीक है, तो now-- और एक तरफ, नाम के रूप में 899 00:37:24,280 --> 00:37:28,510 मैं सही का स्पष्ट उल्लेख नहीं कर रहा हूँ अब, pred सूचक, पूर्ववर्ती सूचक 900 00:37:28,510 --> 00:37:31,260 और नए सूचक है, कि सिर्फ नाम दिया 901 00:37:31,260 --> 00:37:35,280 संकेत के लिए नमूना कोड में या एक तरह से चारों ओर इशारा कर रहा है कि मेरे हाथ. 902 00:37:35,280 --> 00:37:36,060 आपका नाम क्या है? 903 00:37:36,060 --> 00:37:36,700 >> दर्शक: क्रिस्टीन. 904 00:37:36,700 --> 00:37:37,100 >> डेविड जे Malan: क्रिस्टीन. 905 00:37:37,100 --> 00:37:38,090 नाव पर स्वागत. 906 00:37:38,090 --> 00:37:42,180 सब ठीक है, तो चलो अब विचार करें एक से थोड़ा अधिक कष्टप्रद परिदृश्य, 907 00:37:42,180 --> 00:37:46,350 मैं सम्मिलित करना चाहते हैं जिससे इस मामले में 26 तरह कुछ. 908 00:37:46,350 --> 00:37:47,090 20? 909 00:37:47,090 --> 00:37:47,590 क्या? 910 00:37:47,590 --> 00:37:50,510 ये हम इस कलम है अच्छी बात are--. 911 00:37:50,510 --> 00:37:51,955 सब ठीक है, 20. 912 00:37:51,955 --> 00:37:53,640 913 00:37:53,640 --> 00:37:57,570 किसी का एक और टुकड़ा मिल सकता है पेपर अभी सब ठीक case-- में, तैयार है. 914 00:37:57,570 --> 00:37:58,370 ओह, दिलचस्प. 915 00:37:58,370 --> 00:37:59,760 916 00:37:59,760 --> 00:38:02,390 वैसे यह एक उदाहरण है एक व्याख्यान बग की. 917 00:38:02,390 --> 00:38:03,894 ठीक है तो अपना नाम फिर क्या है? 918 00:38:03,894 --> 00:38:04,560 दर्शक: जूलिया. 919 00:38:04,560 --> 00:38:07,559 डेविड जे Malan: जूलिया, आप पॉप कर सकते हैं बाहर और ढोंग आप कभी नहीं थे? 920 00:38:07,559 --> 00:38:09,040 ठीक है, यह कभी नहीं हुआ. 921 00:38:09,040 --> 00:38:09,680 धन्यवाद. 922 00:38:09,680 --> 00:38:12,180 इसलिए हम सम्मिलित चाहते हैं इस लिंक की गई सूची में जूलिया. 923 00:38:12,180 --> 00:38:13,780 वह संख्या 20 है. 924 00:38:13,780 --> 00:38:15,530 और निश्चित रूप से वह है पर सदस्य बनने के लिए जा रहा 925 00:38:15,530 --> 00:38:17,521 begin-- अभी तक कुछ भी बात नहीं है. 926 00:38:17,521 --> 00:38:20,020 तो अपने हाथ तरह के हो सकते हैं नीचे अशक्त या कुछ कचरा मूल्य. 927 00:38:20,020 --> 00:38:21,210 त्वरित कहानी बताओ. 928 00:38:21,210 --> 00:38:22,980 मैं संख्या 5 इस समय इशारा कर रहा हूँ. 929 00:38:22,980 --> 00:38:23,880 तब मैं 9 की जाँच करें. 930 00:38:23,880 --> 00:38:25,130 तब मैं 17 की जाँच करें. 931 00:38:25,130 --> 00:38:26,247 तब मैं 22 की जाँच करें. 932 00:38:26,247 --> 00:38:27,650 933 00:38:27,650 --> 00:38:32,485 और मैं, उह, जूलिया एहसास 22 से पहले जाने की जरूरत है. 934 00:38:32,485 --> 00:38:33,580 935 00:38:33,580 --> 00:38:34,660 तो क्या होने की जरूरत है? 936 00:38:34,660 --> 00:38:35,786 937 00:38:35,786 --> 00:38:36,910 जिनके हाथों में बदलने की जरूरत है? 938 00:38:36,910 --> 00:38:38,360 जूलिया, मेरा, or-- अपना नाम फिर क्या है? 939 00:38:38,360 --> 00:38:39,230 >> दर्शक: ईसाई. 940 00:38:39,230 --> 00:38:40,060 >> डेविड जे Malan: ईसाई या? 941 00:38:40,060 --> 00:38:40,560 >> दर्शक: एंडी. 942 00:38:40,560 --> 00:38:40,905 >> डेविड जे Malan: एंडी. 943 00:38:40,905 --> 00:38:41,654 ईसाई या एंडी? 944 00:38:41,654 --> 00:38:44,280 945 00:38:44,280 --> 00:38:45,690 एंडी पर बात करने की जरूरत है? 946 00:38:45,690 --> 00:38:46,780 947 00:38:46,780 --> 00:38:47,341 जूलिया. 948 00:38:47,341 --> 00:38:47,840 ठीक है. 949 00:38:47,840 --> 00:38:48,960 तो एंडी, आप जूलिया पर बात करना चाहते हैं? 950 00:38:48,960 --> 00:38:50,120 लेकिन एक मिनट रुको. 951 00:38:50,120 --> 00:38:53,260 इस प्रकार अब तक कहानी में, मैं एक की तरह कर रहा हूँ 952 00:38:53,260 --> 00:38:56,800 भावना में आरोप में कि सूचक है कि बात है 953 00:38:56,800 --> 00:38:57,850 सूची के माध्यम से घूम रहा है. 954 00:38:57,850 --> 00:39:00,800 हम एंडी के लिए एक नाम है, लेकिन हो सकता है एंडी बुलाया कोई चर है. 955 00:39:00,800 --> 00:39:04,320 हम केवल अन्य चर रहा है पहला, Gabe द्वारा प्रतिनिधित्व कौन. 956 00:39:04,320 --> 00:39:07,690 >> तो यह क्यों इस तरह वास्तव में है अब तक हम यह आवश्यक नहीं है. 957 00:39:07,690 --> 00:39:10,846 लेकिन अब स्क्रीन पर है pred सूचक की फिर से उल्लेख. 958 00:39:10,846 --> 00:39:11,970 तो मुझे और अधिक स्पष्ट हो. 959 00:39:11,970 --> 00:39:14,820 इस सूचक है, तो मैं बेहतर था एक छोटे से अधिक बुद्धिमान मिल 960 00:39:14,820 --> 00:39:15,950 मेरी यात्रा के बारे में. 961 00:39:15,950 --> 00:39:19,580 आप मेरे यहां से गुजर रही मन नहीं है फिर, यहाँ ओर इशारा करते हुए यहां इशारा करते हुए. 962 00:39:19,580 --> 00:39:22,500 लेकिन मुझे एक pred सूचक करते हैं, पूर्ववर्ती सूचक है, कि 963 00:39:22,500 --> 00:39:24,740 तरह की तरफ इशारा करते हुए तत्व मैं बस में था. 964 00:39:24,740 --> 00:39:27,330 इसलिए मैं यहाँ जाना है, अब मेरे बाएँ हाथ अद्यतन. 965 00:39:27,330 --> 00:39:29,370 मैं यहाँ अपने बाएँ हाथ के अपडेट जाओ. 966 00:39:29,370 --> 00:39:33,090 और अब मैं के लिए एक संकेत नहीं ही है जूलिया के बाद चला जाता है कि तत्व, 967 00:39:33,090 --> 00:39:36,300 मैं अभी भी एक संकेतक के लिए है एंडी, पहले तत्व. 968 00:39:36,300 --> 00:39:39,430 तो तुम, अनिवार्य रूप से, उपयोग कर सकते है ब्रेडक्रंब, अगर तुम जाएगा, 969 00:39:39,430 --> 00:39:41,500 अपेक्षित संकेत के सभी के लिए. 970 00:39:41,500 --> 00:39:43,710 >> मैं कम से इशारा कर रहा हूँ तो अगर एंडी और मैं भी इशारा कर रहा हूँ 971 00:39:43,710 --> 00:39:47,105 जिनके हाथों में ईसाई, पर अब कहीं और कहा जाना चाहिए? 972 00:39:47,105 --> 00:39:48,770 973 00:39:48,770 --> 00:39:51,960 एंडी तो अब जूलिया पर बात कर सकते हैं. 974 00:39:51,960 --> 00:39:54,460 जूलिया अब ईसाई पर बात कर सकते हैं. 975 00:39:54,460 --> 00:39:56,950 वह कॉपी कर सकते हैं क्योंकि मेरे दाहिने हाथ का सूचक. 976 00:39:56,950 --> 00:40:00,044 और कहा कि प्रभावी ढंग डालता वापस यहाँ इस जगह में. 977 00:40:00,044 --> 00:40:02,460 तो संक्षेप में, यहां तक ​​कि हालांकि इस हमेशा के लिए तरह हमें ले जा रहा है 978 00:40:02,460 --> 00:40:04,510 वास्तव में अद्यतन करने के लिए एक सूची जुड़े एहसास 979 00:40:04,510 --> 00:40:06,580 आपरेशन कि अपेक्षाकृत आसान है. 980 00:40:06,580 --> 00:40:10,030 यह, दो, एक से तीन है अंत में कोड की लाइनों. 981 00:40:10,030 --> 00:40:12,780 लेकिन उन के चारों ओर लिपटा शायद कोड की लाइनों 982 00:40:12,780 --> 00:40:16,350 तर्क का एक सा है कि प्रभावी ढंग से है सवाल है, हम जहां हैं पूछता है? 983 00:40:16,350 --> 00:40:18,970 हम शुरुआत में हैं, मध्य या अंत? 984 00:40:18,970 --> 00:40:21,890 >> अब, निश्चित रूप से कुछ अन्य कर रहे हैं हम लागू हो सकता है आपरेशनों. 985 00:40:21,890 --> 00:40:24,880 और यहाँ इन चित्रों को सिर्फ दर्शाती क्या हम सिर्फ इंसानों के साथ किया था. 986 00:40:24,880 --> 00:40:26,080 क्या हटाने के बारे में? 987 00:40:26,080 --> 00:40:30,650 मैं चाहते हैं, उदाहरण के लिए, नंबर हटाने के 34 या 55, 988 00:40:30,650 --> 00:40:34,680 मैं, कोड की ही तरह हो सकता है लेकिन मैं एक या दो कदम की जरूरत के लिए जा रहा हूँ. 989 00:40:34,680 --> 00:40:36,110 नया क्या है वजह? 990 00:40:36,110 --> 00:40:40,460 मैं अंत में किसी को निकालते हैं, संख्या की तरह 55 और फिर 34, 991 00:40:40,460 --> 00:40:42,995 क्या यह भी मुझे लगता है कि कर के रूप में बदल गया है? 992 00:40:42,995 --> 00:40:44,870 मैं evict-- नहीं करने के लिए है अपना नाम फिर क्या है? 993 00:40:44,870 --> 00:40:45,380 >> दर्शक: जैक. 994 00:40:45,380 --> 00:40:46,255 >> डेविड जे Malan: जैक. 995 00:40:46,255 --> 00:40:49,770 मैं, evict-- मुक्त जैक न केवल करने के लिए है तो सचमुच कम से कम मुक्त जैक कहते हैं, या 996 00:40:49,770 --> 00:40:53,530 वहाँ सूचक भी है, लेकिन अब क्या पीटर के साथ बदलने की जरूरत है? 997 00:40:53,530 --> 00:40:55,510 उसका हाथ बेहतर नीचे ओर इशारा करते हुए शुरू करते हैं. 998 00:40:55,510 --> 00:40:59,300 जैसे ही मैं आज़ाद से भेंट के रूप में, क्योंकि जैक, पीटर अभी भी जैक तरफ इशारा करते हुए अगर 999 00:40:59,300 --> 00:41:02,530 और मैं इसलिए गुजर रखना सूची और पहुँच इस सूचक, 1000 00:41:02,530 --> 00:41:05,650 कि जब हमारे पुराने दोस्त विभाजन है वास्तव में लात हो सकता है गलती. 1001 00:41:05,650 --> 00:41:07,860 हम दिया है क्योंकि जैक को स्मृति वापस. 1002 00:41:07,860 --> 00:41:10,760 >> तुम वहाँ रह सकते हैं awkwardly बस एक पल के लिए. 1003 00:41:10,760 --> 00:41:13,410 हम सिर्फ एक जोड़ी है क्योंकि अंतिम संचालन पर विचार करने के लिए. 1004 00:41:13,410 --> 00:41:15,600 सूची के सिर निकाल रहा है, beginning-- और यह एक या 1005 00:41:15,600 --> 00:41:16,349 एक छोटे से परेशान. 1006 00:41:16,349 --> 00:41:19,640 हम जानते हैं कि करने के लिए है क्योंकि Gabe तरह की विशेष इस कार्यक्रम में है. 1007 00:41:19,640 --> 00:41:21,440 क्योंकि वास्तव में, वह अपने ही सूचक है. 1008 00:41:21,440 --> 00:41:24,860 वह सिर्फ, पर बताया जा रहा है यहां लगभग हर किसी के रूप में है. 1009 00:41:24,860 --> 00:41:28,112 >> तो सूची का सिर है जब , जिनके हाथ अब बदलने की जरूरत है हटाया? 1010 00:41:28,112 --> 00:41:29,070 अपना नाम फिर क्या है? 1011 00:41:29,070 --> 00:41:29,450 >> दर्शक: क्रिस्टीन. 1012 00:41:29,450 --> 00:41:31,408 >> डेविड जे Malan: मैं भयानक रहा हूँ नामों पर, जाहिरा तौर पर. 1013 00:41:31,408 --> 00:41:34,011 तो क्रिस्टीन और Gabe, जिनके हाथों में बदलने की जरूरत है 1014 00:41:34,011 --> 00:41:36,510 हम क्रिस्टीन को दूर करने का प्रयास करते, तस्वीर से नंबर 5,? 1015 00:41:36,510 --> 00:41:37,550 1016 00:41:37,550 --> 00:41:38,820 ठीक है, तो चलो Gabe करते हैं. 1017 00:41:38,820 --> 00:41:40,950 Gabe बात करने के लिए जा रहा है, शायद, संख्या 9 पर. 1018 00:41:40,950 --> 00:41:42,230 1019 00:41:42,230 --> 00:41:44,642 लेकिन आगे क्या होना चाहिए? 1020 00:41:44,642 --> 00:41:46,600 दर्शक: क्रिस्टीन चाहिए [अश्राव्य] अशक्त हो. 1021 00:41:46,600 --> 00:41:50,244 डेविड जे Malan: ठीक है, हम शायद चाहिए make-- मैं कहीं "शून्य" सुना. 1022 00:41:50,244 --> 00:41:51,410 दर्शक: अशक्त और उसे मुक्त. 1023 00:41:51,410 --> 00:41:51,855 डेविड जे Malan: क्या अशक्त? 1024 00:41:51,855 --> 00:41:53,074 दर्शक: अशक्त और उसे मुक्त. 1025 00:41:53,074 --> 00:41:54,490 डेविड जे Malan: अशक्त और उसे मुक्त. 1026 00:41:54,490 --> 00:41:55,422 तो यह बहुत आसान है. 1027 00:41:55,422 --> 00:41:58,380 और यह आप अब तरह कर रहे हैं कि सही है के संबंधित, वहाँ नहीं खड़ी है. 1028 00:41:58,380 --> 00:42:00,430 आप से किया गया है क्योंकि सूची से decoupled. 1029 00:42:00,430 --> 00:42:02,820 आप को प्रभावी ढंग से किया गया है सूची से अनाथ. 1030 00:42:02,820 --> 00:42:07,770 और इसलिए हम बेहतर पर अब नि: शुल्क फोन किया था क्रिस्टीन कि स्मृति वापस देने के लिए. 1031 00:42:07,770 --> 00:42:10,240 अन्यथा हर बार हम सूची में से एक नोड हटाना 1032 00:42:10,240 --> 00:42:14,230 हम सूची बना रही हो सकता है छोटे, लेकिन वास्तव में कम नहीं 1033 00:42:14,230 --> 00:42:15,096 स्मृति में आकार. 1034 00:42:15,096 --> 00:42:17,720 और इसलिए हम जोड़कर रखना और अगर उनका कहना है, की सूची पर बातें जोड़ने, 1035 00:42:17,720 --> 00:42:19,280 मेरे कंप्यूटर धीमी हो सकती है और धीमी और धीमी, 1036 00:42:19,280 --> 00:42:21,740 मैं खत्म हो रहा है, क्योंकि स्मृति, मैं वास्तव में नहीं हूँ, भले ही 1037 00:42:21,740 --> 00:42:25,580 क्रिस्टीन बाइट्स का उपयोग स्मृति की अब और नहीं. 1038 00:42:25,580 --> 00:42:28,500 >> तो अंत में वहाँ अन्य रहे हैं course-- हटाने के परिदृश्यों, 1039 00:42:28,500 --> 00:42:30,640 मध्य, हटाने में अंत में, के रूप में हमने देखा. 1040 00:42:30,640 --> 00:42:32,348 लेकिन अधिक दिलचस्प अब चुनौती है 1041 00:42:32,348 --> 00:42:34,770 जा रहा वास्तव में विचार करने के लिए होने के लिए समय चल रहा है क्या. 1042 00:42:34,770 --> 00:42:36,640 इतना ही नहीं, आप रख सकते हैं अपने कागज के टुकड़े, Gabe, अगर, 1043 00:42:36,640 --> 00:42:38,640 आप दे मन नहीं होता हर कोई एक तनाव गेंद. 1044 00:42:38,640 --> 00:42:42,100 हमारे लिंक की गई सूची के लिए बहुत बहुत धन्यवाद यहां स्वयंसेवकों की, अगर तुम सकता है. 1045 00:42:42,100 --> 00:42:45,320 >> [वाहवाही] 1046 00:42:45,320 --> 00:42:46,700 >> डेविड जे Malan: सब ठीक है. 1047 00:42:46,700 --> 00:42:51,110 विश्लेषणात्मक की तो एक जोड़ी तो सवाल है, अगर मैं कर सकता. 1048 00:42:51,110 --> 00:42:59,670 हम पहले इस अंकन देखा है, बड़ी हे और ओमेगा, ऊपरी सीमा 1049 00:42:59,670 --> 00:43:02,520 और पर कम सीमा कुछ एल्गोरिथ्म का समय चल रहा है. 1050 00:43:02,520 --> 00:43:04,950 तो चलो बस पर विचार करें सवालों के एक जोड़े. 1051 00:43:04,950 --> 00:43:07,090 >> एक, और हम यह कहा इससे पहले, चल रहा है क्या हो रहा है 1052 00:43:07,090 --> 00:43:10,647 एक के लिए खोज का समय बड़ी हे के मामले में सूची? 1053 00:43:10,647 --> 00:43:13,480 क्या चल रहा है पर एक ऊपरी ही है एक लिंक सूची खोज का समय 1054 00:43:13,480 --> 00:43:16,340 यहाँ हमारे स्वयंसेवकों द्वारा कार्यान्वित के रूप में? 1055 00:43:16,340 --> 00:43:17,820 यह n की बड़ी हे, रैखिक है. 1056 00:43:17,820 --> 00:43:20,630 सबसे खराब स्थिति में है क्योंकि तत्व, 55 की तरह, 1057 00:43:20,630 --> 00:43:23,830 हम जहां के लिए हो सकता है लग रही हो सकता जैक, अंत में सभी तरह था. 1058 00:43:23,830 --> 00:43:28,250 और दुर्भाग्य से, एक सरणी के विपरीत हम इस समय कल्पना नहीं कर सकते. 1059 00:43:28,250 --> 00:43:31,820 हमारे मनुष्य के सभी थे हालांकि छोटे तत्वों, 5 से हल, 1060 00:43:31,820 --> 00:43:35,900 बड़ा तत्व अप करने के लिए सभी तरह से, 55, कि आम तौर पर एक अच्छी बात है. 1061 00:43:35,900 --> 00:43:38,815 लेकिन इस धारणा है कि क्या करता है अब हमारे पास करने के लिए अनुमति देते हैं? 1062 00:43:38,815 --> 00:43:39,775 1063 00:43:39,775 --> 00:43:40,650 दर्शक: [अश्राव्य] 1064 00:43:40,650 --> 00:43:40,920 डेविड जे Malan: फिर से कहो? 1065 00:43:40,920 --> 00:43:41,800 दर्शक: रैंडम एक्सेस. 1066 00:43:41,800 --> 00:43:43,049 डेविड जे Malan: रैंडम एक्सेस. 1067 00:43:43,049 --> 00:43:46,330 और बदले में कि कोई हम कर सकते हैं इसका मतलब अब, कमजोर शून्य, अंतर्ज्ञान का उपयोग 1068 00:43:46,330 --> 00:43:49,365 द्विआधारी का उपयोग कर के और प्रत्यक्षता खोज और विभाजन और जीत. 1069 00:43:49,365 --> 00:43:51,240 क्योंकि भले ही हम मनुष्य जाहिर कर सकता 1070 00:43:51,240 --> 00:43:54,610 एंडी या ईसाई थे कि देखना मोटे तौर पर इस सूची के मध्य में, 1071 00:43:54,610 --> 00:43:57,670 हम केवल एक के रूप में जानते हैं कि सूची उड़े द्वारा कंप्यूटर 1072 00:43:57,670 --> 00:43:59,029 शुरू से ही. 1073 00:43:59,029 --> 00:44:00,570 इसलिए हम चाहते हैं कि बिना सोचे समझे छोड़ दिया है. 1074 00:44:00,570 --> 00:44:04,380 >> N की तो बड़ी हे अब ऊपरी है हमारे खोज समय पर बाध्य. 1075 00:44:04,380 --> 00:44:07,920 क्या हमारे खोज की ओमेगा के बारे में? 1076 00:44:07,920 --> 00:44:11,535 कम बाध्य खोज पर क्या है इस सूची में कुछ संख्या के लिए? 1077 00:44:11,535 --> 00:44:12,410 दर्शक: [अश्राव्य] 1078 00:44:12,410 --> 00:44:13,040 डेविड जे Malan: फिर से कहो? 1079 00:44:13,040 --> 00:44:13,420 दर्शक: एक. 1080 00:44:13,420 --> 00:44:13,800 डेविड जे Malan: एक. 1081 00:44:13,800 --> 00:44:14,760 तो लगातार समय. 1082 00:44:14,760 --> 00:44:17,020 सबसे अच्छा मामले में, क्रिस्टीन है वास्तव में सूची की शुरुआत में. 1083 00:44:17,020 --> 00:44:19,020 और हम देख रहे हैं संख्या 5 है, तो हम उसे मिल गया. 1084 00:44:19,020 --> 00:44:19,787 तो कोई बड़ी बात नहीं. 1085 00:44:19,787 --> 00:44:22,370 लेकिन वह कम हो गया है इस मामले में सूची की शुरुआत. 1086 00:44:22,370 --> 00:44:23,745 की तरह कुछ के बारे में क्या हटाएं? 1087 00:44:23,745 --> 00:44:24,717 1088 00:44:24,717 --> 00:44:26,300 आप एक तत्व को नष्ट करने के लिए क्या चाहते हैं? 1089 00:44:26,300 --> 00:44:29,200 क्या ऊपरी बाध्य और कम ही है एक लिंक से कुछ को हटाने पर 1090 00:44:29,200 --> 00:44:29,699 सूची? 1091 00:44:29,699 --> 00:44:35,195 1092 00:44:35,195 --> 00:44:36,070 दर्शक: [अश्राव्य] 1093 00:44:36,070 --> 00:44:36,420 डेविड जे Malan: फिर से कहो? 1094 00:44:36,420 --> 00:44:37,067 दर्शक: एन. 1095 00:44:37,067 --> 00:44:38,900 डेविड जे Malan: n है बाध्य वास्तव में ऊपरी. 1096 00:44:38,900 --> 00:44:41,700 सबसे खराब स्थिति में हम कोशिश क्योंकि हम बस किया था, जैक नष्ट करने के लिए. 1097 00:44:41,700 --> 00:44:43,050 उन्होंने अंत में सभी तरह है. 1098 00:44:43,050 --> 00:44:45,419 हमेशा के लिए हमें ले जाता है, या n चरणों उसे खोजने के लिए. 1099 00:44:45,419 --> 00:44:46,460 इसलिए कि एक ऊपरी बाध्य है. 1100 00:44:46,460 --> 00:44:47,430 यह सुनिश्चित करें कि, रैखिक है. 1101 00:44:47,430 --> 00:44:50,970 और सबसे अच्छी मामले समय से चल रहा है, या सबसे अच्छा मामले में निचली सीमा 1102 00:44:50,970 --> 00:44:51,975 लगातार समय होगा. 1103 00:44:51,975 --> 00:44:54,600 शायद हम नष्ट करने की कोशिश की वजह क्रिस्टीन, और हम सिर्फ भाग्यशाली हो 1104 00:44:54,600 --> 00:44:55,558 वह शुरुआत में है. 1105 00:44:55,558 --> 00:44:56,350 अब एक मिनट रुको. 1106 00:44:56,350 --> 00:44:59,370 Gabe, शुरुआत में भी था और हम भी Gabe अद्यतन करने के लिए किया था. 1107 00:44:59,370 --> 00:45:01,150 इसलिए कि सिर्फ एक कदम नहीं था. 1108 00:45:01,150 --> 00:45:04,210 तो यह वास्तव में स्थिर है समय, सबसे अच्छा मामले में, 1109 00:45:04,210 --> 00:45:06,345 छोटी तत्व हटाने के लिए? 1110 00:45:06,345 --> 00:45:07,360 1111 00:45:07,360 --> 00:45:10,960 यह दो हो सकता है, भले ही यह है कोड के तीन, या यहां तक ​​कि 100 लाइनों, 1112 00:45:10,960 --> 00:45:14,000 यह की एक ही नंबर है अगर नहीं कुछ पाश में लाइनों,, 1113 00:45:14,000 --> 00:45:16,577 और आकार के स्वतंत्र सूची की, बिल्कुल. 1114 00:45:16,577 --> 00:45:18,660 तत्व को हटाया जा रहा है सूची की शुरुआत 1115 00:45:18,660 --> 00:45:21,940 हम साथ सौदा किया है, भले ही Gabe, अभी भी स्थिर समय है. 1116 00:45:21,940 --> 00:45:24,220 >> तो यह एक तरह लगता है पीछे की ओर से बड़े पैमाने पर कदम. 1117 00:45:24,220 --> 00:45:27,000 और समय की बर्बादी , अगर सप्ताह एक और सप्ताह में 1118 00:45:27,000 --> 00:45:30,250 शून्य हम न केवल था pseudocode कोड लेकिन वास्तविक कोड 1119 00:45:30,250 --> 00:45:35,780 लॉग है कि कुछ को लागू करने के लिए आधार एन, या लॉग इन, बल्कि, एन के, आधार 2, 1120 00:45:35,780 --> 00:45:37,150 अपने समय चल रहा है के संदर्भ में. 1121 00:45:37,150 --> 00:45:40,710 तो बिल्ली हम शुरू क्यों करना चाहते हैं एक लिंक की गई सूची की तरह कुछ का उपयोग कर? 1122 00:45:40,710 --> 00:45:41,517 हाँ. 1123 00:45:41,517 --> 00:45:44,022 >> दर्शक: तो आप जोड़ सकते हैं सरणी के तत्वों. 1124 00:45:44,022 --> 00:45:46,230 डेविड जे Malan: तो आप कर सकते हैं सरणी के तत्वों को जोड़ने. 1125 00:45:46,230 --> 00:45:47,550 और यह भी विषयगत है. 1126 00:45:47,550 --> 00:45:49,740 और हम देखना जारी रखेंगे यह इस व्यापार बंद, ज्यादा 1127 00:45:49,740 --> 00:45:51,573 जैसे हमने देखा है एक मर्ज प्रकार के साथ व्यापार बंद. 1128 00:45:51,573 --> 00:45:54,606 हम वास्तव में तेजी लाने सकता है बल्कि, खोज या छँटाई, 1129 00:45:54,606 --> 00:45:57,480 हम थोड़ा और अधिक अंतरिक्ष खर्च और एक स्मृति का एक और हिस्सा है 1130 00:45:57,480 --> 00:45:58,760 या मर्ज तरह के लिए एक सरणी. 1131 00:45:58,760 --> 00:46:01,270 लेकिन हम अधिक खर्च अंतरिक्ष, लेकिन हम समय बचाने के लिए. 1132 00:46:01,270 --> 00:46:04,820 इस मामले में, हम कर रहे हैं समय दे रही है लेकिन हम कर रहे हैं 1133 00:46:04,820 --> 00:46:08,170 लचीलापन पाने, गतिशीलता अगर तुम जाएगा, 1134 00:46:08,170 --> 00:46:10,280 जो यकीनन एक सकारात्मक विशेषता है. 1135 00:46:10,280 --> 00:46:11,520 >> हम भी अंतरिक्ष खर्च कर रहे हैं. 1136 00:46:11,520 --> 00:46:13,710 क्या अर्थ में एक लिंक किया गया है अधिक महंगी की सूची 1137 00:46:13,710 --> 00:46:15,700 एक सरणी से अंतरिक्ष के संदर्भ में? 1138 00:46:15,700 --> 00:46:18,379 1139 00:46:18,379 --> 00:46:19,920 जहां अतिरिक्त जगह से आ रही है? 1140 00:46:19,920 --> 00:46:20,460 हाँ? 1141 00:46:20,460 --> 00:46:21,800 >> दर्शक: [अश्राव्य] सूचक. 1142 00:46:21,800 --> 00:46:23,310 >> डेविड जे Malan: हाँ, हम भी सूचक है. 1143 00:46:23,310 --> 00:46:25,560 तो इस minorly गुस्सा आ रहा है उस में नहीं रह गया हूँ 1144 00:46:25,560 --> 00:46:27,780 मैं सिर्फ एक पूर्णांक के भंडारण एक पूर्णांक प्रतिनिधित्व करने के लिए. 1145 00:46:27,780 --> 00:46:30,990 मैं एक पूर्णांक और एक भंडारण कर रहा हूँ भी 32 बिट है जो सूचक,. 1146 00:46:30,990 --> 00:46:33,470 तो मैं सचमुच दोहरीकरण हूँ अंतरिक्ष की राशि शामिल है. 1147 00:46:33,470 --> 00:46:36,040 इसलिए कि एक व्यापार बंद है, लेकिन कि पूर्णांक के मामले में है. 1148 00:46:36,040 --> 00:46:39,580 , आप पूर्णांक भंडारण नहीं कर रहे हैं कि मान लीजिए लेकिन इन आयतों के प्रत्येक लगता है 1149 00:46:39,580 --> 00:46:43,290 या ये मनुष्य की प्रत्येक प्रतिनिधित्व था एक शब्द, एक अंग्रेजी शब्द है कि 1150 00:46:43,290 --> 00:46:46,430 पांच अक्षर, 10 हो सकती है वर्ण, शायद उससे भी ज्यादा. 1151 00:46:46,430 --> 00:46:49,940 तब सिर्फ 32 अधिक बिट जोड़ने एक बड़ी बात की कम हो सकता है. 1152 00:46:49,940 --> 00:46:52,160 >> क्या छात्रों में से प्रत्येक अगर प्रदर्शन में 1153 00:46:52,160 --> 00:46:55,107 थे सचमुच छात्र structs कि शायद नाम और घरों और है 1154 00:46:55,107 --> 00:46:57,065 फोन नंबर और ट्विटर संभालती है और पसंद है. 1155 00:46:57,065 --> 00:46:59,564 इसलिए सभी क्षेत्रों में हम शुरू दूसरे दिन के बारे में बात कर, 1156 00:46:59,564 --> 00:47:02,410 के रूप में एक बड़ी बात की बहुत कम हमारे नोड्स अधिक दिलचस्प हो 1157 00:47:02,410 --> 00:47:05,972 और बड़ा है, हां, एक अतिरिक्त खर्च करने के लिए सूचक सिर्फ एक साथ उन्हें जोड़ने के लिए. 1158 00:47:05,972 --> 00:47:07,180 लेकिन वास्तव में, यह एक व्यापार बंद है. 1159 00:47:07,180 --> 00:47:09,560 और वास्तव में, कोड है अधिक जटिल है, के रूप में आप हूँ 1160 00:47:09,560 --> 00:47:11,770 के माध्यम से उड़े से देखना उस विशेष उदाहरण. 1161 00:47:11,770 --> 00:47:14,302 लेकिन क्या अगर वहाँ थे यहां कुछ पवित्र कंघी. 1162 00:47:14,302 --> 00:47:17,010 हम एक कदम नहीं लेते तो क्या पीछे की ओर, लेकिन एक विशाल कदम आगे 1163 00:47:17,010 --> 00:47:19,180 और एक डेटा लागू संरचना जो के माध्यम से हम 1164 00:47:19,180 --> 00:47:22,870 जैक या जैसे तत्वों पा सकते हैं क्रिस्टीन या किसी अन्य तत्वों 1165 00:47:22,870 --> 00:47:25,870 सच निरंतर समय में इस श्रेणी में? 1166 00:47:25,870 --> 00:47:26,920 खोज स्थिर है. 1167 00:47:26,920 --> 00:47:28,320 हटाएं स्थिर है. 1168 00:47:28,320 --> 00:47:29,570 सम्मिलित स्थिर है. 1169 00:47:29,570 --> 00:47:32,260 इन कार्यों के सभी लगातार कर रहे हैं. 1170 00:47:32,260 --> 00:47:33,750 यही कारण है कि हमारे पवित्र कंघी होगा. 1171 00:47:33,750 --> 00:47:36,690 और वह है, जहां हम अगली बार ले जाएगा. 1172 00:47:36,690 --> 00:47:38,600 फिर मिलते हैं. 1173 00:47:38,600 --> 00:47:39,371