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