דוד מאַלאַן: כל רעכט. ברוכים הבאים צוריק צו קס50. דאס איז די אָנהייב פון וואָך 8. און צוריקרופן אַז פּראָבלעם שטעלן 5 געענדיקט מיט אַ קליין ביסל פון אַ אַרויסרופן. אזוי אַסומינג איר ריקאַווערד אַלע פון ​​דיין לערנען פעללאָווס און CA ס פאָוטאַגראַפס אין די קאַרד.ראַוו טעקע, איר זענט פּאַסיק צו איצט געפינען אַלע פון ​​די מענטשן, און איינער מאַזלדיק געווינער וועט גיין היים מיט איין פון די זאכן, די שפּרינגען באַוועגונג מיטל אַז איר קענען נוצן פֿאַר לעצט פראיעקטן, פֿאַר בייַשפּיל. דאס, יעדער יאָר, פירט צו אַ ביסל פון קריפּיניס. און אַזוי וואָס איך טראַכט איך 'ד טאָן איז שער מיט איר עטלעכע פון ​​די הערות וואָס האָבן ניטאָ צוריק און אַרויס איבער דער שטעקן רשימה פון שפּעט. פֿאַר בייַשפּיל, נאָר לעצטע נאַכט, ציטירן אַנקוואָוט, פון איינער פון די שטעקן מיטגלידער, "איך נאָר געהאט אַ תּלמיד קלאַפּן אויף מיין טיר צו נעמען אַ פאָטאָ מיט מיר. סטאַלקערס, איך זאָגן איר. "סטאַרטעד אַוועק פערלי דיסקריפּטיוו און דעמאָלט מיר אריבערגעפארן אויף צו, אַ שעה אָדער אַזוי שפּעטער, "איך געהאט אַ תּלמיד ווארטן פֿאַר מיר נאָך אָפּטיילונג און ער האט אַלע פון ​​אונדזער נעמען און פאָטאָס אויף עטלעכע שיץ פון פּאַפּיר. "אַלע רעכט. אזוי אָרגאַניזירט, אָבער ניט אַלע וואָס קריפּי נאָך. דעמאָלט, "איך איז אויס פון שטאָט דעם אָפּרוטעג, און ווען איך גאַט צוריק, דאָרט איז געווען איינער אין מייַן שלאָפצימער. "[געלעכטער] דוד מאַלאַן: ווייַטער ציטירן פון אַ שטעקן מיטגליד, "אַ תּלמיד געקומען צו מיין הויז אין סאַמערוויל בייַ 04:00 דעם מאָרגן. "ווייַטער שטעקן, "איך גאַט צו מיין האָטעל אין סאַן פֿראַנסיסקאָ און אַ תּלמיד איז געווען ווארטן פֿאַר מיר אין די פויע מיט דרייַ דסלרס. " טיפּ פון אַפּאַראַט. "איך בין נישט אַפֿילו אויף שטעקן דעם זמאַן, אָבער אַ תּלמיד רייסט אין מיין הויז דעם מאָרגן און רעקאָרדעד די גאנצע זאַך מיט גוגל גלאַס. "און דעריבער לאַסטלי, "לפּחות 12 מענטשן זענען יגערלי אַווייטינג פֿאַר מיר ווען איך גאַט אויס פון מיין לימאָ, און דעמאָלט איך וואָוק אַרויף. "אַלע רעכט. אזוי צווישן די פאָוטאַגראַפס, ווי איר זאלט צוריקרופן, זענען דעם יונגערמאַן דאָ, וואס איר זאל וויסן ווי מילאָ באַנאַנע, וואס לעבן מיט לאָראַן קאַרוואַלהאָ, אונדזער קאָפּ לערנען פעלאָו. מילאָ, מילאָ, קומען דאָ יינגל. מילאָ. מילאָ. מיינונג איר, ער ס ווערינג גוגל גלאַס, אַזוי מיר וועט ווייַזן איר אַלע פון ​​דעם נאָך. אזוי דעם איז מילאָ אויב איר וואָלט ווי צו נעמען אַ פאָטאָגראַפיע מיט אים דערנאך. אויב איר 'ד ווי צו קוקן אויס בייַ די וילעם דאָרט. גוט. אַז ס 'גוט פוטידזש. נו, מילאָ באַנאַנאַ. אָה, טאָן ניט טאָן אַז. [געלעכטער] גוט. אזוי אַ וואָרט דעמאָלט אויף וואָס ליגט פאָרויס, ווייַל ווי מיר נעמען צו יבערגאַנג, דעם וואָך ספּאַסיפיקלי, פון C אין אַ באַפֿעל שורה סוויווע צו פפּ און דזשאַוואַסקריפּט און סקל און HTML און קסס אין אַ וועב-באזירט סוויווע, מיר וועט זייַן יקוויפּינג איר מיט אַלע די מער וויסן פֿאַר פּאָטענציעל לעצט פראיעקטן. צו אַז סוף, די לויף האט אַ מסורה פון האלטן סעמינאַרס וואָס ביסט אויף טאַנדזשענטשאַל סוגיות צו די קורס. זייער פיל שייַכות צו פּראָגראַממינג און צו אַפּ אַנטוויקלונג און אַזוי אַרויס, אָבער ניט דאַווקע יקספּלאָרד דורך די קורס ס אייגן סילאַבאַס. אזוי אויב איר זאל זייַן אינטערעסירט אין איין אָדער מער פון דעם יאָר ס סעמינאַרס, רעגיסטרירן בייַ cs50.net/seminar. עס זענען עלטער סעמינאַרס בייַ cs50.net/seminars. און אויף די ראַסטער אַזוי ווייַט פֿאַר דעם יאָר ביסט אַמייזינג וועב אַפּפּס מיט רובי אויף ריילז, וואָס איז אַן אנדער ברירה שפּראַך צו פפּ. קאָמפּוטאַטיאָנאַל לינגוויסטיק. הקדמה צו יאָס, וואָס איז די פּלאַטפאָרמע אַז ס 'געניצט פֿאַר יפאָנע און יפּאַד אַנטוויקלונג. דזשאַוואַסקריפּט פֿאַר וועב אַפּפּס, מיר וועט דעקן וואָס, אָבער אין דעם סעמינאַר, איר וועט גיין אין מער דעטאַל. שפּרינגען מאָטיאָן, אַזוי מיר וועט פאקטיש האָבן עטלעכע פון אונדזער פריינט פון ליפּ מאָטיאָן, די פירמע זיך, באַהעפטן אונדז. מאָרגן, אין פאַקט, צו צושטעלן אַ הענט-אויף סעמינאַר, אויב פון אינטערעס צו איר. מעטעאָר.דזשס, אַן אנדער ברירה טעכניק פֿאַר ניצן דזשאַוואַסקריפּט נישט אין אַ בלעטערער, אָבער אויף אַ סערווער. נאָדע.דזשס, וואָס איז זייער פיל אין אַז אָדער ווי געזונט. גליטשיק אַנדרויד פּלאַן. אַנדרויד זייַענדיק אַ זייער פאָלקס אנדער ברירה צו יאָס און פֿענצטער פאָון און אנדערע רירעוודיק פּלאַטפאָרמס. און וועב זיכערהייַט אַקטיוו דיפענס. אזוי אין פאַקט, אויב איר וואָלט ווי צו דינגען אין דעם, לאָזן מיר מאַכן טאָן פון דעם. מיר ניטאָ זייער צופרידן צו זאָגן אַז אונדזער פריינט אין ליפּ באַוועגונג, וואָס איז אַ סטאַרטאַפּ - דעם מיטל טאַקע נאָר געקומען אויס אַ ביסל חדשים צוריק - האט גריישאַסלי דאָונייטיד 30 אַזאַ דיווייסאַז צו די סאָרט פֿאַר ווי פילע סטודענטן, אויב איר 'ד ווי צו באָרגן די ייַזנוואַרג צו זמאַן ס סוף און נוצן עס פֿאַר אַ פאַקטיש לעצט פּרויעקט. זיי שטיצן אַ נומער פון שפּראַכן. קיינער פון זיי C, קיינער פון זיי פפּ, אַזוי פאַרשטיין איינער אָדער מער פון די סעמינאַרס זאל באַווייַזן פון אינטערעס. און אַלע פון ​​זיי וועלן זייַן פילמד אין די געשעעניש אַז איר זענט נישט קענען צו באַדינער אין מענטש. דער פּלאַן זייַן מודיע דורך Email ווי מיר סאַלידאַפיי רומז. און לאַסטלי, אויב איר גיין צו projects.cs.50.net, דאָס איז אַ וועבזייַטל מיר טייַנען יעדער יאָר אַז מיר פאַרבעטן פאָלקס פון די קהל, פיייקייַט, דיפּאַרטמאַנץ, שטעקן, און ביידע אין אַן אַרויס פון קס50 צו פאָרשלאָגן פּרויעקט געדאנקען. זאכן פון אינטערעס צו תּלמיד גרופּעס. זאכן פון אינטערעס צו דיפּאַרטמאַנץ. אזוי טאָן דרייַ דאָרט אויב איר ניטאָ סטראַגאַלינג מיט אַנסערטאַנטי ווי צו וואָס איר זיך וואָלט ווי צו מאַכנ. אזוי לעצטע מאָל מיר באַקענענ אַ אַרגיואַבלי מער קאָמפּליצירט דאַטן סטרוקטור ווי מיר ד געזען אין וואָכן פאַרגאַנגענהייַט. מיר 'ד שוין ניצן ערייז שיין גליק ווי אַ נוצלעך אויב סימפּליסטיק דאַטן סטרוקטור. דעמאָלט מיר באַקענענ די, וואָס פון קורס זענען לינגקט רשימות. און וואָס איז געווען איינער פון די מאָוטאַוויישאַנז פֿאַר ינטראָודוסינג דעם דאַטן סטרוקטור? יאָ? וואָס ס וואָס? וילעם: דינאַמיק גרייס. דוד מאַלאַן: דינאַמיק גרייס. אזוי כוועראַז אין מענגע, איר האָבן צו וויסן זייַן גרייס אין שטייַגן ווען איר אַלאַקייט עס. אין לינגקט רשימה, איר טאָן ניט האָבן צו וויסן אַז. איר קענען נאָר מאַללאָק, אָדער מער בכלל, אַלאַקייט אַן נאָך נאָדע, אַזוי צו רעדן, קיין צייַט איר ווילן צו טאָן מער דאַטן. און נאָדע האט קיין פּרידיטערמינד טייַטש. עס ס נאָר אַ דזשאַנעריק טערמין דיסקרייבינג עטלעכע מין פון קאַנטיינער אַז מיר רע ניצן אין אונדזער דאַטן סטרוקטור צו קראָם עטלעכע נומער פון אינטערעס, וואָס אין דעם פאַל פּאַסירן צו זייַן ינטאַדזשערז. אבער דאָרט ס שטענדיק אַ טריידאָף. אזוי מיר באַקומען דינאַמיש סיזעס פון די דאַטן סטרוקטור, אָבער וואָס פּרייַז טאָן מיר באַצאָלן? וואָס ס די דאַונסייד פון לינגקט רשימות? יאָ? וילעם: רעקווירעס מער זכּרון. דוד מאַלאַן: עס ריקווייערז מער זכּרון, ווי פּונקט? וילעם: [ינאָדאַבאַל]. דוד מאַלאַן: עקסאַקטלי. אזוי איצט מיר האָבן פּאָינטערס גענומען אַרויף נאָך זכּרון אַז מיר ביז אַהער האט נישט דאַרפֿן, ווייַל די מייַלע פון אַ מענגע, פון קורס, איז אַז אַלץ ס קאַנטיגיואַס, צוריק צו צוריק צו צוריק, וואָס גיט איר טראַפ - צוטריט. ווייַל נאָר דורך ניצן קוואַדראַט קלאַמער נאָוטיישאַן, אָדער מער טעקניקלי טייַטל אַריטמעטיק, זייער פּשוט דערצו, קענען איר צוטריט קיין עלעמענטן אין קעסיידערדיק צייַט. און אין פאַקט, אַז ס מין פון כינטינג בייַ אן אנדער פּרייַז וואָס מיר ניטאָ פּייינג מיט אַ לינגקט רשימה. וואָס כאַפּאַנז צו די פליסנדיק צייַט פון עפּעס ווי זוכן, אויב איך ווילן צו געפינען עטלעכע ווערט און ין פון אַ לינגקט רשימה? וואָס טוט מיין פליסנדיק צייַט ווערן? גרויס אָ פון ען. אויב עס ס אויסגעשטעלט צו? וואָס אויב די דאַטן סטרוקטור ס אויסגעשטעלט? קענען איך טאָן בעסער ווי גרויס אָ פון N פֿאַר שאַרף? ניין, ווייַל אין די ערגסטע פאַל עס זאל זייער געזונט זייַן אויסגעשטעלט, אָבער דעם נומער איר ניטאָ קוקן פֿאַר זאל זייַן גרויס. עס זאל זייַן די נומער 100, וואָס זאל פּאַסירן צו זייַן אַלע דער וועג אין די סוף. און ווייַל איר קענען נאָר צוטריט אַ לינגקט רשימה אין דעם ימפּלאַמענטיישאַן דורך וועג פון זייַן ערשטער נאָדע, איר רע נאָך מין פון אויס פון גליק. איר האָבן צו דורך די גאנצע זאַך פון ערשטער צו לעצט אין סדר צו געפינען אַז גרויס ווערט ווי 100. אָדער צו באַשליסן אויב עס ס ניט אַפֿילו דאָרט. אזוי מיר קענען נישט טאָן וואָס אַלגערידאַם אין אַ דאַטן סטרוקטור וואָס קוקט ווי דעם? מיר קענען נישט טאָן ביינערי זוכן, ווייַל ביינערי זוכן פארלאנגט אַז מיר האט טראַפ - צוטריט. מיר קען נאָר שפּרינגען פון אָרט צו אָרט אָן ווייל צו נאָכפאָלגן די ברויט ברעקלעך אין די פאָרעם פון אַלע די פּאָינטערס. איצט, ווי האט מיר ינסטרומענט דעם? נו, אויב מיר גיין צו די פאַרשטעלן דאָ, אויב מיר קענען געשווינד רעימפּלעמענט דעם דאַטן סטרוקטור - מיין קסאַוו ס ניט אַלע וואָס גרויס דאָ, אָבער מיר וועט פּרובירן. אזוי טיפּעדעף סטרוקט, און וואָס האט איך ווילן צו רופן דעם זאַך אַרויף דאָ? נאָדע. אזוי איך וועט באַקומען אונדז אנגעהויבן. און איצט, וואָס דאַרף צו זייַן ין פון די דאַטן סטרוקטור פֿאַר אַז יינציקווייַז לינגקט רשימה? ווי פילע פעלדער? אזוי צוויי. איינער איז שיין גרינג. אזוי ינט ען. און מיר קען רופן N עפּעס מיר ווילן, אָבער עס זאָל זייַן אַ ינט אויב מיר רע ימפּלאַמענטינג אַ לינגקט רשימה פֿאַר ינץ. און איצט וואָס טוט דער רגע פעלד האָבן צו זייַן? סטרוקט נאָדע *. אזוי אויב איך טאָן סטרוקט נאָדע *, און דעמאָלט איך קענען רופן דעם אויך וועלכער איך וועלן, אָבער נאָר צו זייַן קלאָר איך וועט רופן עס ווייַטער, ווי מיר ווע שוין טאן. און דעמאָלט איך וועט נאָענט מיין געגרייַזלט ברייסאַז. און איצט, ווי לעצטע מאָל, איך שטעלן נאָדע אַראָפּ דאָ. אבער אויב איך בין דיקלערינג דעם איז ווי אַ נאָדע, וואָס האט איך אַרן זייַענדיק אַזוי ווערבאָסע דאָ אין דיקלערינג סטרוקט נאָדע * ווייַטער, ווי קעגן צו נאָר נאָדע * ווייַטער? יאָ? וילעם: [ינאָדאַבאַל]. דוד מאַלאַן: עקסאַקטלי. פּונקט. ווייַל C טאַקע נעמט איר ממש און נאָר זעט די דעפֿיניציע פון ​​נאָדע וועג אַראָפּ דאָ, איר קענען ניט אָפּשיקן צו עס אַרויף דאָ. אזוי מיר האָבן דעם סאָרט פון פּריעמפּטיוו דעקלאַראַציע דאָ, וואָס איז אַדמיטידלי מער ווערבאָסע. סטרוקט נאָדע, אַז מיטל מיר קענען איצט צוטריט עס ין פון די דאַטן סטרוקטור. און ווי אַ באַזונדער, ווייַל דאָס איז שיין אַ ביסל מער סאַבדזשעקטיוו איצט, דער שטערן קענען טעקניקלי גיין דאָ, עס קענען גיין דאָ, עס קענען אַפֿילו גיין אין דער מיטן. מיר ווע אנגענומען, אין די נוסח פירן פֿאַר די קורס, דער קאַנווענשאַן פון פּאַטינג דער שטערן רעכט ווייַטער צו די דאַטן טיפּ, וואָס אין דעם פאַל, וואָלט זייַן סטרוקט נאָדע. אבער פאַרשטיין אין אַ פּלאַץ פון לערנביכער און אָנליין באַווייַזן, איר זאל טאַקע זען עס אויף די אנדערע זייַט. אבער נאָר פאַרשטיין אַז ביידע וועט פאקטיש אַרבעט און איר זאָל פשוט זייַן קאָנסיסטענט. כל רעכט. אזוי אַז איז געווען אונדזער דעקלאַראַציע פון סטרוקט נאָדע. אבער דעמאָלט מיר אנגעהויבן טאן מער סאַפיסטאַקייטיד זאכן. פֿאַר בייַשפּיל, מיר באַשלאָסן צו באַקענען עפּעס ווי אַ האַש טיש. אזוי דאָ איז אַ האַש טיש פון גרייס N, ינדעקסט פון 0 אויף די שפּיץ לינקס צו N מינוס 1 אויף די דנאָ לינקס. דאס קען זייַן אַ האַש טיש פֿאַר עפּעס. אבער וואָס מינים פון דאס האט מיר רעדן וועגן ניצן אַ האַש טיש פֿאַר? סטאָרינג וואָס? נעמען. מיר געקענט טאָן נעמען ווי מיר האט לעצטע מאָל. און טאַקע, איר קענען קראָם עפּעס. און מיר וועט זען דעם ווידער אין פפּ און אין דזשאַוואַסקריפּט. א האַש טיש איז אַ פייַן סאָרט פון שווייצער אַרמיי מעסער אַז אַלאַוז איר צו קראָם שיין פיל וועלכער איר ווילן ין פון עס דורך אַסאָוסיייטינג שליסלען מיט וואַלועס. שליסלען מיט וואַלועס. איצט אין דעם פּשוט פאַל, אונדזער שליסלען זענען נאָר נומערן. מיר ניטאָ ימפּלאַמענטינג אַ האַש טיש ווי אַ מענגע. און אַזוי די שליסלען ביסט 0, 1, 2, און אַזוי אַרויס. און אַזוי מיר, ווי יומאַנז, באַשלאָסן לעצט וואָך אַז איר וויסן וואָס, אויב מיר רע געגאנגען צו קראָם נעמען, לאָזן 'ס נאָר אַרביטרעראַלי, אָבער שיין ריזאַנאַבלי, יבערנעמען אַז אַליס, אַן א נאָמען, וועט נאָר זייַן ינדעקסט אין 0. און באָב, אַ ב נאָמען, וועט זייַן ינדעקסט אין 1, און אַזוי אַרויס. אזוי מיר האבן אַ מאַפּינג צווישן ינפּוץ, וואָס זענען סטרינגס, און די האַש לאָוקיישאַנז, וואָס זענען נומערן. אזוי אַז פּראָצעס איז בכלל באקאנט ווי אַ האַש פונקציאָנירן, און איר קענען באמת ינסטרומענט עס אין קאָד. אויב איך געוואלט צו ינסטרומענט אַ האַש פֿונקציע וואָס טוט פּונקט וואָס מיר נאָר דיסקרייבד פון לעצטע צייַט, איך זאל דערקלערן אַ פֿונקציע וואָס נעמט, ווי אַרייַנשרייַב פֿאַר בייַשפּיל - און לאָזן 'ס טאָן דעם אויף דעם פאַרשטעלן איבער דאָ. אויב איך געוואלט צו ינסטרומענט אַ האַש פונקציאָנירן, איך זאל זאָגן עפּעס ווי דעם. עס ס געגאנגען צו צוריקקומען אַן ינט. עס ס געגאנגען צו זייַן גערופן האַש, און עס ס געגאנגען צו אָננעמען ווי אַ אַרגומענט אַ שטריקל, אָדער מיר קענען זייַן מער געהעריק איצט, און זאָגן טשאַר *, מיר וועט רופן עס ס. און דעריבער אַלע דעם פֿונקציע האט צו טאָן, לעסאָף, איז צוריקקומען אַן ינט. איצט, ווי עס טוט וואָס זאל נישט זייַן אַזוי קלאָר. איך בין געגאנגען צו ינסטרומענט דעם אָן קיין פאָרעם פון טעות קאָנטראָלירונג רעכט איצט. איך בין נאָר געגאנגען צו בליינדלי זאָגן, קריק וועלכער איז אין ס קלאַמער 0, מינוס, לאָזן 'ס זאָגן, קאפיטאל א פּינטל - קאָמע. טאָוטאַלי צעבראכן. עס ס נישט גאנץ ווייַל איינער, וואָס אויב ס איז נאַל? שלעכט זאכן זענען געגאנגען צו פּאַסירן. צוויי, וואָס אויב דער ערשטער בריוו אין דעם נאָמען איז ניט אַ הויפּט - שטאָט בריוו? אַז ס 'נישט געגאנגען צו דרייַ אויס געזונט אָדער. עס זאל זייַן אַ לאָווערקאַסע בריוו אָדער נישט אַ בריוו אין אַלע. אזוי טאָוטאַלי צימער פֿאַר פֿאַרבעסערונג דאָ, אָבער דאָס איז דער גרונט געדאַנק. וואָס מיר דיסקרייבד לעצטע וואָך ווערבאַלי ווי נאָר אַ פּראָצעס פון מאַפּינג אַליס צו 0 און באָב צו 1 קענען זייַן אויסגעדריקט אַוואַדע מער פאָרמולאַיקאַללי ווי אַ C פונקציאָנירן דאָ. גערופן ווידער האַש, נעמט אַ שטריקל ווי אַרייַנשרייַב, און דעמאָלט עפעס טוט עפּעס מיט וואָס אַרייַנשרייַב צו פּראָדוצירן אַ רעזולטאַט. ניט ניט ענלעך אונדזער שוואַרץ קעסטל באַשרייַבונג אַז מיר ווע לאַנג געטאן. איך טאָן ניט וויסן ווי דאָס זאל זייַן ארבעטן ונטער דער קאַפּטער. פֿאַר פּראָבלעם שטעלן 6, איינער פון די טשאַלאַנדזשיז איז פֿאַר איר צו באַשליסן וואָס וועט דיין האַש פונקציאָנירן זייַן? וואָס ס 'געגאנגען צו זייַן ין פון וואָס שוואַרץ קעסטל, און מאַשמאָעס, עס וועט זייַן אַ ביסל מער טשיקאַווע ווי דעם, און באשטימט מער פּראָנע צו טעות קאָנטראָלירונג ווי דעם באַזונדער ימפּלאַמענטיישאַן. אבער פּראָבלעמס קענען אויפשטיין, רעכט? אויב מיר האָבן אַ דאַטן סטרוקטור אַזאַ ווי דעם איינער, וואָס ס איינער פון די פּראָבלעמס איר קענען לויפן אין איבער צייַט ווי איר טאָן מער און מער נעמען אין די האַש טיש? איר באַקומען קאַליזשאַנז, רעכט? וואָס אויב איר האָט אַליס און אהרן, צוויי מענטשן וועמענס נעמען געטראפן צו אָנהייבן מיט א? אַז בעגס די קשיא, ווו איר שטעלן די רגע אַזאַ א נאָמען? נו, איר זאל נאיוו נאָר לייגן עס ווו באָב געהערט, אָבער דעמאָלט באָב איז מין פון סקרוד אויב איר פּרובירן צו טאָן זייַן נאָמען ווייַטער און דאָרט ס קיין פּלאַץ פֿאַר אים. אזוי איר זאל שטעלן באָב ווו טשאַרלי איז, און איר קענען ימאַדזשאַן דעם זייער געשווינד דעוואָלווינג אין אַ ביסל פון אַ באַלאַגאַן. עפּעס לינעאַר אין די סוף, ווו איר נאָר האָבן צו זוכן די גאנצע זאַך קוקן פֿאַר אַליס אָדער באָב אָדער אהרן אָדער טשאַרלי. אזוי אַנשטאָט מיר פארגעלייגט, אַנשטאָט פון נאָר ליניערלי פּראָובינג פֿאַר עפענען ספּייסיז און פּלאָפּפּינג די נעמען דאָרט, מיר פארגעלייגט אַ פאַנסיער צוגאַנג. א האַש טיש ימפּלאַמענאַד נאָך מיט אַ מענגע פון ​​ינדיסעס, אָבער די דאַטן טיפּ פון יענע ינדיסעס איצט האבן פּאָינטערס. פּאָינטערס צו וואָס? פּאָינטערס צו לינגקט רשימות. ווייַל צוריקרופן אַז אַ לינגקט רשימה איז טאַקע נאָר אַ טייַטל צו אַ נאָדע, און די נאָדע האט אַ ווייַטער פעלד, און אַז נאָדע האט אַ ווייַטער פעלד, און אַזוי אַרויס. אזוי איר קענען איצט טראַכטן פון דעם מענגע אויף די לינקס-האַנט זייַט פון אַ האַש טיש ווי לידינג צו אַ לינגקט רשימה. די מייַלע פון ​​וואָס איז אויב איר באַקומען אַ צונויפשטויס צווישן אַליס און אהרן, וואָס טאָן דו טאָן מיט די רגע אַזאַ מענטש? איר נאָר צוטשעפּען אים אָדער איר צו די סוף, אָדער אַפֿילו די אָנהייב פון וואָס לינגקט רשימה. און פאקטיש, לאָזן 'ס נאָר נאָאָדלע דורך וואָס פֿאַר בלויז אַ רגע. וואו וואָלט מאַכן די מערסט זינען? אויב איך טאָן אַליס און זי ענדס אַרויף אין דער ערשטער אָרט, דעמאָלט איך פּרובירן צו אַרייַנלייגן אהרן 'ס נאָמען, און דאָרט ס דאָך אַ צונויפשטויס, זאָל איך שטעלן אים אין די אָנהייב פון די לינגקט רשימה? אַז ס בייַ אַז ערשטער אָרט, אָדער בייַ די סוף? וילעם: [ינאָדאַבאַל]. דוד מאַלאַן: גוט. איך געהערט אָנהייב. פארוואס אין די אָנהייב? וילעם: [ינאָדאַבאַל]. דוד מאַלאַן: גוט. עס ס אַלפאַבעטיקאַל, אַזוי אַז ס פייַן. אַז ס אַ גוט פאַרמאָג. עס וועט ראַטעווען מיר עטלעכע מאָל פּאַטענטשאַלי. עס וועט ניט לאָזן מיר טאָן ביינערי זוכן, אָבער איך זאל לפּחות קענען צו ברעכן אויס פון אַ שלייף אויב איך פאַרשטיין, געזונט, איך בין וועג פאַרגאַנגענהייַט זענען אהרן וואָלט זייַן אין דעם אויסגעשטעלט לינגקט רשימה. איך טאָן ניט האָבן צו וויסט מיין צייַט קוקן אַלע די וועג צו די סוף. אזוי אַז ס גלייַך. פארוואס אַנדערש זאל איר ווילן צו טאָן די קאַליידינג נאָמען בייַ די אָנהייב פון דער ליסטע? וואָס ס וואָס? וילעם: [ינאָדאַבאַל]. דוד מאַלאַן: עס קען נעמען אַ לאַנג צייַט צו באַקומען צו דעם סוף פון דער רשימה. און אין פאַקט, מער און מער. די מער נעמען איר אַרייַנלייגן אַז אָנהייבן מיט א, די מער אַז קייט איז געגאנגען צו באַקומען. די מער וואָס לינגקט רשימה איז געגאנגען צו באַקומען. אזוי איר ניטאָ טאַקע נאָר ווייסטינג דיין צייַט. אפֿשר איר ניטאָ בעסער אַוועק מיינטיינינג קעסיידערדיק ינסערשאַן צייַט, גרויס אָ פון 1, דורך שטענדיק פּאַטינג די קאַליידינג נאָמען בייַ דער אָנהייב פון די לינגקט רשימה, און ניט וועריינג ווי פיל וועגן סאָרטינג. וואָס ס דער בעסטער ענטפער? עס ס ומקלאָר. עס מין פון דעפּענדס אויף וואָס די פאַרשפּרייטונג איז, וואָס דער מוסטער איז פון די נעמען איר זענט ינסערטינג. עס ס נישט דאַווקע אַ קלאָר ווי דער טאָג ענטפֿערן. אבער דאָ צו, ווידער, איז אַ פּלאַן געלעגנהייט. אזוי מיר דעמאָלט געקוקט אין דעם זאַך, וואָס איז טאַקע די אנדערע גרויס געלעגנהייט פֿאַר פּ-שטעלן 6. און פאַרשטיין, אויב איר האָבן נישט שוין, זאַמילאַ דייווז אין ביידע פון ​​די, האַש טישן און פרוווט, אין מער דעטאַל. און די ווידעא וואַלקטהראָוגה איז עמבעדיד אין פּ-שטעלן ספּעק. דאס איז געווען אַ טריי - ה-ר-איך-E. און וואָס איז טשיקאַווע וועגן דאָס איז געווען אַז די פליסנדיק צייַט פון שאַרף פֿאַר אַ נאָמען, ווי מאַקסוועל לעצטע צייַט, איז געווען גרויס אָ פון וואָס? וואָס ס וואָס? וילעם: די נומער פון אותיות. דוד מאַלאַן: נומער פון אותיות. איך געהערט צוויי זאכן. נומער פון אותיות און קעסיידערדיק צייַט. אזוי לאָזן ס גיין מיט וואָס ערשטער. די נומער פון אותיות. נו, דאָס דאַטן סטרוקטור, צוריקרופן, איז ווי אַ בוים, אַ משפּחה בוים, יעדער פון וועמענס נאָודז זענען געמאכט אַרויף פון ערייז. און יענע ערייז זענען פּאָינטערס צו אנדערע אַזאַ נאָודז, אָדער אנדערע אַזאַ ערייז אין דער בוים. אזוי אויב מיר געוואלט צו דעמאָלט באַשליסן צי מאַקסוועל איז אין דאָ, איך זאל גיין צו די ערשטער מענגע, בייַ די זייער שפּיץ פון דער בוים, די אַזוי גערופענע וואָרצל, שפּיץ פון די טריי, און דעמאָלט נאָכגיין די עם טייַטל, דעמאָלט דער אַ טייַטל, דעמאָלט X, וו, E, ך, ך. און דעריבער ווען איך זען עטלעכע ספּעציעל סימבאָל, דינאָוטאַד דאָ ווי אַ דרייַעק. אין קאָד איר וועט זען מיר פאָרשלאָגן וואָס איר ימפּלאַמענאַד ווי אַ באָאָל, נאָר געזאגט יאָ אָדער ניט, אַ וואָרט סטאַפּס דאָ. נו, אַמאָל מיר ווע ניטאָ צו ב-א רענטגענ-וו-E-ל-ל, פילז ווי זיבן, אפֿשר אַכט אויב מיר גיין איין פאַרגאַנגענהייַט עס, אַכט טריט צו געפינען מאַקסוועל. אָדער לאָזן ס רופן עס קיי אבער צוריקרופן לעצט צייַט, איך אַרגיוד אַז אויב עס ס ריאַליסטיקלי אַ מאַקסימום לענג אויף אַ וואָרט, ווי 40-עטלעכע-מאָדנע אותיות, אַ מאַקסימום לענג ימפּלייז אַ קעסיידערדיק ווערט. אזוי טאַקע, יאָ, עס ס טעקניקלי גרויס אָ פון 8 אָדער 7, אָדער טאַקע גרויס אָ פון קיי אבער אויב דאָרט ס אַ ענדלעך היטל אויף וואָס ק קען זייַן, עס ס אַ קעסיידערדיק. און אַזוי עס ס גרויס אָ פון 1 בייַ דער סוף פון דעם טאָג. ניט אין דער עמעס וועלט. נישט ווען איר פאקטיש אָנהייב וואַטשינג דיין זייגער ווי דיין פּראָגראַם 'ס פליסנדיק. עס ס לעגאַמרע געגאנגען צו זייַן אַ ביסל סלאָוער ווי באמת קעסיידערדיק צייַט מיט איין שריט. עס ס געגאנגען צו זייַן זיבן אָדער אַכט טריט, אָבער נאָך וואָס ס פיל, פיל בעסער ווי אַ אַלגערידאַם ווי גרויס אָ פון ען אַז דעפּענדס אויף די גרייס פון וואָס ס אין די דאַטן סטרוקטור. באַמערקן די מיטנ קאָפּ דאָ איז מיר קענען טאָן אַ מיליאָן מער נעמען אין דעם דאַטן סטרוקטור, אָבער ווי פילע מער טריט איז עס געגאנגען צו נעמען אונדז צו געפינען מאַקסוועל אין אַז פאַל? קיינער. ער ס אַנאַפעקטיד. און צו דאַטע, איך טאָן ניט טראַכטן מיר ווע געזען אַ בייַשפּיל פון אַ דאַטן סטרוקטור אָדער אַן אַלגערידאַם וואָס איז געווען גאָר אַנאַפעקטיד דורך פונדרויסנדיק ביכייוויערז ווי אַז. אבער דאָס קענען ניט זייַן אַמייזינג. דאס קענען נישט זייַן די בלויז לייזונג פֿאַר דער פּ-שטעלן און עס ס נישט. דאס איז נישט דאַווקע די דאַטן סטרוקטור איר זאָל גראַוויטייט צו, ווייַל ווי האַש טישן, טריידאָף. וואָס ס די פּרייַז איר באַצאָלן דאָ? זכּרון. איך מיינען, דאָס איז אַ כייַיש סומע פון ​​זכּרון. און איר קענען נישט גאַנץ זען עס דאָ ווייַל דער מחבר פון דעם בילד דאָך טראַנגקייטיד אַלע פון ​​די ערייז, און מיר ניטאָ ניט געזען גורל פון א ס און ב ס און C ס און ק 'ס און י ס און ז ס אין די ערייז. אבער זיי ניטאָ דאָרט. יעדער פון די נאָודז איז אַ גאַנץ מענגע פון עטלעכע 26 אָדער מער ביטעס, יעדער פון וואָס רעפּראַזענץ אַ בריוו. 27 אין אונדזער פאַל, אַזוי אַז מיר קענען שטיצן אַפּאָסטראָפעס אין די פּראָבלעם שטעלן. אזוי דעם דאַטן סטרוקטור איז טאַקע, טאַקע טעמפּ און ברייט. און אַז אַליין זאל סוף אַרויף סלאָוינג דאס אַראָפּ, אָדער לפּחות קאָסטינג איר אַ פּלאַץ מער פּלאַץ. אבער ווידער, מיר קענען ציען קאַמפּעראַסאַנז דאָ. צוריקרופן אַ בשעת צוריק, מיר אַטשיווד פיל מער יקסייטינג פליסנדיק צייַט אין סאָרטינג ווען מיר נוצן צונויפגיסן סאָרט, אָבער די פּרייַז מיר באַצאָלט צו דערגרייכן N קלאָץ N פֿאַר צונויפגיסן סאָרט פארלאנגט אַז מיר פאַרברענגען מער וואָס מיטל? מער פּלאַץ. מיר דארף אַ צווייטיק מענגע צו קאָפּיע מענטשן אין, נאָר ווי מיר האבן דאָ אויף בינע. אזוי ווידער, ניט קלאָר ווינערז, אָבער נאָר סאַבדזשעקטיוו פּלאַן דיסיזשאַנז צו זייַן געמאכט. כל רעכט. אזוי ווי וועגן דעם? ווער עס יז דערקענען וואָס די-האַלל? גוט. אזוי דרייַ פון אונדז טאָן. מאַדער הויז. אזוי דאס איז פֿאַר מאַדער ס דיינינג. איך וועט געוועט אַלע די דיינינג האַללס האָבן סטאַקס פון טרייַס ווי דעם. און דאָס איז פאקטיש פארשטייער פון עפּעס מיר ווע דאָך געזען שוין. מיר גערופן עס ממש אַ אָנלייגן. און די אָנלייגן, אין טערמינען פון דיין קאָמפּיוטער 'ס זכּרון, איז ווו דאַטן גייט בשעת פאַנגקשאַנז זענען זייַענדיק גערופן. פֿאַר בייַשפּיל, וואָס מינים פון דאס גיין אויף דעם אָנלייגן מיט רעספּעקט צו די זיקאָרן אויסלייג מיר ווע דיסקאַסט אין וואָכן פאַרגאַנגענהייַט? וואָס ס וואָס? וילעם: רופט צו פאַנגקשאַנז. דוד מאַלאַן: איך בין נעבעכדיק. וילעם: רופט צו פאַנגקשאַנז. דוד מאַלאַן: רופט צו פאַנגקשאַנז, אָבער ספּאַסיפיקלי, וואָס ס 'ין פון יעדער פון די ראָמען? וואָס מינים פון זאכן? יאָ. אזוי היגע וועריאַבאַלז. עניטיים מיר דארף עטלעכע היגע סטאָרידזש, ווי אַן אַרגומענט, אָדער ינט איך, אָדער ינט טעמפּ, אָדער וועלכער די היגע בייַטעוודיק איז, מיר ווע געווען פּאַטינג אַז אויף דעם אָנלייגן. און מיר רופן עס אַ אָנלייגן ווייַל פון וואָס לייערינג געדאַנק. נאָר מין פון שוועבעלעך אַרויף מיט פאַקט, דער באַגריף דערפון. אבער עס טורנס אויס אַז אַ אָנלייגן קענען אויך זייַן געזען ווי אַ דאַטן סטרוקטור, אַ אנדער ברירה צו אַ מענגע, אַן אנדער ברירה צו אַ לינגקט רשימה. עפּעס קאַנסעפּטשואַלי מער טשיקאַווע וואָס קענען נאָך זייַן ימפּלאַמענאַד ניצן אָדער פון יענע זאכן, אָבער עס ס אַ אַנדערש טיפּ פון דאַטן סטרוקטור סופּפּאָרטינג, טאַקע, בלויז צוויי אַפּעריישאַנז. אבער איר קענען לייגן אויף פאַנסיער פֿעיִקייטן ווי די. אבער די ביסט די באַסיקס - שטופּן און קנאַל. און דער געדאַנק מיט אַ אָנלייגן איז אַז אויב איך האָבן דאָ, מיט אָדער אָן אַננענבערג ווייסט, אַ טאַץ פון ווייַטער טיר מיט די נומער 9 אויף עס. אזוי נאָר אַ ינט. און איך ווילן צו שטופּן דעם אַנטו די דאַטן סטרוקטור, וואָס דערווייַל איז ליידיק. באַטראַכטן דעם די דנאָ פון דעם אָנלייגן. איך וואָלט שטופּן דעם נומער 9 אַנטו די אָנלייגן, און איצט עס ס רעכט דאָרט. אבער די טשיקאַווע זאַך וועגן אַ אָנלייגן איז אַז אויב איך איצט ווילן צו שטופּן עטלעכע אנדערע ווערט, ווי 17, און איך שטופּן דעם אַנטו דעם אָנלייגן, איך בין געגאנגען צו טאָן דער בלויז ינטואַטיוו זאַך, איך בין נאָר געגאנגען צו לייגן עס רעכט ווו מיר יומאַנז וואָלט זייַן גענייגט צו לייגן עס, אויף שפּיץ. אבער וואָס ס טשיקאַווע איצט איז, ווי טאָן איך באַקומען בייַ 9? איר וויסן, איך טאָן ניט אָן עטלעכע מי. אזוי וואָס ס טשיקאַווע וועגן אַ אָנלייגן איז אַז דורך פּלאַן, עס ס אַ ליפאָ דאַטן סטרוקטור. נאַריש וועג פון דיסקרייבינג לעצטע אין, ערשטער אויס. אזוי די לעצטע נומער אין אין דעם צייַט איז 17. אזוי אויב איך ווילן צו קנאַל עפּעס אַוועק פון דעם אָנלייגן, עס קענען נאָר זייַן 17. אזוי דאָרט ס אַ מאַנדאַטאָרי סדר פון אַפּעריישאַנז דאָ, ווו די לעצטע נומער אין האט צו זייַן דער ערשטער איינער אויס. דערפאר די אַקראַנים, ליפאָ. אזוי וואָס זאל דאָס זייַן נוצלעך? ביסט זייער קאַנטעקסץ אין וואָס איר 'ד ווילן אַ דאַטן סטרוקטור ווי דעם? נו, עס ס אַוואַדע געווען נוצלעך ין פון אַ קאָמפּיוטער. אזוי אַפּערייטינג סיסטעמס קלאר נוצן דעם מין פון דאַטן סטרוקטור פֿאַר סטאַקס. מיר וועט אויך זען די זעלבע געדאַנק ווען עס קומט צו וועב בלעטער. אזוי דעם וואָך און ווייַטער וואָך און ווייַטער, און ווי איר אָנהייב ימפּלאַמענטינג וועב בלעטער אין אַ שפּראַך גערופן HTML, איר קענען פאקטיש נוצן אַ דאַטן סטרוקטור ווי דעם צו באַשליסן אויב די בלאַט איז ריכטיק פאָרמאַטטעד. ווייַל מיר וועט זען אַלע וועב בלעטער נאָכפאָלגן אַ סאָרט פון כייעראַרקי, אַ ינדענטיישאַן וואָס וועט, אין די סוף פון די טאָג, זייַן אַ בוים סטרוקטור ונטער דער קאַפּטער. אזוי מער אויף אַז אין נאָר אַ ביסל. אבער פֿאַר איצט, לאָזן 'ס פאָרשלאָגן פֿאַר אַ מאָמענט, ווי קען מיר גיין וועגן רעפּריזענטינג וואָס אַ אָנלייגן איז? זאל מיר פאָרשלאָגן אַז מיר ינסטרומענט אַ אָנלייגן מיט קאָד ווי דעם. אזוי אַ אָנלייגן איז געגאנגען צו האָבן ין פון עס צוויי זאכן, אַ מענגע, גערופן טרייַס, נאָר צו זייַן קאָנסיסטענט מיט דער דעמאָ. און יעדער פון די זאכן אין אַז מענגע איז געגאנגען צו זייַן אַ טיפּ ינט. און קאַפּאַציטעט איז מאַשמאָעס וואָס? ווייַל איך ווע ניט געשריבן די פול דעפֿיניציע דאָ. עס ס מיסטאָמע די מאַקסימום גרייס פון דער מענגע. און עס ס מיסטאָמע דערקלערט ווי אַ שאַרף דעפינירן בייַ דער שפּיץ פון דער טעקע, עטלעכע מין פון קעסיידערדיק ווי ימפּלייד דורך די מיר קאַפּיטאַליזיישאַן. אזוי ערגעץ קאַפּאַציטעט איז דיפיינד ווי די מאַקסימום מעגלעך גרייס. דערווייַל, ין פון די דאַטן סטרוקטור באקאנט ווי אַ אָנלייגן עס וועט זייַן אַ ינטאַדזשער נאָר באַוווסט פשוט ווי גרייס. אזוי אויב איך האבן צו פאָרשטעלן דעם איצט פּיקטאָריאַללי, לאָזן ס רעכן אַז דעם גאַנץ שוואַרץ קעסטל רעפּראַזענץ מיין אָנלייגן. ין פון עס איז צוויי וועריאַבאַלז. אזוי איך בין געגאנגען צו ציען די ערשטער איינער ווי גרייס. און די רגע איין איך בין געגאנגען צו ציען ווי אַ מענגע. אבער נאָר צו האַלטן דאס אָרדערלי, נאָרמאַלי איך וואָלט ציען אַ מענגע ווי דעם, אָבער עס ס מין פון פייַן אויב מיר גלייַכן פאַקט, אָדער גלייַכן די גייַסטיק מאָדעל. אזוי לאָזן מיר אַנשטאָט ציען די מענגע ווערטיקלי, וואָס איז נאָר, ווידער, קינסטלער ס רענדישאַן. טוט ניט טאַקע ענין וואָס עס איז ונטער דער קאַפּטער. און מיר וועט זאָגן אַז, דורך פעליקייַט, קאַפּאַציטעט איז געגאנגען צו זייַן דרייַ. אזוי דעם וועט זייַן אָרט 0, דעם וועט זייַן אָרט 1, דעם וועט זייַן אָרט 2. אויב איך כאַבאַר מיט אַ דרוק פּילקע, וואָלט עמעצער ווי צו קומען אַרויף און לויפן די ברעט דאָ פֿאַר נאָר אַ מאָמענט? גוט, געזען דיין האַנט ערשטער. קומען אויף אַרויף. כל רעכט. אזוי איך גלויבן עס איז סטעווען. קומען אויף אַרויף. כל רעכט. אבער רעכן איצט מיר ריוויינד צו דעם ערשט שטאַט פון די וועלט ווו איך האָבן נאָר דערקלערט אַ אָנלייגן, און עס ס געגאנגען צו זייַן פון קאַפּאַציטעט דרייַ. אבער גרייס האט נישט נאָך שוין באשלאסן. טרייַס האט נישט נאָך שוין באשלאסן. אזוי אַ פּאָר פון שאלות ערשטער. און לאָזן מיר געבן איר מיק אַזוי איר קענען פּאַרטייק מער אַקטיוולי אין דעם. אזוי וואָס איז ין פון גרייס אין דעם מאָמענט אין צייַט אויב אַלע איך האָבן געטאן איז דערקלערט אַ אָנלייגן מיט איין שורה פון קאָד? סטעווען: ניט פיל. דוד מאַלאַן: גוט, נישט פיל. צי מיר וויסן וואָס ס 'ין פון גרייס, טאָן מיר וויסן וואָס ס 'ין פון דעם מענגע דאָ? סטעווען: פונקט טראַפ - קאָד, רעכט? נאָר - דוד מאַלאַן: יאָ, איך בין געגאנגען צו רופן עס קאָד, אָבער טראַפ - סטעווען: זאכן. דוד מאַלאַן: זאכן ווי טראַפ סטעווען: ביץ. דוד מאַלאַן: ביטן, רעכט? אזוי מיסט וואַלועס, רעכט? אזוי פּערמיוטיישאַנז פון 0 'ס און 1 ס. רעשטן פון פֿריִערדיקע יוסידזשיז פון דעם זכּרון. און מיר טאָן ניט טאַקע וויסן וואָס די וואַלועס ביסט, אַזוי מיר טיפּיקלי ציען זיי ווי קשיא מאַרקס. אזוי דער ערשטער זאַך מיר ניטאָ מאַשמאָעס געגאנגען צו ווילן צו טאָן דאָ - און לאָזן מיר געבן דעם פעלד ין פון דאָרט אַ נאָמען - טרייַס. וואָס זאָל מיר מאַשמאָעס ינישאַלייז גרייס צו אויב מיר ווילן צו אָנהייבן ניצן דעם אָנלייגן? סטעווען: טרייַ איז סאַב 3. דוד מאַלאַן: אזוי, גוט. צו זייַן קלאָר, קאַפּאַציטעט איז דערקלערט אנדערש ווי דרייַ. און אַז ס וואָס איך ווע געוויינט צו אַלאַקייט די מענגע. גרייס איז געגאנגען צו אָפּשיקן צו ווי פילע טרייַס זענען דערווייַל אויף די אָנלייגן. סטעווען: זעראָ. דוד מאַלאַן: אזוי עס זאָל זייַן נול. אזוי גיין פאָרויס, און מיט קיין פינגער, ציען אַ נול אין גרייס. כל רעכט. אזוי איצט, וואָס ס 'ין פון דעם דאָ, מיר טאָן ניט וויסן. די ביסט טאַקע נאָר מיסט וואַלועס. אזוי מיר געקענט ציען קשיא מאַרקס, אָבער לאָזן 'ס האַלטן די ברעט ריין פֿאַר איצט ווייַל עס טוט נישט ענין וואָס ס דאָרט. מיר טאָן ניט דאַרפֿן צו ינישאַלייז די מענגע צו עפּעס, ווייַל אויב מיר וויסן אַז די גרייס פון דעם אָנלייגן איז נול, גוט, מיר זאָל ניט זייַן קוקן בייַ עפּעס אין דעם מענגע סייַ ווי סייַ בייַ דעם פונט אין צייַט. אזוי איצט רעכן אַז איך שטופּן די נומער 9 אַנטו דעם אָנלייגן. ווי זאָל מיר דערהייַנטיקן די דאַטן סטרוקטור ין פון דעם שוואַרץ קעסטל? וואָס וואַלועס דאַרפֿן צו טוישן? סטעווען: ין - די גרייס? דוד מאַלאַן: גוט. גרייס זאָל ווערן וואָס? סטעווען: גרייס וואָלט זייַן איינער. דוד מאַלאַן: גוט. אזוי גרייס זאָל ווערן איין. אזוי איר קענען טאָן דעם אין אַ פּאָר וועגן. זאל מיר געבן איר, איצט דיין פינגער איז אַ מעקער. כל רעכט. דעמאָלט איצט דיין פינגער איז אַ באַרשט. כל רעכט. און איצט וואָס אַנדערש האט צו טוישן, דאָך, אין די דאַטן סטרוקטור? סטעווען: מיר ניטאָ געגאנגען פון דנאָ אַרויף צו 9. דוד מאַלאַן: 9. גוט, גוט. אזוי נאָך טוט נישט ענין וואָס ס אין אָרט איינער אָדער צוויי ווייַל זיי ניטאָ מיסט וואַלועס, אָבער מיר זאָל ניט אַרן קוקן דאָרט ווייַל גרייס איז טעלינג אונדז אַז בלויז דער ערשטער עלעמענט איז פאקטיש לאַדזשיטאַמאַט. אזוי איצט איך שטופּן 17 אַנטו די רשימה. וואָס כאַפּאַנז צו דעם בילד? סטעווען: אזוי גרייס איז געגאנגען צו גיין צו צוויי. דוד מאַלאַן: גוט. ניטאָ מעקער - אָאָפּס. ניטאָ אַ מעקער. סטעווען: עראַסער. דוד מאַלאַן: איר ניטאָ אַ באַרשט. סטעווען: בראַש. דוד מאַלאַן: גוט. און וואָס אַנדערש? סטעווען: און דעמאָלט מיר - דוד מאַלאַן: מיר פּושט 17. סטעווען: מיר שטעקן 17 אויף שפּיץ, אַזוי - דוד מאַלאַן: גוט, גוט. סטעווען: - פאַלן אים אַראָפּ. דוד מאַלאַן: כל רעכט. עס ס געטינג גרינג. איך בין נישט געגאנגען צו העלפן איר דעם צייַט. שטופּן 22. סטעווען: געטאן. שיין אַ מעקער. איך בין שיין אַ באַרשט. און דעמאָלט איך בין פּאַטינג 22. דוד מאַלאַן: 22. ויסגעצייכנט. אזוי איינער מער צייַט. איך בין איצט געגאנגען צו שטופּן אַנטו דעם אָנלייגן 26. סטעווען: ו. טאַקע גאַש. איר טאַקע געכאפט מיר אַוועק היטן. דוד מאַלאַן: איר האט נישט זען דעם קומען? סטעווען: איך האט ניט זען דעם קומען. קען מיר שייַעך-ערשט קאַפּאַציטעט? דוד מאַלאַן: אַז ס אַ גוט קשיא. אזוי מיר ווע מין פון פּיינטיד זיך אין אַ ווינקל דאָ. עס טאַקע איז ניט גוט אויס פֿאַר סטעווען ווייַל מיר ווע אַלאַקייטיד דעם מענגע סטאַטיקאַללי, אַזוי צו רעדן, ין פון די דאַטן סטרוקטור. און מיר ווע יסענשאַלי שווער קאָדעד עס צו זייַן פון גרייס דרייַ. אזוי מיר קענען ניט טאַקע ריאַלאַקייט עס. מיר קען אויב מיר זענען צוריק אין, מיר רידיפיינד טרייַס צו זייַן אַ טייַטל אַז מיר דעמאָלט נוצן מאַללאָק צו האַנט זכּרון צו. ווייַל אויב מיר גאַט דער זכּרון פון דער קופּע דורך מאַללאָק, מיר קען דעמאָלט פֿרייַ עס. אבער איידער פריינג עס, מיר קען ריאַלאַקייט אַ ביגער פּייַדע פון ​​זכּרון, דערהייַנטיקן די טייַטל, און אַזוי אַרויס. אבער פֿאַר איצט, דאָס איז טאַקע דער בעסטער מיר קענען טאָן. שטופּן און קנאַל זענען מאַשמאָעס געגאנגען צו האָבן צו סיגנאַל עטלעכע טעות. אזוי פֿאַר בייַשפּיל, אונדזער ימפּלאַמענטיישאַן פון שטופּן קען צוריקקומען אַ באָאָל וואָס ביז אַהער אומגעקערט אמת, אמת, אמת. אבער דער פערט צייַט, עס ס 'געגאנגען צו האָבן צו צוריקקומען פאַלש, פֿאַר בייַשפּיל. כל רעכט. זייער גוט געטאן. מאַזל - טאָוו. איר ווע ערנד דיין דרוק פּילקע הייַנט. [אַפּלאָדיסמענטן] סטעווען: דאנק איר. דוד מאַלאַן: דאנק איר. גוט, אַזוי דאָס מיינט צו זייַן נישט פיל פון אַ שריט פאָרויס, רעכט? מיר דיסקרייבד דעם דאַטן סטרוקטור. עס ס שוין קאַמפּעלינג, רעכט? אַפּערייטינג סיסטעמס ווי עס. משמעות די וועב קענען מאַכן נוצן פון דעם, און אנדערע פּראָגראַמען נאָך. אבער וואָס אַ נאַריש באַגרענעצונג אַז מיר רע צוריק צו סאָרט פון וואָך צוויי לימאַץ ווו מיר האָבן פאַרפעסטיקט גרייס ערייז. אזוי עס זענען טאַקע אַ פּאָר פון וועגן מיר קען סאָלווע דעם. מיר קען דינאַמיקאַללי אַלאַקייט די מענגע, ניט דורך שווער קאָודינג עס ווי איך ווע געטאן דאָ, אָבער אַנשטאָט שייַעך-דיקלערינג דעם, נאָר צו זייַן קלאָר, ווי עפּעס ווי דעם. ינט * טרייַס, נישט דאַסיידינג אויף אַ קאַפּאַציטעט נאָך. אבער ווען איך דערקלערן דעם אָנלייגן אנדערש אין מיין קאָד, איך קען דעמאָלט רופן מאַללאָק, באַקומען דעם אַדרעס פון אַ פּייַדע פון זכּרון, און איך קען באַשטימען אַז אַדרעס צו טרייַס. און דעמאָלט, ווייַל עס ס נאָר אַ פּייַדע פון זכּרון, איך קען פאָרזעצן צו נוצן קוואַדראַט קלאַמער נאָוטיישאַן אין די געוויינטלעך וועג. ווייַל ווידער, דאָרט ס סאָרט פון דעם פאַנגקשאַנאַל עקוויוואַלענט פון ערייז און שטיקער פון זכּרון וואָס קומען צוריק פון מאַללאָק. מיר קענען מייַכל איינער ווי די אנדערע ניצן טייַטל אַריטמעטיק אָדער קוואַדראַט קלאַמער נאָוטיישאַן. אזוי אַז ס 'איין צוגאַנג. אבער ווי אַנדערש זאל מיר ינסטרומענט דעם זעלביקער דאַטע סטרוקטור, פּאַטענטשאַלי? רעכט? איך פילן ווי מיר נאָר סאַלווד דעם פּראָבלעם ווי אַ וואָך צוריק. וואָס איז די לייזונג צו דעם פּראָבלעם אַז סטעווען געלאפן אין? אזוי לינגקט רשימות, רעכט. אויב די פּראָבלעם איז אַז מיר ניטאָ געמעל זיך אין אַ ווינקל דורך אַלאַקייטינג אין שטייַגן צו קליין זכּרון אַז מיר דעמאָלט האָבן צו עפעס האַנדלען מיט, געזונט, וואָס נישט נאָר ויסמייַדן אַז אַרויסגעבן בעסאַכאַקל? פארוואס נישט נאָר דערקלערן טרייַס צו זייַן אַ טייַטל צו אַ נאָדע, ערגאָו אַ לינגקט רשימה, און דעריבער פשוט אַלאַקייט נייַ נאָודז יעדער צייַט סטעווען דארף צו פּאַסיק אַ נומער אין די דאַטן סטרוקטור. אזוי די בילד וואָלט האָבן צו טוישן. עס ס נישט געגאנגען צו זייַן ווי ריין און ווי פּשוט ווי נאָר אַ מענגע פון ​​דרייַ ינץ. איצט עס ס 'געגאנגען צו זייַן אַ טייַטל צו אַ סטרוקט, און אַז סטרוקט איז געגאנגען צו האָבן אַ ינט און אַ ווייַטער טייַטל. עס ס געגאנגען צו פירן דורך אַז טייַטל צו אן אנדער אַזאַ סטרוקט צו אן אנדער אַזאַ סטרוקט. אזוי די בילד וואָלט פאקטיש באַקומען אַ ביסל מעססיער. און מיר 'ד האָבן אַראָוז טייינג אַלץ צוזאַמען. אבער אַז ס פייַן, רעכט, ווייַל מיר ווע געזען ווי צו טאָן דעם. און אַמאָל איר באַקומען באַקוועם ימפּלאַמענטינג עפּעס ווי אַ לינגקט רשימה, וואָס איר וועט האָבן צו טאָן אויב איר קלייַבן צו ינסטרומענט אַ האַש טיש מיט באַזונדער טשיינינג פֿאַר פּ-שטעלן 6, איר קענען נוצן עס ווי אַ בנין בלאָק, אָדער אַן ינגרידיאַנט, אָדער אין סקראַטטש רעדן, אַ פּראָצעדור, עפּעס וואָס איר שטעלן, איר באשאפן דיין אייגן רעטעניש שטיק אַז איר קענען דעריבער רייוס. אזוי טריידאָפס, אָבער פּאָטענציעל סאַלושאַנז אַז מיר ווע פאקטיש געזען פריער. אזוי גאַנץ אָפֿט, איר זען דעם יעדער יאָר אָדער צוויי ווען עפּל ריליסיז עפּעס נייַ, און אַלע די משוגע מענטשן שורה אַרויף אַרויס פון די עפּל קראָם צו קויפן זייער מאַרדזשאַנאַל אַפּגרייד אויף ייַזנוואַרג. איך זאָגן דעם, עס ס 'גוט, ווייַל איך בין איינער פון יענע מענטשן. אזוי וואָס מין פון דאַטן סטרוקטור זאל פאָרשטעלן דעם פאַקט? נו, לאָזן ס רופן עס אַ ריי, אַ שורה. אזוי בריטיש וואָלט רופן עס טיפּיקלי אַ ריי סייַ ווי סייַ, אַזוי עס ס אַ פייַן נאָמען. און די צוויי אַפּעריישאַנז אַז אַ ריי וועט שטיצן מיר וועט רופן אַ ענקוועוע אָפּעראַציע און אַ דעקוועוע אָפּעראַציע, וואָס זענען ענלעך אין גייסט צו שטופּן און קנאַל. עס ס נאָר סאָרט פון פאַרשידענע אין קאַנווענשאַן, וואָס מיר ניטאָ פאַך די. אבער צו ענקוועוע עפּעס מיטל צו לייגן אָדער אַרייַנלייגן עס צו די דאַטן סטרוקטור. צו דעקוועוע מיטל צו באַזייַטיקן עס. אבער כוועראַז אַ אָנלייגן איז געווען אַ ליפאָ דאַטן סטרוקטור, אַ ריי איז אַ ערשטער אין, ערשטער אויס דאַטן סטרוקטור. אויב איר זענט דער ערשטער מענטש אין שורה, איר וועט זייַן דער ערשטער מענטש צו באַקומען אויס פון שורה און קויפן דיין נייַ מיטל. ימאַדזשאַן ווי יבערקערן די מענטשן וואָלט זייַן אויב עפּל אַנשטאָט געניצט אַ אָנלייגן, פֿאַר בייַשפּיל, צו ינסטרומענט די פּיקינג אַרויף פון דיין נייַ צאַצקע. אזוי קיוז מאַכן זינען, אַוואַדע, און מיר קענען טראַכטן פון אַלע סאָרץ פון פּראָגראַמען, מאַשמאָעס, פֿאַר קיוז, ספּעציעל ווען איר ווילן יוישער. אזוי ווי זאל מיר ינסטרומענט די ווי אַ דאַטן סטרוקטור? נו, איך פאָרשלאָגן אַז מיר זאל דאַרפֿן צו טאָן עס דעם וועג. אזוי איך בין געגאנגען צו איצט האָבן נומערן. אזוי מיר וועט האַלטן עס פּשוט און ניט דאַווקע רעדן אין טערמינען פון טרייַס. נאָר נומערן אַז מענטשן פון גאַטאַן. קאַפּאַציטעט איז געגאנגען צו, ווידער, פאַרריכטן די גאַנץ נומער פון מענטשן וואָס קענען זייַן אין דעם שורה, ווי דרייַ אָדער וועלכער אנדערע ווערט. אבער איך פאָרשלאָגן אַז איך דאַרפֿן צו האַלטן שפּור נישט בלויז פון די גרייס פון דעם ריי, ווי פילע זאכן זענען אין אים. אזוי גרייס איז די קראַנט גרייס, קאַפּאַציטעט איז די מאַקסימום גרייס. נאָר ווידער, נאָומאַנקלייטשער דורך קאַנווענשאַן. פארוואס טאָן איך דאַרפֿן אַן נאָך ינט ין פון אַ ריי צו האַלטן שפּור פון וואס ס אין פראָנט פון די שורה? פארוואס טאָן איך דאַרפֿן צו טאָן אַז אין דעם פאַל? נו, ווי איז דאָס בילד געגאנגען צו טוישן? איך קענען מיסטאָמע רייוס רובֿ פון דעם בילד. זאל מיר גיין פאָרויס און מעקן וואָס ס דאָ. מיר וועט געבן דעם אַ ביסל פאַרשידענע נאָמען אַרויף דאָ. זאל ס באַקומען באַפרייַען פון די 17, לאָזן 'ס באַקומען באַפרייַען פון דעם 9, לאָזן 'ס באַקומען באַפרייַען פון די 3. און לאָזן 'ס שטעלן איין אנדערע זאַך. איך פאָרשלאָגן אַז איך דאַרפֿן צו האַלטן שפּור פון די פראָנט פון די רשימה, וואָס איז נאָר געגאנגען צו זייַן אַ ינט ווי געזונט. און מיר ניטאָ געגאנגען צו האַלטן עס פּשוט. ניט לינגקט רשימה פֿאַר איצט. מיר וועט אַרייַנלאָזן אַז מיר ניטאָ געגאנגען צו זעץ זיך קעגן דעם שיעור. אבער וואָס טוט איך ווילן צו זען פּאַסירן דאָס צייַט? אזוי רעכן איך גיין פאָרויס און דער ערשטער מענטש קומט אַרויף אין שורה, און עס ס די נומער 9. מיר טאָן האָבן דרוק באַללס. קענען איך גאַנווענען, זאָגן, צוויי אָדער דרייַ מענטשן? איינער, צוויי, דרייַ? קומען אויף אַרויף. רעכט פון די פראָנט, ווייַל מיר וועט מאַכן דעם איין שנעל. יעדער פון איר איז איצט געגאנגען צו זייַן אַ פאָכער יינגל אין שורה אין עפּל. איר וועט ניט זייַן באקומען עפּל ייַזנוואַרג אין די סוף פון דעם כאָטש. כל רעכט. אזוי איר ניטאָ נומער 9, איר רע נומער 17, נומער 22. די ביסט אַרבאַטרערי נומערן, ווי תּלמיד ידס אָדער כוואַטנאַט. און אין נאָר אַ מאָמענט, לאָזן 'ס נעמען צו אָנהייבן אַדינג זאכן. און איך וועט לויפן די ברעט דאָ דעם צייַט. אזוי אין דעם פאַל, איך ווע ינישאַלייזד דער פראָנט צו זייַן - איך פאקטיש טאָן ניט טאַקע זאָרגן וואָס די פראָנט איז, ווייַל די גרייס איז נול. אזוי דעם זאל ווי געזונט נאָר זייַן אַ קשיא מארק. דאס זענען אַלע קשיא מאַרקס. אזוי איצט מיר וועט אָנהייבן צו פאקטיש זען עטלעכע מענטשן ונטערשלאַק אַרויף בייַ די קראָם. אזוי אויב נומער 9, איר ניטאָ דער ערשטער איינער דאָרט בייַ 05:00, גיין פאָרויס און שורה אַרויף, אָדער די נאַכט פריער. גוט. אזוי איצט 9 איז דאָ. אזוי 9 איז אין די פראָנט פון די רשימה. אזוי איך בין געגאנגען צו גיין פאָרויס און דערהייַנטיקן די גרייס פון דעם קראַנט דאַטן סטרוקטור צו נישט זייַן 0 ענימאָר, אָבער צו זייַן 1. איך בין געגאנגען צו שטעלן 9 בייַ די פראָנט פון די רשימה. זאל מיר גיין פאָרויס און טאַגאַל די פאַרשטעלן אַזוי מיר קענען זען פאַרגאַנגענהייַט אונדז דאָ. און איצט וואָס טאָן איך ווילן צו שטעלן אין פראָנט? איך בין געגאנגען צו האַלטן שפּור אַז די פראָנט פון די ריי רעכט איצט איז בייַ אָרט 0. ווייַל וואָס איז ווייַטער געגאנגען צו פּאַסירן? נו, רעכן איצט איך ענקוועוע 17 ווי געזונט. אזוי האָפּקען אין שורה דאָרט. און ווידער, די סאָרט פון טיר צו די קראָם איז געגאנגען צו זייַן דאָ. אזוי איצט איך ווע צוגעגעבן 17. און אַפֿילו כאָטש די גויס זענען בלאַקינג די פאַרשטעלן, אַז ס 'גוט, ווייַל מיר קענען זען עס אַרויף דאָ. אנטשולדיגט. וילעם: מיר קענען רירן - דוד מאַלאַן: ניט, אַז ס 'גוט. עס ס ריזיק אַרויף דאָרט. אזוי 17 איז איצט ין פון די ריי. איך דאַרפֿן צו דערהייַנטיקן וואָס פעלדער איצט כאָטש? גוט, באשטימט גרייס. און ווי וועגן פראָנט? גוט, ניט. פראָנט זאָל נישט טוישן, ווייַל ניט ענלעך אַ אָנלייגן, מיר ווילן צו טייַנען יוישער. אזוי אויב 9 געקומען אין ערשטער, מיר ווילן 9 צו זייַן דער ערשטער אויס פון די שורה און אין די קראָם. אין פאַקט, לאָזן ס זען אַז. איידער מיר אַרייַנלייגן 22, לאָזן 'ס גיין פאָרויס און דעקוועוע 9. וואָס ס 'דיין נאָמען ווידער? וילעם: דזשייק. דוד מאַלאַן: דזשייק איז געגאנגען צו זייַן דעקוועועד איצט. אזוי איר באַקומען צו גיין אין די קראָם. און פאַרהיטן אַז די קראָם איז איבער דאָרט. אזוי איצט וואָס דאַרף - דאס-דאס-דאס! וואָס דאַרף צו פּאַסירן איצט? פּלאַן באַשלוס. אזוי נישט אַ שלעכט אינסטינקט, אָבער - וואָס ס 'דיין נאָמען ווידער? וילעם: דוד. דוד מאַלאַן: דוד. אזוי וואָס האט דוד טאָן? ער איז געווען טריינג צו סאָרט פון פאַרריכטן די דאַטן סטרוקטור און מאַך פון זייַן אָרט אין דזשייק 'ס ערשטע אָרט. און אַז ס פייַן אויב מיר ניטאָ גרייט צו אָננעמען אַז ווי אַ ימפּלאַמענטיישאַן דעטאַל. אבער ערשטער, לאָזן ס דערהייַנטיקן די דאַטן סטרוקטור איידער מיר טאָן אַז. ווייַל איך בין נישט לייקינג דער געדאַנק פון אַלע די מענטשן שיפטינג אין דעם ליניע. עס ס קיין גרויס האַנדלען אויב דוד טוט עס מיט איין שריט, אָבער ווידער, טראַכטן צוריק צו ווען מיר ווע האט אַכט וואַלאַנטירז אויף די בינע און מיר ווע געטאן ווי ינסערשאַן סאָרט, ווו מיר האבן צו אָנהייבן מאָווינג אַלעמען אַרום. אַז גאַט טייַער, רעכט? וואָס מאכט מיר ציטערן וועגן גרויס אָ פון N, גרויס אָ פון N סקווערד ווידער. עס ס נישט געפיל ווי אַ ידעאַל אַוטקאַם. אזוי לאָזן 'ס נאָר דערהייַנטיקן דעם. אזוי די גרייס פון דער ריי איז ניט מער 2. עס ס איצט פשוט 1. אבער איך קענען איצט דערהייַנטיקן עפּעס איך האט נישט דערהייַנטיקן איידער, די פראָנט פון די רשימה. איך קען נאָר זאָגן, איז אַז אָרט 1? אזוי איצט מיר האָבן מיסט ווערט דאָ, מיסט ווערט דאָ, און דוד אין די מיטן פון דעם מיסט. אבער די דאַטן סטרוקטור איז נאָך בעשאָלעם. און אין פאַקט, איך טאָן ניט אַפֿילו דאַרפֿן צו טוישן דזשייק 'ס ערשטע נומער 9, ווייַל ווער דאגות. איך האָבן גענוג אינפֿאָרמאַציע איצט אין די גרייס אַז איך וויסן דאָרט ס איין מענטש אין דעם ריי. און איך וויסן אַז אַז מענטש איז בייַ אָרט 1, נישט 0. איך בין נישט קאַונטינג. אזוי 1 ווי געזונט. אזוי די דאַטן סטרוקטור ס נאָך גוט. נו, וואָס כאַפּאַנז ווייַטער? זאל ס ענקוועוע - וואָס ס 'דיין נאָמען? וילעם: קאַלאַן. דוד מאַלאַן: קאַלאַן. זאל ס ענקוועוע אַ קאַלאַן, און 22 איז איצט אין די ריי. אזוי איצט וואָס האט צו טוישן דאָ? פראָנט איז נישט געגאנגען צו טוישן, דאָך. גרייס איז געגאנגען צו טוישן צו זייַן 2 ווידער. און 22 ענדס אַרויף דאָ, 9 איז נאָך פאָרשטעלן, אָבער עס ס יפעקטיוולי אַ מיסט ווערט איצט. עס ס נאָר אַ רעשט פון דזשייק פאַרגאַנגענהייַט. אזוי איצט וואָס כאַפּאַנז אויב איך דעקוועוע דוד? איינער לעצט אָפּעראַציע, דעקוועוע דוד. מיר קען יבעררוק, אָבער איך פאָרשלאָגן לאָזן 'ס טאָן ווי ביסל אַרבעט ווי מעגלעך. איצט מיין דאַטן סטרוקטור גייט צוריק אין גרייס 2-1. אבער די פראָנט פון די ריי איצט ווערט 2. איך טאָן ניט דאַרפֿן צו טוישן די נומערן נאָר נאָך, ווייַל זיי ניטאָ נאָר מיסט וואַלועס. אבער איצט וואָס כאַפּאַנז? רעכן איך ענקוועוע זיך, 26? איך פילן ווי איך געהערן איבער דאָ. אזוי איך בין זייַענדיק ענקוועועד. אזוי איך מין פון געהערן דאָ. און אַפֿילו כאָטש איר טאָן ניט גאַנץ אָפּשאַצן דעם וויזשוואַלי אויף דער בינע, ווייַל מיר האָבן שעפע פון ​​צימער, איך זאָל ניט זייַן שטייענדיק דאָ, וואָס? וילעם: איר ניטאָ אויס פון גווול. דוד מאַלאַן: רעכט. איך בין אויס פון גווול. איך ווע ינדעקסט ווייַטער פון די גווול פון דעם מענגע. איך טאַקע זאָל זייַן אין איין פון די דרייַ מעגלעך לאָוקיישאַנז. איצט, ווו ס 'רובֿ נאַטירלעך צו גיין? איך פאָרשלאָגן מיר לעווערידזשד אַ וואָך איין קונץ. די מאָד אָפּעראַטאָר, פּראָצענט. ווייַל איך בין טעקניקלי שטייענדיק בייַ אָרט 3, אָבער איך טאָן 3 מאָד קאַפּאַציטעט, אַזוי 3, אַ פּראָצענט צייכן, 3 - קאַפּאַציטעט ס 3. וואָס ס וואָס? וואָס ס די רעשט ווען איר טיילן 3 דורך 3? 0. אזוי אַז לייגט מיר זענען דזשייק איז געווען, וואָס איז פאקטיש גוט. אזוי איצט די ימפּלאַמענטיישאַן פון דעם זאַך ס 'געגאנגען צו זייַן אַ ביסל פון אַ קאָפּווייטיק. עס ס טאַקע נאָר איין שורה פון קאָפּווייטיק, פון קאָד. אבער לפּחות איצט דאָרט ס מיסט ווערט דאָ, אָבער דאָרט ס צוויי לאַדזשיטאַמאַט ינץ דאָ. און איך פאָדערן אַז איצט מיר האָבן געטאן פּונקט וואָס מיר דאַרפֿן צו טאָן אַזוי לאַנג ווי מיר טוישן וואָס דזשייק 'ס ווערט געווען צו זייַן 26. מיר איצט האָבן גענוג אינפֿאָרמאַציע נאָך צו טייַנען די אָרנטלעכקייַט פון דעם דאַטן סטרוקטור. מיר ניטאָ נאָך מין פון אויס פון גליק ווען מיר ווילן צו אַרייַנלייגן פיר אָדער מער גאַנץ עלעמענטן, אָבער איך קענען לפּחות מאַכן שיין עפעקטיוו נוצן פון דעם קעסיידערדיק צייַט, אין פאַקט. איך טאָן ניט האָבן צו זאָרג וועגן שיפטינג אַלעמען, ווי דוד ס יצר איז געווען. קיין שאלות אויף סטאַקס, אָדער דעם ריי? וילעם: איז די סיבה וואָס איר דאַרפֿן גרייס אַזוי איר וויסן ווו צו האָבן אַ מענטש? דוד מאַלאַן: עקסאַקטלי. איך דאַרפֿן צו וויסן די גרייס פון דעם מענגע ווייַל איך דאַרפֿן צו וויסן פּונקט ווי פילע פון ​​די וואַלועס זענען לאַדזשיטאַמאַט, און אַזוי אַז איך קענען געפינען ווו צו שטעלן דער ווייַטער מענטש. פּונקט. די גרייס איז - פאקטיש, מיר האבן נישט דערהייַנטיקן דעם נאָך. איך צוגעגעבן זיך בייַ 26. די גרייס איז איצט, ניט 1, אָבער 2. אזוי איצט דעם טאַקע העלפט מיר געפינען די קאָפּ פון די רשימה, וואָס איז נישט 0, ניט 1, אָבער איז 2. די פראָנט פון די רשימה איז טאַקע נומער 22. ווייַל ער געקומען אין ערשטער, אַזוי ער זאָל זייַן ערלויבט אין די קראָם פריער מיר, אַפֿילו כאָטש וויזשוואַלי איך בין שטייענדיק נעענטער צו די קראָם. כל רעכט? א קייַלעכיק פון אַפּלאָדיסמענטן פֿאַר די גויס און מיר וועט לאָזן זיי אויס פון דאָרט. [אַפּלאָדיסמענטן] דוד מאַלאַן: איך קען לאָזן איר האַלטן די טאַץ. מיר קען זען וואָס כאַפּאַנז אויב איר ווילן, אָבער אפֿשר נישט. כל רעכט. אזוי וואָס איצט טוט וואָס לאָזן אונדז? נו, לאָזן מיר פאָרשלאָגן אַז דאָרט ס אַ ווייניק אנדערע דאַטן סטראַקטשערז מיר קען אָנהייב אַדינג צו אונדזער געצייַג קיט וואָס וועט פאקטיש זייַן גאַנץ, גאַנץ באַטייַטיק ווי מיר ונטערטוקנ זיך אין וועב שטאָפּן. וואָס ווידער, האט עטלעכע מין פון קשר צו ביימער אין די פאָרעם פון עפּעס גערופן דאַם, דאָקומענט כייפעץ מאָדעל. אבער מיר וועט זען מער פון אַז איידער לאַנג. זאל מיר פאָרשלאָגן דעפיניטיאָנאַללי אַז מיר רופן בוים איצט וואָס איר זאל וויסן ווי מער פון אַ משפּחה בוים, ווו איר האָבן עטלעכע אַנסעסטער בייַ די רוץ פון די בוים. א פאטריארכאלע אָדער אַ מייטריאַרק בייַ די זייער שפּיץ פון דעם בוים. אָן זייער ספּאַוס, אין דעם פאַל. אבער מיר איצט האָבן וואָס מיר וועט רופן קינדער, וואָס זענען נאָודז וואָס הענגען אַוועק די לינקס קינד אָדער די רעכט קינד, אַראָוז ווי דיפּיקטיד דאָ. אין אנדערע ווערטער, אין אַ בוים דאַטן סטרוקטור אין קאָמפּיוטער, אַ בוים האט נול אָדער מער נאָודז. אויב עס האט לפּחות איין נאָדע, אַז ס גערופן די וואָרצל. עס ס די זאכן וויזשוואַלי אַז מיר ציען בייַ די שפּיץ. און אַז נאָדע, ווי קיין אנדערע נאָדע, קענען האָבן נול, איינער, אָדער צוויי, אָדער דרייַ, אָדער אָבער פילע קינדער די דאַטן סטרוקטור שטיצט. אין דעם פאַל, די וואָרצל, סטאָרינג די ווערט איין, האט צוויי קינדער, 2 און 3, אַזוי מיר בכלל רופן 2 די לינקס קינד און 3 די רעכט קינד. און דעריבער ווען מיר באַקומען אַראָפּ צו 5, 6, און 7, 6 זאל זייַן גערופן די מיטן קינד. אויב איר האָט פיר קינדער, עס געץ קאַנפיוזינג. אזוי מיר האַלטן ניצן אַז מין פון דורכוועג ווערבאַלי. אבער עס ס 'טאַקע נאָר אַ משפּחה בוים. און די בלעטער דאָ זענען די נאָודז אַז זיך האָבן קיין קינדער. זיי הענגען אַוועק די דנאָ פון די בוים. אזוי ווי זאל מיר ינסטרומענט אַ בוים וואָס האט נאָר צוויי קינדער מאַקסימאַללי? מיר וועט רופן עס אַ ביינערי בוים. ביי ווידער טייַטש צוויי, אין דעם פאַל, ווי מיט ביינערי. און אַזוי עס קענען האָבן נול, איינער, אָדער צוויי קינדער מאַקסימאַללי. איך וועט פאָרשלאָגן אַז מיר ינסטרומענט די נאָדע פֿאַר וואָס סטרוקטור מיט אַ ינט N, און דעמאָלט צוויי פּאָינטערס, איינער גערופן לינקס, איינער גערופן רעכט. אבער די ביסט נאָר פייַן אַרבאַטרערי קאַנווענשאַנז. און וואָס ס פייַן איצט, ספּעציעל אויב איר מין פון סטראַגאַלד קאַנסעפּטשואַלי מיט רעקורסיאָן, אָדער געדאַנק אַז עס איז נישט טאַקע אַ לייזונג צו עפּעס, ספּעציעל אויב איר קען לויפן אויס פון זכּרון. איצט אַז מיר ניטאָ גערעדט וועגן דאַטן סטראַקטשערז און אַלגערידאַמז אַז לאָזן אונדז צו דורך און מאַניפּולירן זיי, טורנס אויס אַז רעקורסיאָן קומט צוריק אין אַ פיל מער קאַמפּעלינג אויב נישט שיין וועג. אזוי דעם איך פאָרשלאָגן איז די ימפּלאַמענטיישאַן פון אַ זוכן פונקציאָנירן. געגעבן צוויי ינפּוץ - אַזוי טראַכטן פון דעם ווי אַ שוואַרץ קעסטל. געגעבן צוויי ינפּוץ, N, אַ ינט, און אַ טייַטל צו אַ בוים, אַ טייַטל צו אַ נאָדע, אָדער טאַקע דער שורש פון אַ בוים, איך פאָדערן אַז דאָס פונקציאָנירן קענען צוריקקומען אמת אָדער פאַלש, וואָס ווערט N איז ין פון דעם בוים. וואָס ס 'ין פון דעם שוואַרץ קעסטל? נו, פיר צווייגן. דער ערשטער פּונקט טשעקס. אויב בוים איז נאַל, נאָר צוריקקומען פאַלש. אויב דאָרט ס קיין נאָדע, דאָרט ס קיין N, דאָרט ס קיין נומער, נאָר צוריקקומען פאַלש. אויב כאָטש, N, דער ווערט איר ניטאָ קוקן פֿאַר, איז ווייניקער ווי בוים פייַל ען, און נאָר צו זייַן קלאָר, וואָס טוט עס מיינען ווען איך שרייַבן בוים און דעריבער די פייַל נאָוטיישאַן, ען? פּונקט. עס מיטל דערעפערענסע אַז טייַטל גערופן בוים. גיין דאָרט, און דעמאָלט באַקומען ין פון וואָס נאָדע און באַקומען זייַן פעלד גערופן ען. און דעמאָלט פאַרגלייַכן די פאַקטיש ען אַז איז געווען דורכגעגאנגען אין זוכן קעגן אים. אזוי אויב ען איז ווייניקער ווי, די ען ווערט אין דער בוים נאָדע זיך, געזונט, וואָס טוט וואָס מיינען? אַז מיטל גאָרנישט בייַ ערשטער בליק. רעכט? פונקט ווי ווען איר האָט אַ מענגע פון וואַלועס, איר זאל ווי צו צולייגן ביינערי זוכן ווי אַ פאָרעם פון טיילן און קאַנגקער. אבער וואָס האַשאָרע האט מיר דאַרפֿן צו מאַכן פֿאַר ביינערי זוכן צו אַרבעטן אין אַלע אין דער טעלעפאָן בוך און פריער ביישפילן? ווי צו זייַן אויסגעשטעלט. אזוי לאָזן ס ראַפינירן די דעפֿיניציע פון ​​בוים דאָ נישט צו זייַן נאָר אַ בוים, וואָס קענען האָבן קיין נומער פון קינדער. נישט נאָר אַ ביינערי בוים, וואָס קענען האָבן 0, 1, אָדער 2 מאַקסימאַללי. אבער ווי אַ ביינערי זוכן בוים, אָדער בסט, וואָס איז נאָר אַ פאַנטאַזיע וועג פון זאגן אַ ביינערי בוים אַזאַ וואָס יעדער נאָדע ס לינקס קינד, אויב פאָרשטעלן, איז ווייניקער ווי די נאָדע. און יעדער נאָדע ס רעכט קינד, אויב פאָרשטעלן, איז גרעסער ווי דער נאָדע זיך. אזוי אין אנדערע ווערטער, אויב איר געווען צו ציען דער בוים אויס, אַלע פון ​​די נומערן זענען קערפאַלי באַלאַנסט ווי דעם אַזוי אַז אויב איר האָבן 55 ווי די שורש, 33 קענען גיין צו זייַן לינקס ווייַל עס ס ווייניקער ווי 55. 77 קענען גיין צו זייַן רעכט ווייַל עס ס גרעסער ווי 55. אבער איצט באַמערקן, דער זעלביקער דעפֿיניציע, עס ס אַ רעקורסיווע דעפֿיניציע ווערבאַלי, האט צו צולייגן פֿאַר 33. 33 ס לינקס קינד מוזן זייַן ווייניקער ווי עס, און 33 'ס רעכט קינד, 44, מוזן זייַן גרעסערע ווי עס. אזוי דאס איז אַ ביינערי זוכן בוים, און איך פאָרשלאָגן, ניצן אַ קליין ביסל פון רעקורסיאָן, מיר קענען איצט געפינען ען. אזוי אויב ען איז ווייניקער ווי די ווערט ען אַז ס קראַנט נאָדע, איך בין געגאנגען צו גיין פאָרויס און פּונט, אַזוי צו רעדן, און נאָר צוריקקומען וועלכער דער ענטפער איז פון שאַרף פֿאַר N אויף די בוים ס לינקס קינד. באַמערקן ווידער, דעם פונקציאָנירן נאָר יקספּעקץ אַ נאָדע שטערן, אַ טייַטל צו אַ נאָדע. אזוי שורלי איך קענען נאָר טאָן בוים פייַל לינקס, וואָס וועט פירן מיר צו אן אנדער נאָדע. אבער וואָס איז אַז נאָדע? נו, לויט דעם דעקלאַראַציע, לינקס איז נאָר אַ טייַטל, אַזוי אַז נאָר מיטל איך בין גייט פארביי צו דעם זוכן פֿונקציע אַ אַנדערש טייַטל, ניימלי דער איינער אַז רעפּראַזענץ מיין לינקס קינד ס בוים. אזוי אין דעם פאַל, די טייַטל צו 33, אויב דאָס איז אונדזער מוסטער אַרייַנשרייַב דערווייַל, אויב ען איז גרעסער ווי די ווערט ען אין די קראַנט נאָדע אין די בוים, דעמאָלט איך בין געגאנגען צו גיין פאָרויס און פּאַנט אין די אנדערע ריכטונג און נאָר זאָגן, איך טאָן ניט וויסן אויב דאָס ווערט ען איז אין די בוים, אָבער איך וויסן אויב עס איז, עס ס אַראָפּ מיין רעכט צווייַג, אַזוי צו רעדן. אזוי לאָזן מיר רופן רעקורסיוועלי זוכן, גייט פארביי אַן ען ווידער, אָבער גייט פארביי אין אַ טייַטל צו מיין רעכט קינד. אין אנדערע ווערטער, אויב איך בין איצט אין 55 און איך בין קוקן פֿאַר 99, איך וויסן אַז 99 איז גרעסער ווי 55, אַזוי פּונקט ווי איך טאָר דער טעלעפאָן בוך וואָכן צוריק און מיר זענען רעכט, סימילאַרלי זענען מיר געגאנגען צו גיין רעכט דאָ. און איך טאָן ניט וויסן אויב עס ס אין מיין רעכט קינד, און עס ס נישט, 77 איז דאָרט, אָבער איך וויסן עס ס אין אַז ריכטונג. אזוי איך רופן זוכן אויף מיין רעכט קינד, 77, און לאָזן זוכן פיגור אויס פון דאָרט אויב 99 אין דעם אַרבאַטרערי בייַשפּיל איז פאקטיש דאָרט. אַנדערש, וואָס ס די לעצט פאַל? אויב בוים איז נאַל איז איין פאַל. אויב ען איז ווייניקער ווי די איצטיקע נאָדע ס ווערט איז אן אנדער פאַל. אויב ען איז גרעסער ווי די קראַנט נאָדע ס ווערט איז א דריט פאַל. וואָס ס דער פערט און לעצט פאַל? איך טראַכטן מיר ניטאָ אויס פון קאַסעס, רעכט? עס מוזן זייַן אַז ען איז אין די קראַנט נאָדע אַז איך בין אויף. אזוי אויב איך בין שאַרף פֿאַר 55 אין דעם פונט אין די געשיכטע, אַז צווייַג פון דער בוים וואָלט צוריקקומען אמת. אזוי וואָס ס טשיקאַווע דאָ איז אַז מיר פאקטיש, ניט ענלעך וואָכן פאַרגאַנגענהייַט, מיר מין פון האָבן צוויי באַזע קאַסעס. און זיי טאָן ניט האָבן צו זייַן אַלע אין די שפּיץ. די שפּיץ איז אַ באַזע פאַל ווייַל אויב דער בוים איז נאַל, דאָרט ס 'גאָרנישט צו טאָן. נאָר צוריקקומען אַ שווער קאָדעד ווערט פון פאַלש. די דנאָ צווייַג איז סאָרט פון דער פעליקייַט, ווערביי אויב מיר 'ווע אָפּגעשטעלט פֿאַר נאַל, מיר ווע אָפּגעשטעלט אויב עס זאָל זייַן לינקס, אָבער עס זאָל נישט זייַן, מיר ווע אָפּגעשטעלט אויב עס זאָל זייַן רעכט, אָבער עס זאָל ניט זייַן, קלאר עס האט צו זייַן רעכט ווו מיר זענען. אַז ס אַ באַזע פאַל. אזוי דאָרט ס צוויי רעקורסיווע קאַסעס סאַנדוויטשט דאָרט אין דער מיטן. אבער איך קען האָבן געשריבן דעם אין קיין סדר. איך נאָר געדאַנק עס מין פון פּעלץ נאַטירלעך צו ערשטער טשעק פֿאַר אַ מעגלעך טעות, דעמאָלט טשעק לינקס, דאַן טשעק רעכט, דעריבער יבערנעמען אַז איר ניטאָ בייַ די נאָדע איר ניטאָ פאקטיש קוקן פֿאַר. אזוי וואָס זאל דאָס זייַן נוצלעך? אזוי עס טורנס אויס - און לאָזן מיר שפּרינגען צו אַ טיזער דאָ אַז ס אין די וועב. מיר ניטאָ געגאנגען צו אָנהייבן ניצן נישט אַ פּראָגראַממינג שפּראַך בייַ ערשטער, אָבער אַ מאַרקאַפּ שפּראַך. א מאַרקאַפּ שפּראַך זייַענדיק איינער וואָס ס ענלעך אין גייסט צו פּראָגראַממינג שפּראַך, אָבער עס טוט נישט געבן איר די פיייקייַט צו אויסדריקן זיך לאַדזשיקלי. עס נאָר גיט איר די פיייקייַט צו אויסדריקן זיך סטראַקטשעראַלי. ווו טאָן איר ווילן צו שטעלן עפּעס אויף דעם בלאַט, דער וועב בלאַט? וואָס קאָליר טאָן איר ווילן צו מאַכן עס? וואָס שריפֿט גרייס טאָן איר ווילן צו מאַכן עס? וואָס ווערטער טאָן איר פאקטיש וועלן אויף די וועב זייַט? אזוי אַז ס אַ מאַרקאַפּ שפּראַך. אבער דעמאָלט מיר וועט זייער געשווינד פאָרשטעלן דזשאַוואַסקריפּט, וואָס איז אַ פול-פלעדזשד פּראָגראַממינג שפּראַך. זייער ענלעך סינטאַקטיקאַללי אין אויסזען צו C, אָבער עס וועט האָבן עטלעכע פייַן, מער שטאַרק, מער באַניצער פרייַנדלעך פֿעיִקייטן. און איינער פון די פראַסטריישאַנז אין דעם פונט אין די זמאַן איז אַז מיר וועט באַלד ינסטרומענט ספּעלער אין ווייַט ווייניקערע שורות פון קאָד ניצן אנדערע שפּראַכן ווי C זיך אַלאַוז, אָבער פֿאַר סיבה ס מיר וועט באַלד פֿאַרשטיין. דאס וועט זייַן דער ערשטער אַזאַ וועב בלאַט. עס וועט זייַן גאָר ונדערווהעלמינג, דער ערשטער איינער מיר מאַכן. עס וועט פשוט זאָגן, העלא וועלט. אבער אויב איר ווע קיינמאָל געזען עס איידער, דאָס איז HTML, כייפּערטעקסט מאַרקאַפּ שפּראַך. אויב איר גיין צו אַ זיכער מעניו אָפּציע אין רובֿ קיין בלעטערער, ​​אויף קיין וועב בלאַט אויף די אינטערנעט, איר קענען זען די HTML אַז עטלעכע מענטשן געשריבן צו שאַפֿן אַז וועב בלאַט. און עס מיסטאָמע טוט נישט קוקן ווי קורץ אָדער ווי ציכטיק ווי דעם. אבער עס וועט נאָכפאָלגן די מוסטער פון די עפענען בראַקאַץ און סלאַשיז און אותיות און פּאַטענטשאַלי נומערן. איך געדאַנק איך 'ד געבן איר אַ טיזער פון וואָס איר וועט קענען צו טאָן נאָך גענומען קס50. זאל מיר גיין צו cs.harvard.edu / ראָב, אונדזער אייגן ראָב באָוודען ס האָמעפּאַגע. ער געמאכט דעם פֿאַר אונדז. אזוי איר וועט באַלד קענען צו טאָן וואָס. און אויך, וואָס איר געהערט דעם מאָרגן - וואָס איר געהערט דעם מאָרגן - [האַמסטער טאַנצן מוזיק] - יול קענען צו מאַכן דעם. אַז אַווייץ אונדז אויף מיטוואך. מיר וועלן זען איר דעמאָלט. [האַמסטער טאַנצן מוזיק] דוד מאַלאַן: בייַ דעם ווייַטער קס50 -