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