1 00:00:00,000 --> 00:00:00,530 2 00:00:00,530 --> 00:00:03,070 >> سرور 1: دعونا نعطي هذا الحل المحاولة. 3 00:00:03,070 --> 00:00:07,130 لذلك دعونا نلقي نظرة على ما لدينا سوف تبدو وكأنها عقدة البنية. 4 00:00:07,130 --> 00:00:11,040 هنا، ونحن نرى ونحن في طريقنا لديك كلمة منطقي ونجم عقدة البنية 5 00:00:11,040 --> 00:00:12,990 أطفال قوس الأبجدية. 6 00:00:12,990 --> 00:00:18,720 أولا حتى الشيء الذي يمكن أن يتساءل، لماذا يتم تجزئة الأبجدية يعرف بأنه 27؟ 7 00:00:18,720 --> 00:00:22,540 كذلك، تذكر أننا سنحتاج الى ليتم التعامل مع اقتباس أحادية، لذلك 8 00:00:22,540 --> 00:00:25,610 التي ستكون نوعا من الخاصة الحال في جميع أنحاء هذا البرنامج. 9 00:00:25,610 --> 00:00:28,780 >> حسنا، الآن، وتذكر كيف يمكن ل حاكموا يعمل فعلا. 10 00:00:28,780 --> 00:00:33,420 دعونا نقول أننا فهرسة القطط كلمة، ثم من جذر حاكموا لدينا، 11 00:00:33,420 --> 00:00:36,670 ونحن في طريقنا لإلقاء نظرة على الأطفال مجموعة، ونحن في طريقنا للبحث في 12 00:00:36,670 --> 00:00:42,250 المؤشر الذي يتوافق مع رسالة C. ذلك من شأنه أن يكون مؤشر اثنين. 13 00:00:42,250 --> 00:00:46,400 ذلك بالنظر إلى أن، وهذا سيتيح لنا عقدة جديدة، ثم سنقوم 14 00:00:46,400 --> 00:00:47,880 العمل من تلك العقدة. 15 00:00:47,880 --> 00:00:51,830 >> ذلك بالنظر إلى أن عقدة، ونحن مرة أخرى سوف ننظر في مجموعة الأطفال، 16 00:00:51,830 --> 00:00:56,170 ونحن في طريقنا للبحث في الفهرس الصفر لتتوافق مع A في القط. 17 00:00:56,170 --> 00:01:01,240 حتى ذلك الحين ونحن في طريقنا للذهاب إلى تلك العقدة، وبالنظر إلى أن العقدة، ونحن في طريقنا 18 00:01:01,240 --> 00:01:05,170 لإلقاء نظرة على المؤشر الذي يتوافق لT. والانتقال إلى تلك العقدة، 19 00:01:05,170 --> 00:01:09,590 أخيرا، لقد بدا تماما من خلال كلمة القط، والآن منطقي 20 00:01:09,590 --> 00:01:15,020 ومن المفترض الكلمة للإشارة إلى ما إذا كان هذه كلمة معينة هو في الواقع كلمة واحدة. 21 00:01:15,020 --> 00:01:17,530 >> فلماذا نحتاج أن حالة خاصة؟ 22 00:01:17,530 --> 00:01:21,680 حسنا، ماذا لو كلمة كارثة في قاموسنا، ولكن 23 00:01:21,680 --> 00:01:24,120 كلمة القط لا؟ 24 00:01:24,120 --> 00:01:29,030 حتى في البحث لمعرفة ما اذا كلمة القط في قاموسنا، ونحن في طريقنا لل 25 00:01:29,030 --> 00:01:34,880 تبدو بنجاح من خلال مؤشرات C-A-T والتوصل إلى عقدة، ولكن هذا 26 00:01:34,880 --> 00:01:39,760 فقط لأن الكارثة حدث ل إنشاء العقد على طول الطريق من C-A-T جميع 27 00:01:39,760 --> 00:01:41,250 الطريق إلى نهاية الكلمة. 28 00:01:41,250 --> 00:01:46,520 بحيث يتم استخدام منطقي كلمة تشير إلى ما إذا كان هذا الموقع خاص فعلا 29 00:01:46,520 --> 00:01:48,370 تشير كلمة واحدة. 30 00:01:48,370 --> 00:01:52,920 >> كل الحق، وحتى الآن أن نعرف ما حاكموا يجري لتبدو وكأنها، دعونا ننظر 31 00:01:52,920 --> 00:01:54,800 في وظيفة التحميل. 32 00:01:54,800 --> 00:01:58,670 لذلك يجري تحميل لإرجاع منطقي لما إذا كنا بنجاح أو 33 00:01:58,670 --> 00:02:03,020 القاموس تحميلها دون جدوى و هذا سيكون القاموس 34 00:02:03,020 --> 00:02:04,520 أننا نريد أن يتم تحميلها. 35 00:02:04,520 --> 00:02:08,310 أولا حتى شيء نحن ذاهبون الى القيام به هو فتح حتى أن القاموس للقراءة. 36 00:02:08,310 --> 00:02:12,060 علينا أن نتأكد من أننا لم تفشل، حتى إذا كان القاموس لا 37 00:02:12,060 --> 00:02:15,280 افتتح بنجاح، فإنه سيعود لا، في هذه الحالة نحن في طريقنا لل 38 00:02:15,280 --> 00:02:16,340 العودة الكاذبة. 39 00:02:16,340 --> 00:02:21,290 ولكن على افتراض أنه بنجاح فتح، ثم يمكننا أن نقرأ الواقع 40 00:02:21,290 --> 00:02:22,310 من خلال القاموس. 41 00:02:22,310 --> 00:02:24,940 >> أولا حتى شيء ونحن في طريقنا ل تريد القيام به هو لدينا هذا 42 00:02:24,940 --> 00:02:26,560 الجذر متغير عمومي. 43 00:02:26,560 --> 00:02:30,250 الآن، وجذر ستكون نجمة العقدة. 44 00:02:30,250 --> 00:02:33,830 انها قمة حاكموا لدينا أننا ستكون بالتكرار عبر. 45 00:02:33,830 --> 00:02:38,200 أولا حتى شيء نحن ذاهبون الى تريد القيام به هو تخصيص الذاكرة لدينا الجذر. 46 00:02:38,200 --> 00:02:42,040 >> تلاحظ أن نستخدمه في Calloc وظيفة، والتي هي في الأساس نفسه 47 00:02:42,040 --> 00:02:45,560 كما وظيفة Malloc، إلا انها مضمونة للعودة شيء 48 00:02:45,560 --> 00:02:47,240 ركزت تماما. 49 00:02:47,240 --> 00:02:51,350 لذلك إذا كنا Malloc، فإننا بحاجة إلى تذهب من خلال جميع المؤشرات في موقعنا 50 00:02:51,350 --> 00:02:54,220 عقدة وتأكد من أن انهم جميعا فارغة. 51 00:02:54,220 --> 00:02:56,780 حتى Calloc سوف نفعل ذلك بالنسبة لنا. 52 00:02:56,780 --> 00:03:00,390 >> الآن، تماما مثل Malloc، ونحن بحاجة للتأكد التأكد من أن تخصيص في الواقع 53 00:03:00,390 --> 00:03:01,580 ناجحة. 54 00:03:01,580 --> 00:03:04,060 إذا كان هذا عاد فارغة، ثم نحن تحتاج إلى إغلاق قاموسنا 55 00:03:04,060 --> 00:03:06,170 ملف العودة وكاذبة. 56 00:03:06,170 --> 00:03:11,040 حتى على افتراض تخصيص و ناجحة، ونحن في طريقنا إلى استخدام عقدة 57 00:03:11,040 --> 00:03:14,340 نجم المؤشر لتكرار حاكموا من خلال موقعنا. 58 00:03:14,340 --> 00:03:17,950 لذلك الجذر لدينا لن تتغير، ولكن ونحن في طريقنا إلى استخدام المؤشر ل 59 00:03:17,950 --> 00:03:20,770 في الواقع الانتقال من عقدة إلى عقدة. 60 00:03:20,770 --> 00:03:25,000 >> كل الحق، لذلك في هذا للحلقة، ونحن القراءة من خلال ملف القاموس، 61 00:03:25,000 --> 00:03:26,965 ونستخدمه في fgetc. 62 00:03:26,965 --> 00:03:30,360 حتى fgetc هو الذهاب الى الاستيلاء على واحد حرف من الملف. 63 00:03:30,360 --> 00:03:33,430 ونحن في طريقنا لمواصلة الاستيلاء الأحرف في حين أننا لا تصل إلى 64 00:03:33,430 --> 00:03:37,540 نهاية الملف، لذلك هناك حالتين نحن بحاجة إلى التعامل معها. 65 00:03:37,540 --> 00:03:41,640 الأولى، إذا كان الحرف ليس سطر جديد، لذلك نحن نعرف ما اذا كان هذا الجديد 66 00:03:41,640 --> 00:03:44,480 الخط، ثم نحن على وشك ننتقل إلى كلمة جديدة. 67 00:03:44,480 --> 00:03:49,300 ولكن على افتراض أنه لم يكن سطر جديد، ثم هنا، ونحن نريد لمعرفة 68 00:03:49,300 --> 00:03:52,440 مؤشر نحن في طريقنا للمؤشر في في مجموعة الأطفال التي 69 00:03:52,440 --> 00:03:53,890 ونحن ننظر في من قبل. 70 00:03:53,890 --> 00:03:57,950 >> لذلك كما قلت من قبل، نحن بحاجة إلى حالة خاصة اقتباس أحادية. 71 00:03:57,950 --> 00:04:01,040 لاحظ أننا نستخدم المشغل الثلاثي هنا، لذلك نحن ذاهبون الى قراءة 72 00:04:01,040 --> 00:04:05,500 هذا كما لو كان الطابع نقرأ في الفاصلة العليا، ثم نحن في طريقنا لل 73 00:04:05,500 --> 00:04:11,740 تعيين المؤشر يساوي الأبجدية ناقص 1، والتي ستكون مؤشر 26. 74 00:04:11,740 --> 00:04:15,190 آخر، إذا لم يكن الفاصلة العليا، ثم ونحن في طريقنا لتعيين مؤشر 75 00:04:15,190 --> 00:04:17,820 ج يساوي ناقص. 76 00:04:17,820 --> 00:04:23,090 حتى أن نتذكر مرة أخرى من مجموعات ع السابقة، ج ناقص سوف تعطينا 77 00:04:23,090 --> 00:04:27,470 موقف أبجدية ج، لذلك إذا ج هو حرف A، هذه الإرادة 78 00:04:27,470 --> 00:04:28,770 تعطينا مؤشر الصفر. 79 00:04:28,770 --> 00:04:32,180 هذه الرسالة B، فإنه يعطي لنا مؤشر 1، وهلم جرا. 80 00:04:32,180 --> 00:04:37,070 >> لذلك هذا يعطينا مؤشر إلى مجموعة الأطفال التي نريد. 81 00:04:37,070 --> 00:04:42,540 الآن، إذا كان هذا هو مؤشر فارغة حاليا في مجموعة الأطفال، وهذا يعني أن 82 00:04:42,540 --> 00:04:47,470 لا وجود عقدة حاليا من هذا الطريق، لذلك نحن بحاجة إلى تخصيص 83 00:04:47,470 --> 00:04:49,220 عقدة لهذا المسار. 84 00:04:49,220 --> 00:04:50,610 هذا ما نقوم به هنا. 85 00:04:50,610 --> 00:04:54,650 لذلك نحن ذاهبون الى، مرة أخرى، استخدم Calloc وظيفة بحيث لم يكن لدينا 86 00:04:54,650 --> 00:05:00,130 إلى صفر من كل المؤشرات، ونحن، مرة أخرى، تحتاج إلى التحقق من أن Calloc 87 00:05:00,130 --> 00:05:01,300 لم تفشل. 88 00:05:01,300 --> 00:05:04,760 إذا لم تفشل Calloc، ثم نحن بحاجة لتفريغ كل شيء، أغلق لدينا 89 00:05:04,760 --> 00:05:06,880 القاموس، والعودة كاذبة. 90 00:05:06,880 --> 00:05:14,110 >> حتى على افتراض أنه لم يفشل، ثم هذا سيخلق طفل جديد بالنسبة لنا، 91 00:05:14,110 --> 00:05:16,000 ثم سنذهب الى هذا الطفل. 92 00:05:16,000 --> 00:05:19,030 سيكون المؤشر لدينا تكرار وصولا الى هذا الطفل. 93 00:05:19,030 --> 00:05:23,390 الآن، إذا كان هذا غير فارغة لتبدأ، ثم المؤشر يمكن تكرار فقط 94 00:05:23,390 --> 00:05:26,650 وصولا الى هذا الطفل دون الواقع الحاجة إلى تخصيص أي شيء. 95 00:05:26,650 --> 00:05:30,790 هذا هو الحال حيث أننا حصل الأول تخصيص كلمة القط، و 96 00:05:30,790 --> 00:05:34,390 وهذا يعني عندما نذهب إلى تخصيص كارثة، ونحن لا تحتاج إلى إنشاء 97 00:05:34,390 --> 00:05:35,720 العقد ل C-A-T مرة أخرى. 98 00:05:35,720 --> 00:05:37,620 كانت موجودة بالفعل. 99 00:05:37,620 --> 00:05:40,140 >> حسنا، ما هو هذا آخر؟ 100 00:05:40,140 --> 00:05:44,600 هذا هو الشرط حيث كان ج مائل n، حيث كان ج سطر جديد. 101 00:05:44,600 --> 00:05:47,780 وهذا يعني أن لدينا بنجاح أكمل الكلمة. 102 00:05:47,780 --> 00:05:51,020 الآن، ماذا نريد أن نفعل عندما كنا بنجاح كلمة واحدة؟ 103 00:05:51,020 --> 00:05:55,250 نحن ذاهبون الى استخدام هذا الحقل كلمة داخل البنية عقدة لدينا. 104 00:05:55,250 --> 00:06:00,570 >> نحن نريد أن تعيين هذا إلى True، بحيث يشير إلى أن هذا يشير إلى وجود عقدة 105 00:06:00,570 --> 00:06:03,320 كلمة الناجحة كلمة الفعلية. 106 00:06:03,320 --> 00:06:05,050 الآن، تعيين هذا إلى True. 107 00:06:05,050 --> 00:06:09,210 نحن نريد لإعادة المؤشر إلى نقطة دينا إلى بداية حاكموا مرة أخرى. 108 00:06:09,210 --> 00:06:13,510 وأخيرا، زيادة قاموسنا الحجم منذ وجدنا كلمة أخرى. 109 00:06:13,510 --> 00:06:16,450 >> كل الحق، لذلك نحن في طريقنا للحفاظ على القيام أن القراءة في حرف 110 00:06:16,450 --> 00:06:21,960 حرف، بناء العقد الجديد في لدينا حاكموا ولكل كلمة في 111 00:06:21,960 --> 00:06:26,810 القاموس، حتى نصل أخيرا لج يساوي EOF، في هذه الحالة، ونحن كسر 112 00:06:26,810 --> 00:06:28,100 من الملف. 113 00:06:28,100 --> 00:06:31,110 الآن، هناك نوعان من الحالات تحت التي كنا قد ضرب EOF. 114 00:06:31,110 --> 00:06:35,680 الأول هو إذا كان هناك خطأ القراءة من ملف، لذلك إذا كان هناك 115 00:06:35,680 --> 00:06:39,280 خطأ، ونحن بحاجة إلى القيام نموذجية تفريغ كل شيء، بإغلاق الملف، 116 00:06:39,280 --> 00:06:40,520 العودة الكاذبة. 117 00:06:40,520 --> 00:06:43,870 على افتراض لم يكن هناك خطأ، وهذا يعني فقط أننا فعلا ضرب نهاية 118 00:06:43,870 --> 00:06:47,820 ملف، في هذه الحالة، فإننا إغلاق ملف العودة وصحيح لأننا 119 00:06:47,820 --> 00:06:51,010 بنجاح تحميل القاموس لدينا في حاكموا. 120 00:06:51,010 --> 00:06:54,240 >> كل الحق، لذلك دعونا الآن تحقق من تحقق. 121 00:06:54,240 --> 00:06:58,780 النظر في وظيفة تحقق، ونحن نرى أن تحقق يجري لإرجاع منطقي. 122 00:06:58,780 --> 00:07:03,740 فإنها ترجع صحيح إذا هذه الكلمة أنه يتم تمريرها في حاكموا لدينا. 123 00:07:03,740 --> 00:07:06,170 تقوم بإرجاع False خلاف ذلك. 124 00:07:06,170 --> 00:07:10,110 >> فكيف نحن ذاهبون إلى تحديد ما إذا كان هذه الكلمة هي في منطقتنا حاكموا؟ 125 00:07:10,110 --> 00:07:14,270 نرى هنا أنه، تماما مثل من قبل، ونحن في طريقنا إلى استخدام المؤشر للتنقل 126 00:07:14,270 --> 00:07:16,010 حاكموا من خلال موقعنا. 127 00:07:16,010 --> 00:07:20,650 الآن، وهنا، ونحن في طريقنا للتكرار خلال موقعنا على الكلمة بأكملها. 128 00:07:20,650 --> 00:07:24,680 لذلك بالتكرار على كلمة نحن مرت، ونحن في طريقنا لتحديد 129 00:07:24,680 --> 00:07:29,280 مؤشر إلى مجموعة الأطفال التي يقابل كلمة قوس ط. 130 00:07:29,280 --> 00:07:34,150 لذلك هذا هو الذهاب الى تبدو تماما مثل الحمل، حيث إن كلمة قوس ط هو 131 00:07:34,150 --> 00:07:38,110 اقتباس أحادية، ثم نريد استخدام المؤشر الأبجدية ناقص 1 لأننا تحديد 132 00:07:38,110 --> 00:07:41,160 هذا هو المكان الذي نحن ذاهبون لتخزين الفواصل العليا. 133 00:07:41,160 --> 00:07:44,440 >> إلا فإننا ذاهبون الى استخدام tolower كلمة قوس ط. 134 00:07:44,440 --> 00:07:48,270 لذلك تذكر أن الكلمة يمكن أن يكون تعسفيا الرسملة، ولذا فإننا 135 00:07:48,270 --> 00:07:51,590 نريد أن نتأكد من أن نستخدمه نسخة صغيرة من الأشياء. 136 00:07:51,590 --> 00:07:55,300 ومن ثم طرح من هذا صغيرة لل، مرة أخرى، تعطينا 137 00:07:55,300 --> 00:07:57,940 موقف الأبجدي من هذا الطابع. 138 00:07:57,940 --> 00:08:01,740 بحيث سيكون لدينا مؤشر في مجموعة الأطفال. 139 00:08:01,740 --> 00:08:06,480 >> والآن، إذا كان هذا المؤشر في الأطفال مجموعة باطل، وهذا يعني أننا 140 00:08:06,480 --> 00:08:09,050 لم تعد قادرة على الاستمرار بالتكرار أسفل دينا حاكموا. 141 00:08:09,050 --> 00:08:13,320 إذا كان هذا هو الحال، هذه الكلمة لا يمكن ربما يكون في حاكموا لدينا، لأنه إذا كان 142 00:08:13,320 --> 00:08:18,000 و، فإن ذلك يعني أنه سيكون هناك الطريق وصولا الى تلك الكلمة، وتفعل 143 00:08:18,000 --> 00:08:19,350 لم تواجه فارغة. 144 00:08:19,350 --> 00:08:21,910 لذلك تواجه فارغة، نعود خطأ. 145 00:08:21,910 --> 00:08:23,810 كلمة ليست في القاموس. 146 00:08:23,810 --> 00:08:28,200 إذا لم تكن فارغة، ثم نحن في طريقنا لل تستمر بالتكرار، لذلك نحن ذاهبون 147 00:08:28,200 --> 00:08:33,150 تحديث المؤشر لدينا للإشارة إلى أن عقدة معينة في هذا الفهرس. 148 00:08:33,150 --> 00:08:36,659 >> لذلك علينا أن نحافظ يفعل ذلك طوال الكلمة بأكملها. 149 00:08:36,659 --> 00:08:40,630 على افتراض أننا لم تصل لاغية، وهذا يعني تمكنا من خلال الحصول على كامل 150 00:08:40,630 --> 00:08:44,840 العالم وتجد لدينا عقدة في حاكموا، لكننا لم تفعل تماما حتى الآن. 151 00:08:44,840 --> 00:08:46,350 نحن لا نريد فقط العودة إلى صحيح. 152 00:08:46,350 --> 00:08:51,400 نريد أن نعود المؤشر كلمة خطأ منذ ذلك الحين، نتذكر مرة أخرى، إذا ليس القط 153 00:08:51,400 --> 00:08:55,140 في قاموسنا والكارثة، ثم سوف نحصل بنجاح من خلال 154 00:08:55,140 --> 00:08:59,810 القط كلمة واحدة، ولكن الكلمة المؤشر سيكون خطأ وليس صحيح. 155 00:08:59,810 --> 00:09:04,990 لذلك نعود للإشارة إلى كلمة المؤشر إذا كانت هذه العقدة هي في الواقع كلمة واحدة، 156 00:09:04,990 --> 00:09:06,530 وهذا كل شيء عن الاختيار. 157 00:09:06,530 --> 00:09:08,310 >> لذلك دعونا تحقق من الحجم. 158 00:09:08,310 --> 00:09:11,410 لذلك الحجم سوف يكون من السهل جدا منذ ذلك الحين، نتذكر في الحمل، ونحن 159 00:09:11,410 --> 00:09:15,480 تزايد حجم القاموس ل كل كلمة التي نواجهها. 160 00:09:15,480 --> 00:09:20,820 لذلك الحجم هو مجرد الذهاب الى العودة حجم القاموس، وهذا كل شيء. 161 00:09:20,820 --> 00:09:24,650 >> كل الحق، لذلك أخيرا، لدينا إلغاء. 162 00:09:24,650 --> 00:09:29,050 حتى إلغاء، ونحن في طريقنا للاستخدام وظيفة عودي إلى القيام به في الواقع كل 163 00:09:29,050 --> 00:09:33,390 العمل بالنسبة لنا، لذلك لدينا وظيفة سوف يتم استدعاؤها مفرغ. 164 00:09:33,390 --> 00:09:35,830 ما هو مفرغ تنوي القيام به؟ 165 00:09:35,830 --> 00:09:40,640 نرى هنا أن يتم الانتقال إلى مفرغ تكرار عبر جميع الأطفال في 166 00:09:40,640 --> 00:09:45,810 هذه عقدة معينة، وإذا كان الطفل العقدة ليست فارغة، ثم نحن في طريقنا لل 167 00:09:45,810 --> 00:09:47,760 تفريغ عقدة الطفل. 168 00:09:47,760 --> 00:09:52,070 >> لذلك هذا هو الذهاب الى متكرر تفريغ جميع أطفالنا. 169 00:09:52,070 --> 00:09:55,140 مرة واحدة ونحن على يقين من أن جميع أطفالنا تم تفريغها، ثم نحن 170 00:09:55,140 --> 00:09:58,830 يمكن أن نحرر أنفسنا، لذلك تفريغ بنفسي. 171 00:09:58,830 --> 00:10:04,550 ولذلك فإن هذا سوف تفريغ متكرر حاكموا بأكمله، ثم مرة واحدة هذا 172 00:10:04,550 --> 00:10:06,910 القيام به، ويمكننا فقط العودة صحيح. 173 00:10:06,910 --> 00:10:09,770 تفريغ لا يمكن أن تفشل، ونحن مجرد تحرير الأشياء. 174 00:10:09,770 --> 00:10:12,985 ذلك مرة واحدة ننتهي تحرير كل شيء، والعودة الحقيقية. 175 00:10:12,985 --> 00:10:14,380 وهذا كل شيء. 176 00:10:14,380 --> 00:10:16,792 اسمي روب، وهذا كان [غير مسموع]. 177 00:10:16,792 --> 00:10:21,888