1 00:00:00,000 --> 00:00:00,530 2 00:00:00,530 --> 00:00:03,070 >> SPEAKER 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 >> OK، در حال حاضر، به یاد داشته باشید که چگونه یک درخت در واقع کار می کند. 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 و ما قصد داریم تا در شاخص صفر نگاه متناظر با در گربه. 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 به طور کامل zeroed از. 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 >> OK، چه خوب، این چیز دیگری است؟ 100 00:05:40,140 --> 00:05:44,600 این وضعیت که در آن c است بک اسلش نفر، که در آن c یک خط جدید است. 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 >> ما می خواهیم به مجموعه ای است که تا درست، به طوری که نشان می دهد که این گره را نشان می دهد 105 00:06:00,570 --> 00:06:03,320 کلمه موفقیت آمیز یک کلمه واقعی. 106 00:06:03,320 --> 00:06:05,050 در حال حاضر، مجموعه ای است که به درست است. 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 فرهنگ لغت، تا زمانی که ما در نهایت C برسد برابر با 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 از کار را برای ما، به طوری عملکرد ما است که به آن می شود Unloader. 164 00:09:33,390 --> 00:09:35,830 چه شده است Unloader کاری انجام دهید؟ 165 00:09:35,830 --> 00:09:40,640 ما در اینجا می بینیم که Unloader در حال رفتن به تکرار بیش از همه کودکان در 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