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