[Powered by Google Translate] [סעקשאַן 6] [מער באַקוועם] [ראָב באָוודען] [האַרוואַרד אוניווערסיטעט] [דאס איז קס50.] [CS50.TV] מיר קענען קאָפּ צו אונדזער אָפּטיילונג פון שאלות. איך געשיקט די URL פֿאַר דעם אָרט פאר. דער אָנהייב פון דער אָפּטיילונג פון די שאלות זאָגן- משמעות איך בין נישט לעגאַמרע ונסיקק-איז אַ זייער גרינג קשיא פון נאָר וואָס איז וואַלגרינד? וואָס טוט וואַלגרינד טאָן? ווער עס יז ווילן צו זאָגן וואָס וואַלגרינד טוט? [תּלמיד] טשעקס זכּרון ליקס. יאָ, וואַלגרינד איז אַ גענעראַל זכּרון טשעקער. עס, אין די סוף, דערציילט איר אויב איר האָבן קיין זכּרון ליקס, וואָס איז מערסטנס וואָס מיר רע ניצן עס פֿאַר ווייַל אויב איר ווילן צו טאָן געזונט אין די פּראָבלעם שטעלן אָדער אויב איר ווילן צו באַקומען אויף די גרויס ברעט, איר דאַרפֿן צו האָבן קיין זכּרון ליקס כוואַצאָועווער, און אין פאַל איר האָבן אַ זכּרון רינען אַז איר קענען ניט געפֿינען, אויך האַלטן אין גייַסט אַז ווען איר עפענען אַ טעקע און אויב איר טאָן ניט נאָענט עס, אַז ס אַ זכּרון רינען. א פּלאַץ פון מענטשן זענען קוקן פֿאַר עטלעכע נאָדע אַז זיי ניטאָ ניט פריינג ווען טאַקע, זיי האבן ניט נאָענט די ווערטערבוך אין די זייער ערשטער שריט. עס אויך דערציילט איר אויב איר האָבן קיין פאַרקריפּלט לייענט אָדער שרייבט, וואָס מיטל אויב איר פּרובירן און שטעלן אַ ווערט אַז ס ווייַטער פון די סוף פון די קופּע און עס טוט נישט פּאַסירן צו סעג שולד אָבער וואַלגרינד קאַטשאַז עס, ווי איר זאָל נישט פאקטיש זייַן שרייבן דאָרט, און אַזוי איר באשטימט זאָל נישט האָבן קיין פון יענע אָדער. ווי טאָן איר נוצן וואַלגרינד? ווי טאָן איר נוצן וואַלגרינד? עס ס אַ גענעראַל קשיא פון מין פון לויפן אים און קוק בייַ די רעזולטאַט. דער רעזולטאַט איז אָוווערוועלמינג אַ פּלאַץ פון מאל. עס ס אויך שפּאַס ערראָרס ווו אויב איר האָבן עטלעכע טעראַבלי אומרעכט זאַך געשעעניש אין אַ שלייף, דעמאָלט עס וועט יווענטשאַוואַלי זאָגן, "וועג אויך פילע ערראָרס. איך בין געגאנגען צו האַלטן קאַונטינג איצט ". עס ס בייסיקלי טעקסטשאַוואַל רעזולטאַט אַז איר האָבן צו פּאַרס. אין די סוף, עס וועט זאָגן איר קיין זכּרון ליקס אַז איר האָבן, ווי פילע בלאַקס, וואָס קענען זייַן נוצלעך ווייַל אויב עס ס איין בלאָק ונפרעעד, דעמאָלט עס ס יוזשאַוואַלי גרינגער צו געפֿינען ווי 1.000 בלאַקס ונפרעעד. 1.000 בלאַקס ונפרעעד מיסטאָמע מיטל איר ניטאָ ניט פריינג דיין לינגקט רשימות אַפּראָופּרייטלי אָדער עפּעס. אַז ס וואַלגרינד. איצט מיר האָבן אונדזער אָפּטיילונג פון שאלות, וואָס איר טאָן ניט דאַרפֿן צו אָפּלאָדירן. איר קענען גיט אויף מיין נאָמען און ציען זיי זיך אין די פּלאַץ. איצט גיט אויף מיר. רעוויזיע 1 וועט זייַן אָנלייגן, וואָס מיר רע טאן ערשטער. רעוויזיע 2 וועט זייַן ריי, און רעוויסיאָן 3 וועט זייַן די יינציקווייַז לינגקט רשימה. סטאַרטינג אַוועק מיט אונדזער אָנלייגן. ווי עס זאגט דאָ, אַ אָנלייגן איז איינער פון די מערסט גרונט, פונדאַמענטאַל דאַטן סטראַקטשערז פון קאָמפּיוטער וויסנשאַפֿט. די זייער פּראָוטאַטיפּיקאַל בייַשפּיל איז די אָנלייגן פון טרייַס אין די דיינינג זאַל. עס ס בייסיקלי ווען איר זענט זייַענדיק באַקענענ צו אַ אָנלייגן, עמעצער איז געגאנגען צו זאָגן, "אָה, ווי אַ אָנלייגן פון טרייַס." איר אָנלייגן די טרייַס אַרויף. דעריבער ווען איר גיין צו ציען אַ טאַץ, דער ערשטער טאַץ אַז ס געטינג פּולד איז די לעצטע איינער וואָס איז געווען שטעלן אויף די אָנלייגן. די אָנלייגן אויך-ווי עס זאגט דאָ- מיר האָבן די אָפּשניט פון זכּרון גערופן די אָנלייגן. און וואָס איז עס גערופן די אָנלייגן? ווייַל ווי אַ אָנלייגן דאַטן סטרוקטור, עס פּושיז און פּאַפּס אָנלייגן ראָמען אויף דעם אָנלייגן, ווו אָנלייגן ראָמען זענען ווי אַ ספּעציפיש רופן פון אַ פֿונקציע. און ווי אַ אָנלייגן, איר וועט שטענדיק האָבן צו צוריקקומען פון אַ פֿונקציע רופן איידער איר קענען באַקומען אַראָפּ אין נידעריקער אָנלייגן ראָמען ווידער. איר קענען ניט האָבן הויפּט רופן פו רופן באַר און באַר צוריקקומען צו הויפּט גלייַך. עס ס שטענדיק גאַט צו נאָכפאָלגן די ריכטיק אָנלייגן פּושינג און פּאַפּינג. די צוויי אַפּעריישאַנז, ווי איך געזאגט, זענען שטופּן און קנאַל. יענע זענען וניווערסאַל טערמינען. איר זאָל וויסן שטופּן און קנאַל אין טערמינען פון סטאַקס קיין ענין וואָס. מיר וועט זען קיוז זענען מין פון פאַרשידענע. עס טוט ניט טאַקע האָבן אַ וניווערסאַל טערמין, אָבער שטופּן און קנאַל זענען וניווערסאַל פֿאַר סטאַקס. פּוש איז נאָר שטעלן אויף די אָנלייגן. פּאָפּ איז נעמען אַוועק די אָנלייגן. און מיר זען דאָ מיר האָבן אונדזער טיפּעדעף סטרוקט אָנלייגן, אַזוי מיר האָבן טשאַר ** סטרינגס. צי ניט באַקומען דערשראָקן דורך קיין **. דאס איז געגאנגען צו סוף אַרויף זייַענדיק אַ מענגע פון ​​סטרינגס אָדער אַ מענגע פון ​​פּוינטערז צו אותיות, ווו פּוינטערז צו אותיות טענד צו זייַן סטרינגס. עס טוט נישט האָבן צו זייַן סטרינגס, אָבער דאָ, זיי ניטאָ געגאנגען צו זייַן סטרינגס. מיר האָבן אַ מענגע פון ​​סטרינגס. מיר האָבן אַ נומער, וואָס רעפּראַזענץ ווי פילע עלעמענטן זענען דערווייַל אויף די אָנלייגן, און דעמאָלט מיר האָבן די קאַפּאַציטעט, וואָס איז ווי פילע יסודות קענען זייַן אויף די אָנלייגן. די קאַפּאַציטעט זאָל אָנהייבן אַוועק ווי עפּעס גרעסער ווי 1, אָבער די נומער איז געגאנגען צו אָנהייבן אַוועק ווי 0. איצט, עס זענען בייסיקלי דרייַ פאַרשידענע וועגן איר קענען טראַכטן פון אַ אָנלייגן. נו, עס זענען מיסטאָמע מער, אָבער די צוויי הויפּט וועגן זענען איר קענען מאַכשער עס ניצן אַ מענגע, אָדער איר קענען מאַכשער עס ניצן אַ לינגקט רשימה. לינגקט רשימות זענען מין פון נישטיק צו מאַכן סטאַקס פון. עס איז זייער גרינג צו מאַכן אַ אָנלייגן ניצן לינגקט רשימות, אַזוי דאָ, מיר רע געגאנגען צו מאַכן אַ אָנלייגן ניצן ערייז, און דעמאָלט ניצן ערייז, דאָרט ס אויך צוויי וועגן איר קענען טראַכטן וועגן אים. פריער, ווען איך געזאגט מיר האָבן אַ קאַפּאַציטעט פֿאַר דעם אָנלייגן, אַזוי מיר קענען פּאַסיק אַן עלעמענט אויף דעם אָנלייגן. די איין וועג עס קען פּאַסירן איז ווי באַלד ווי איר שלאָגן 10 עלעמענטן, דעמאָלט איר ניטאָ געטאן. איר זאל וויסן אַז עס איז אַ אויבערשטער געבונדן פון 10 זאכן אין דער וועלט אַז איר וועט קיינמאָל האָבן מער ווי 10 זאכן אויף דיין אָנלייגן, אין וואָס פאַל איר קענען האָבן אַ אויבערשטער געבונדן אויף די גרייס פון דיין אָנלייגן. אָדער איר קען האָבן דיין אָנלייגן זייַן אַנבאַונדיד, אָבער אויב איר ניטאָ טאן אַ מענגע, אַז מיטל אַז יעדער איין מאָל איר שלאָגן 10 עלעמענטן, דעמאָלט איר ניטאָ געגאנגען צו האָבן צו וואַקסן צו 20 יסודות, און ווען איר שלאָגן 20 עלעמענטן, איר ניטאָ געגאנגען צו האָבן צו וואַקסן דיין מענגע צו 30 עלעמענטן אָדער 40 עלעמענטן. איר רע געגאנגען צו דאַרפֿן צו פאַרגרעסערן די קאַפּאַציטעט, וואָס איז וואָס מיר רע געגאנגען צו טאָן דאָ. יעדער איין מאָל מיר דערגרייכן די מאַקסימום גרייס פון אונדזער אָנלייגן, ווען מיר שטופּן עפּעס אַנדערש אויף, מיר רע געגאנגען צו דאַרפֿן צו פאַרגרעסערן די קאַפּאַציטעט. דאָ, מיר האָבן שטופּן דערקלערט ווי באָאָל שטופּן (טשאַר * Str). טשאַר * Str איז די שטריקל וואָס מיר זענען פּושינג אַנטו דעם אָנלייגן, און באָאָל נאָר זאגט צי מיר סאַקסידאַד אָדער אַנדערש. ווי קענען מיר פאַרלאָזן? וואָס איז דער בלויז ומשטאַנד אַז איר קענען טראַכטן פון ווו מיר וואָלט דאַרפֿן צו צוריקקומען פאַלש? יאָ. [תּלמיד] אויב עס ס פול און מיר רע ניצן אַ באַונדאַד ימפּלאַמענטיישאַן. יאָ, אַזוי ווי טאָן מיר דעפינירן-ער געענטפערט אויב עס ס פול און מיר רע ניצן אַ באַונדאַד ימפּלאַמענטיישאַן. דעמאָלט מיר וועלן באשטימט צוריקקומען פאַלש. ווי באַלד ווי מיר שלאָגן 10 זאכן אין די מענגע, מיר קענען נישט פּאַסיק 11, אַזוי מיר צוריקקומען פאַלש. וואָס אויב עס איז אַנבאַונדיד? יאָ. אויב איר קענען נישט יקספּאַנד די מענגע פֿאַר עטלעכע סיבה. יאָ, אַזוי זכּרון איז אַ לימיטעד מיטל, און יווענטשאַוואַלי, אויב מיר האַלטן פּושינג זאכן אַנטו דעם אָנלייגן איבער און איבער ווידער, מיר רע געגאנגען צו פּרובירן און אַלאַקייט אַ ביגער מענגע צו פּאַסיק די גרעסערע קאַפּאַציטעט, און מאַללאָק אָדער וועלכער מיר רע ניצן איז געגאנגען צו צוריקקומען פאַלש. נו, מאַללאָק וועט צוריקקומען נאַל. געדענקען, יעדער איין מאָל איר אלץ רופן מאַללאָק, איר זאָל זייַן קאָנטראָלירונג צו זען אויב עס קערט נאַל אָדער אַנדערש וואָס איז אַ קערעקטנאַס ויספיר. זינט מיר ווילן צו האָבן אַ אַנבאַונדיד אָנלייגן, דער בלויז פאַל מיר רע געגאנגען צו זייַן אומגעקערט פאַלש איז אויב מיר פּרובירן צו פאַרגרעסערן די קאַפּאַציטעט און מאַללאָק אָדער וועלכער קערט פאַלש. דעמאָלט קנאַל נעמט קיין טענות, און עס קערט די שטריקל וואָס איז אויף די שפּיץ פון די אָנלייגן. וועלכער איז געווען רובֿ לעצטנס פּושט אויף דעם אָנלייגן איז וואָס קנאַל איז אומגעקערט, און עס אויך רימוווז עס פון דעם אָנלייגן. און באַמערקן אַז עס קערט נאַל אויב עס איז גאָרנישט אויף דעם אָנלייגן. עס איז שטענדיק מעגלעך אַז די אָנלייגן איז ליידיק. אין דזשאַוואַ, אויב איר ניטאָ געניצט צו אַז, אָדער אנדערע שפּראַכן, טריינג צו קנאַל פון אַ ליידיק אָנלייגן זאל גרונט אַן אויסנאַם אָדער עפּעס. אבער אין C, נאַל איז מין פון אַ פּלאַץ פון די פאלן ווי מיר שעפּן די פראבלעמען. אומגעקערט נאַל איז ווי מיר רע געגאנגען צו באַטייַטן אַז די אָנלייגן איז געווען ליידיק. מיר ווע צוגעשטעלט קאָד וואָס וועט פּרובירן דיין אָנלייגן ס פאַנגקשאַנאַליטי, מאַכשער שטופּן און קנאַל. דאס וועט נישט זייַן אַ פּלאַץ פון קאָד. איך וועל-פאקטיש, איידער מיר טאָן אַז, אָנצוהערעניש, אָנצוהערעניש- אויב איר האָט ניט געזען עס, מאַללאָק איז נישט דער בלויז פֿונקציע אַז אַלאַקייץ זכּרון אויף די קופּע פֿאַר איר. עס זענען אַ משפּחה פון אַללאָק פאַנגקשאַנז. דער ערשטער איז מאַללאָק, וואָס איר ניטאָ געניצט צו. דעמאָלט דאָרט ס קאַללאָק, וואָס טוט די זעלבע זאַך ווי מאַללאָק, אָבער עס וועט נול אַלץ אויס פֿאַר איר. אויב איר ווע אלץ געוואלט צו שטעלן אַלץ צו נאַל נאָך מאַללאָסינג עפּעס איר זאָל האָבן נאָר געוויינט קאַללאָק אין דער ערשטער אָרט אַנשטאָט פון שרייבן אַ פֿאַר שלייף צו נול אויס די גאנצע בלאָק פון זכּרון. רעאַללאָק איז ווי מאַללאָק און האט אַ פּלאַץ פון ספּעציעל פאלן, אָבער בייסיקלי וואָס רעאַללאָק טוט איז עס נעמט אַ טייַטל וואָס האט שוין געווען אַלאַקייטיד. רעאַללאָק איז די פֿונקציע איר ווילן צו זייַן פּייינג ופמערקזאַמקייַט צו דאָ. עס נעמט אַ טייַטל וואָס האט שוין שוין אומגעקערט פון מאַללאָק. זאל ס זאָגן איר בעטן פון מאַללאָק אַ טייַטל פון 10 ביטעס. דערנאך שפּעטער איר פאַרשטיין איר געוואלט 20 ביטעס, אַזוי איר רופן רעאַללאָק אויף אַז טייַטל מיט 20 ביטעס, און רעאַללאָק וועט אויטאָמאַטיש קאָפּיע איבער אַלץ פֿאַר איר. אויב איר נאָר גערופן מאַללאָק ווידער, ווי איך האָבן אַ בלאָק פון 10 ביטעס. איצט איך דאַרפֿן אַ בלאָק פון 20 ביטעס, אַזוי אויב איך מאַללאָק 20 ביטעס, דעמאָלט איך האָבן צו מאַניואַלי קאָפּיע איבער די 10 ביטעס פון דער ערשטער זאַך אין די רגע זאַך און דעמאָלט פֿרייַ דער ערשטער זאַך. רעאַללאָק וועט שעפּן אַז פֿאַר איר. נאָטיץ די כסימע איז געגאנגען צו זייַן פּאָסל *, וואָס איז נאָר אומגעקערט אַ טייַטל צו די בלאָק פון זכּרון, דעמאָלט פּאָסל * פּטר. איר קענען טראַכטן פון פּאָסל * ווי אַ דזשאַנעריק טייַטל. בכלל, איר קיינמאָל האַנדלען מיט פּאָסל *, אָבער מאַללאָק איז אומגעקערט אַ פּאָסל *, און דאַן עס ס נאָר געניצט ווי דאָס איז פאקטיש געגאנגען צו זייַן אַ טשאַר *. די פֿריִערדיקע פּאָסל * וואָס האט שוין אומגעקערט דורך מאַללאָק איז איצט געגאנגען צו זייַן דורכגעגאנגען צו רעאַללאָק, און דעמאָלט גרייס איז די נייַ נומער פון ביטעס איר ווילן צו אַלאַקייט, אַזוי דיין נייַ קאַפּאַציטעט. איך וועט געבן איר אַ פּאָר מינוט, און טאָן עס אין אונדזער פּלאַץ. אָנהייבן מיט רעוויסיאָן 1. איך וועט האַלטן איר נאָך אַלעווייַ וועגן גענוג צייַט צו מאַכשער שטופּן, און דעמאָלט איך וועט געבן איר אנדערן ברעכן צו טאָן קנאַל. אבער עס טאַקע איז נישט אַז פיל קאָד אין אַלע. די מערסט קאָד איז מיסטאָמע די יקספּאַנדינג שטאָפּן, יקספּאַנדינג די קאַפּאַציטעט. אָוקיי, קיין דרוק צו זייַן גאָר געטאן, אָבער ווי לאַנג ווי איר פילן ווי איר ניטאָ אויף דער רעכט דרך, אַז ס 'גוט. טוט ווער עס יז האָבן קיין קאָד זיי פילן באַקוועם מיט מיר פּולינג אַרויף? יאָ, איך וועל, אָבער טוט ווער עס יז האָבן קיין קאָד איך קענען ציען אַרויף? אָוקיי, קענען איר אָנהייב, היט אים, וועלכער עס איז? איך שטענדיק פאַרגעסן אַז שריט. אָוקיי, זוכן בייַ שטופּן, טאָן איר ווילן צו דערקלערן דיין קאָד? [תּלמיד] ערשטער פון אַלע, איך געוואקסן די גרייס. איך טרעפן אפֿשר איך זאָל האָבן וואָס-סייַ ווי סייַ, איך געוואקסן די גרייס, און איך זען אויב עס ס ווייניקער ווי די קאַפּאַציטעט. און אויב עס ס ווייניקער ווי די קאַפּאַציטעט, איך לייג צו די מענגע אַז מיר שוין האָבן. און אויב עס ס נישט, איך מערן די קאַפּאַציטעט דורך 2, און איך ריאַלאַקייט די סטרינגס מענגע צו עפּעס מיט אַ ביגער קאַפּאַציטעט גרייס איצט. און דעריבער אויב אַז פיילז, איך דערציילן די באַניצער און צוריקקומען פאַלש, און אויב עס ס פייַן, דעמאָלט איך שטעלן די שטריקל אין די נייַ אָרט. [ראָב בי] אויך באַמערקן אַז מיר געניצט אַ פייַן ביטוויסע אָפּעראַטאָר דאָ צו מערן דורך 2. געדענקען, לינקס שיפט איז שטענדיק געגאנגען צו זייַן געמערט דורך 2. רעכט שיפט איז צעטיילט דורך 2 ווי לאַנג ווי איר געדענקען אַז עס מיטל טיילן דורך 2 ווי אין אַ ינטעגער צעטיילט דורך 2. עס זאל טראַנגקייט אַ 1 דאָ אָדער דאָרט. אבער יבעררוק לינקס דורך 1 איז שטענדיק געגאנגען צו זייַן געמערט דורך 2, סייַדן איר לויפן די גווול פון די ינטעגער, און דאַן עס וועט נישט זייַן. א זייַט באַמערקונג. איך ווי צו טאָן-דעם איז נישט געגאנגען צו טוישן די קאָודינג קיין וועג כוואַצאָועווער, אָבער איך ווי צו טאָן עפּעס ווי דעם. עס פאקטיש איז געגאנגען צו מאַכן עס אַ ביסל מער. אפֿשר דאָס איז נישט די גאנץ פאַל צו ווייַזן דעם, אָבער איך ווי צו אָפּשניט עס אין די בלאַקס פון- אָוקיי, אויב דעם אויב כאַפּאַנז, דאַן איך בין געגאנגען צו טאָן עפּעס, און דעריבער די פֿונקציע איז געטאן. איך טאָן ניט דאַרפֿן צו דעמאָלט מעגילע מיין אויגן אַלע די וועג אַראָפּ די פֿונקציע צו זען וואָס כאַפּאַנז נאָך די אַנדערש. עס ס אויב דאָס אויב כאַפּאַנז, דעמאָלט איך נאָר צוריקקומען. עס אויך האט די פייַן צוגעגעבן נוץ פון אַלץ ווייַטער פון דעם איז איצט שיפטיד לינקס אַמאָל. איך ניט מער דאַרפֿן צו-אויב איר אלץ לעבן ראַדיקיאַלאַסלי לאַנג שורות, דעמאָלט יענע 4 ביטעס קענען העלפן, און אויך די מער לינקס עפּעס איז, די ווייניקער אָוווערכוועלמד איר פילן אויב ווי-אָוקיי, איך האב צו געדענקען איך בין דערווייַל אין אַ בשעת שלייף ין פון אַן אַנדערש ין פון אַ פֿאַר שלייף. ערגעץ איר קענען טאָן דעם צוריקקומען מיד, איך מין פון ווי. עס ס טאָוטאַלי אַפּשאַנאַל און נישט דערוואַרט אין קיין וועג. [תּלמיד] זאָל עס זייַן אַ גרייס - אין די פאַרלאָזן צושטאַנד? די פאַרלאָזן צושטאַנד דאָ איז מיר אַנדערש צו רעאַללאָק, אַזוי יאָ. נאָטיץ ווי אין די פאַרלאָזן צושטאַנד, מאַשמאָעס, סייַדן מיר פֿרייַ שטאָפּן שפּעטער, מיר רע שטענדיק געגאנגען צו פאַרלאָזן קיין ענין ווי פילע מאל מיר פּרובירן צו שטופּן עפּעס. אויב מיר האַלטן פּושינג, מיר האַלטן ינקרעמענטינג גרייס, אַפֿילו כאָטש מיר זענען נישט פּאַטינג עפּעס אַנטו דעם אָנלייגן. יוזשאַוואַלי מיר טאָן ניט ינקראַמאַנט די גרייס ביז נאָך מיר האָבן הצלחה לייגן עס אויף די אָנלייגן. מיר וואָלט טאָן עס, זאָגן, יעדער דאָ און דאָ. און דעריבער אַנשטאָט פון געזאגט ס.סיזע ≤ קאַפּאַציטעט, עס ס ווייניקער ווי קאַפּאַציטעט, בלויז ווייַל מיר אריבערגעפארן ווו אַלץ איז געווען. און געדענקען, דער נאָר אָרט אַז מיר קען עפשער צוריקקומען פאַלש איז דאָ, ווו רעאַללאָק אומגעקערט נאַל, און אויב איר פּאַסירן צו געדענקען נאָרמאַל טעות, אפֿשר איר זאל באַטראַכטן דעם אַ פאַל ווו איר ווילן צו דרוקן אַ נאָרמאַל טעות, אַזוי פפּרינטף סטדערר אַנשטאָט פון נאָר דרוקן גלייַך צו נאָרמאַל אויס. ווידער, אַז ס 'נישט אַ דערוואַרטונג, אָבער אויב עס ס אַ טעות, טיפּ פּרינטף, דעמאָלט איר זאל וועלן צו מאַכן עס דרוקן צו נאָרמאַל טעות אַנשטאָט פון נאָרמאַל אויס. ווער עס יז האָבן עפּעס אַנדערש צו טאָן? יא. [תּלמיד] קען איר גיין איבער די [ינאָדאַבאַל]? [ראָב בי] יא, די פאַקטיש בינאַרינעסס פון עס אָדער נאָר וואָס עס איז? [תּלמיד] אזוי איר מערן עס דורך 2? [ראָב בי] יאָ, בייסיקלי. אין ביינערי לאַנד, מיר שטענדיק האָבן אונדזער שטעלן פון דידזשאַץ. שיפטינג דעם לינקס דורך 1 בייסיקלי ינסערץ עס דאָ בייַ די רעכט זייַט. צוריק צו דעם, נאָר רימעמבערינג אַז אַלץ אין ביינערי איז אַ מאַכט פון 2, אַזוי דעם רעפּראַזענץ 2 צו דעם 0, דעם 2 צו די 1, דעם 2 צו די 2. דורך ינסערטינג אַ 0 צו די רעכט זייַט איצט, מיר נאָר יבעררוק אַלץ איבער. וואָס געניצט צו זייַן 2 צו דער 0 איז איצט 2 צו די 1, איז 2 צו די 2. די רעכט זייַט אַז מיר ינסערטאַד איז דאַווקע געגאנגען צו זייַן 0, וואָס מאכט זינען. אויב איר אלץ מערן אַ נומער דורך 2, עס ס ניט געגאנגען צו סוף אַרויף מאָדנע, אַזוי די 2 צו דעם 0 אָרט זאָל זייַן 0, און דאָס איז וואָס איך האַלב געווארנט וועגן איידער איז אויב איר טאָן פּאַסירן צו יבעררוק ווייַטער פון די נומער פון ביטן אין אַ ינטעגער, דעמאָלט דעם 1 איז געגאנגען צו סוף אַרויף געגאנגען אַוועק. אַז ס די בלויז זאָרג אויב איר פּאַסירן צו זייַן דילינג מיט טאַקע גרויס פעיקייטן. אבער בייַ אַז פונט, דעמאָלט איר ניטאָ דילינג מיט אַ מענגע פון ​​ביליאַנז פון זאכן, וואָס זאל ניט פּאַסיק אין זכּרון סייַ ווי סייַ. איצט מיר קענען באַקומען צו קנאַל, וואָס איז אַפֿילו גרינגער. איר קען טאָן עס ווי אויב איר פּאַסירן צו קנאַל אַ גאַנץ בינטל, און איצט איר ניטאָ בייַ האַלב קאַפּאַציטעט ווידער. איר קען רעאַללאָק צו ייַנשרומפּן די סומע פון ​​זכּרון איר האָבן, אָבער איר טאָן ניט האָבן צו זאָרג וועגן וואָס, אַזוי די בלויז רעאַללאָק פאַל איז געגאנגען צו זייַן גראָוינג זכּרון, קיינמאָל שרינגקינג זכּרון, וואָס איז געגאנגען צו מאַכן קנאַל סופּער גרינג. איצט קיוז, וואָס זענען געגאנגען צו זייַן ווי סטאַקס, אָבער די סדר אַז איר נעמען דאס אויס איז ריווערסט. די פּראָוטאַטיפּיקאַל בייַשפּיל פון אַ ריי איז אַ שורה, אַזוי איך טרעפן אויב איר זענען ענגליש, איך וואָלט האָבן געזאגט אַ פּראָוטאַטיפּיקאַל בייַשפּיל פון אַ ריי איז אַ ריי. אַזוי ווי אַ שורה, אויב איר ניטאָ דער ערשטער מענטש אין שורה, איר דערוואַרטן צו זייַן דער ערשטער מענטש אויס פון די שורה. אויב איר ניטאָ די לעצטע מענטש אין שורה, איר זענט געגאנגען צו זייַן די לעצטע מענטש סערוויסט. מיר רופן אַז פיפאָ מוסטער, וועראַז אָנלייגן איז ליפאָ מוסטער. יענע ווערטער זענען שיין וניווערסאַל. ווי סטאַקס און ניט ענלעך ערייז, קיוז טיפּיקלי טאָן ניט לאָזן צוטריט צו עלעמענטן אין דער מיטן. דאָ, אַ אָנלייגן, מיר האָבן שטופּן און קנאַל. דאָ, מיר פּאַסירן צו האָבן גערופן זיי ענקוועוע און דעקוועוע. איך האב אויך געהערט זיי גערופן שיפט און ונשיפט. איך ווע געהערט מענטשן זאָגן שטופּן און קנאַל צו אויך צולייגן צו קיוז. איך האב געהערט אַרייַנלייגן, באַזייַטיקן, אַזוי שטופּן און קנאַל, אויב איר זענט גערעדט וועגן סטאַקס, איר זענט פּושינג און פּאַפּינג. אויב איר ניטאָ גערעדט וועגן קיוז, איר געקענט קלייַבן די ווערטער איר ווילן צו נוצן פֿאַר ינסערשאַן און באַזייַטיקונג, און עס איז קיין העסקעמ - קולעם אויף וואָס עס זאָל זייַן גערופן. אבער דאָ, מיר האָבן ענקוועוע און דעקוועוע. איצט, די סטרוקט קוקט כּמעט יידעניקאַל צו דעם אָנלייגן סטרוקט. אבער מיר האָבן צו האַלטן שפּור פון קאָפּ. איך טרעפן עס זאגט אַראָפּ דאָ, אָבער וואָס טאָן מיר דאַרפֿן די קאָפּ? די פּראָוטאַטייפּס זענען בייסיקלי יידעניקאַל צו שטופּן און קנאַל. איר קענען טראַכטן פון אים ווי שטופּן און קנאַל. דער בלויז חילוק איז קנאַל איז אומגעקערט-אַנשטאָט פון די לעצטע, עס ס אומגעקערט די ערשטער. 2, 1, 3, 4, אָדער עפּעס. און דאָ ס דער אָנהייב. אונדזער ריי איז גאָר פול, אַזוי דאָרט ס פיר יסודות אין עס. דער סוף פון אונדזער ריי איז דערווייַל 2, און איצט מיר גיין צו אַרייַנלייגן עפּעס אַנדערש. ווען מיר ווילן צו אַרייַנלייגן אַז עפּעס אַנדערש, וואָס מיר האבן פֿאַר דעם אָנלייגן ווערסיע איז מיר עקסטענדעד אונדזער בלאָק פון זכּרון. וואָס איז די פּראָבלעם מיט דעם? [תּלמיד] איר באַוועגן דעם 2. וואָס איך געזאגט איידער וועגן דעם סוף פון דער ריי, דאָס טוט נישט מאַכן געפיל אַז מיר אָנהייבן בייַ 1, דעמאָלט מיר ווילן צו דעקוועוע 1, דעמאָלט דעקוועוע 3, דעמאָלט דעקוועוע 4, דעמאָלט דעקוועוע 2, דעמאָלט דעקוועוע דעם איין. מיר קענען ניט נוצן רעאַללאָק איצט, אָדער בייַ די זייער מינדסטער, איר האָבן צו נוצן רעאַללאָק אין אַ אַנדערש וועג. אבער איר מיסטאָמע זאָל ניט נאָר נוצן רעאַללאָק. איר זענט געגאנגען צו האָבן צו מאַניואַלי קאָפּיע דיין זכּרון. עס זענען צוויי פאַנגקשאַנז צו קאָפּיע זכּרון. עס ס מעמקאָפּי און מעממאָווע. איך בין דערווייַל לייענען דעם מענטש בלעטער צו זען וואָס מען איר ניטאָ געגאנגען צו ווילן צו נוצן. אָוקיי, מעמקאָפּי, די חילוק איז אַז מעמקאָפּי און מעממאָווע, איינער כאַנדאַלז דער פאַל ריכטיק ווו איר ניטאָ קאַפּיינג אין אַ געגנט וואָס כאַפּאַנז צו אָוווערלאַפּ די געגנט איר ניטאָ קאַפּיינג פון. מעמקאָפּי טוט ניט שעפּן עס. מעממאָווע טוט. איר קענען טראַכטן פון די פּראָבלעם ווי- לאָזן ס זאָגן איך ווילן צו צייכענען דעם באָכער, די פיר צו דעם באָכער איבער. אין די סוף, וואָס די מענגע זאָל קוקן ווי נאָך די קאָפּיע איז 2, 1, 2, 1, 3, 4, און דעמאָלט עטלעכע שטאָפּן אין די סוף. אבער דאָס איז אָפענגיק אויף די סדר אין וואָס מיר פאקטיש קאָפּיע, זינט אויב מיר טאָן ניט באַטראַכטן די פאַקט אַז די געגנט מיר רע קאַפּיינג אין אָוווערלאַפּס דער איינער מיר רע קאַפּיינג פון, דעמאָלט מיר זאל טאָן ווי אָנהייב דאָ, קאָפּיע די 2 אין דעם אָרט מיר וועלן צו גיין, דעריבער מאַך אונדזער פּוינטערז פאָרויס. איצט מיר רע געגאנגען צו זייַן דאָ און דאָ, און איצט מיר ווילן צו קאָפּיע דעם באָכער איבער דעם באָכער און מאַך אונדזער פּוינטערז פאָרויס. וואָס מיר רע געגאנגען צו סוף אַרויף געטינג איז 2, 1, 2, 1, 2, 1 אַנשטאָט פון די צונעמען 2, 1, 2, 1, 3, 4 ווייַל 2, 1 אָוווערראָוד דער אָריגינעל 3, 4. מעממאָווע כאַנדאַלז אַז ריכטיק. אין דעם פאַל, בייסיקלי נאָר שטענדיק נוצן מעממאָווע ווייַל עס כאַנדאַלז עס ריכטיק. עס בכלל טוט נישט דורכפירן קיין ערגער. דער געדאַנק איז אַנשטאָט פון סטאַרטינג פון דער אָנהייב און קאַפּיינג דעם וועג ווי מיר נאָר האט דאָ, עס סטאַרץ פון די סוף און קאפיעס אין, און אין אַז פאַל, איר קענען קיינמאָל האָבן אַ פּראָבלעם. עס איז קיין פאָרשטעלונג פאַרפאַלן. שטענדיק נוצן מעממאָווע. קיינמאָל זאָרג וועגן מעמקאָפּי. און אַז ס ווו איר ניטאָ געגאנגען צו האָבן צו סעפּעראַטלי מעממאָווע די אלנגעוויקלט-אַרום חלק פון דיין ריי. קיין וועריז אויב ניט גאָר געטאן. דאס איז מער שווער ווי אָנלייגן, שטופּן, און קנאַל. ווער עס יז האָבן קיין קאָד מיר קען אַרבעטן מיט? אפילו אויב גאָר דערענדיקט? [תּלמיד] יאָ, עס ס גאָר דערענדיקט, כאָטש. גאָר דערענדיקט איז פייַן ווי לאַנג ווי מיר-קענען איר ראַטעווען די רעוויזיע? איך פאַרגעסן אַז יעדער איין מאָל. אָוקיי, יגנאָרינג וואָס כאַפּאַנז ווען מיר דאַרפֿן צו רעסיזע זאכן. גאָר איגנאָרירן רעסיזע. דערקלערן דעם קאָד. איך בין קאָנטראָלירונג ערשטער פון אַלע אויב דער נומער איז ווייניקער ווי די קאָפּיע ערשטער פון אַלע און דעמאָלט נאָך וואָס, איך אַרייַנלייגן-איך נעמען קאָפּ + גרייס, און איך מאַכן זיכער עס ראַפּס אַרום די קאַפּאַציטעט פון די מענגע, און איך אַרייַנלייגן די נייַ שטריקל בייַ אַז שטעלע. דעמאָלט איך פאַרגרעסערן די גרייס און צוריקקומען אמת. [ראָב בי] דאס איז באשטימט איינער פון יענע פאלן ווו איר ניטאָ געגאנגען צו ווילן צו זייַן ניצן מאָד. קיין מין פון פאַל ווו איר האָבן ראַפּינג אַרום, אויב איר טראַכטן ראַפּינג אַרום, די באַלדיק געדאַנק זאָל זייַן מאָד. ווי אַ שנעל אַפּטאַמאַזיישאַן / מאַכן דיין קאָד איין שורה קירצער, איר באַמערקן אַז די ליניע מיד פאלגענדע דעם איין איז נאָר גרייס + +, אַזוי איר צונויפגיסן אַז אין דעם שורה, גרייס + +. איצט אַראָפּ דאָ, מיר האָבן דעם פאַל ווו מיר טאָן נישט האָבן גענוג זכּרון, אַזוי מיר זענען ינקריסינג אונדזער קאַפּאַציטעט דורך 2. איך טרעפן איר קען האָבן די זעלבע פּראָבלעם דאָ, אָבער מיר קענען איגנאָרירן אים איצט, ווו אויב איר אַנדערש צו פאַרגרעסערן דיין קאַפּאַציטעט, דעמאָלט איר ניטאָ געגאנגען צו ווילן צו פאַרמינערן דיין קאַפּאַציטעט דורך 2 ווידער. אן אנדער קורץ טאָן איז פּונקט ווי איר קענען טאָן + =, איר קענען אויך טאָן << =. כּמעט עפּעס קענען גיין איידער יקוואַלז, + =, | =, & =, << =. טשאַר * נייַ איז אונדזער נייַ בלאָק פון זכּרון. אָה, איבער דאָ. וואָס טוט מען טראַכטן וועגן דעם טיפּ פון אונדזער נייַ בלאָק פון זכּרון? [תּלמיד] עס זאָל זייַן טשאַר **. טראכטן צוריק צו אונדזער סטרוקט אַרויף דאָ, סטרינגס איז וואָס מיר זענען ריאַלאַקייטינג. מיר זענען געמאכט אַ גאַנץ נייַ דינאַמיש סטאָרידזש פֿאַר די יסודות אין די ריי. וואָס מיר רע געגאנגען צו זייַן אַסיינינג צו דיין סטרינגס איז וואָס מיר רע מאַללאָסינג רעכט איצט, און אַזוי נייַ איז געגאנגען צו זייַן אַ טשאַר **. עס ס געגאנגען צו זייַן אַ מענגע פון ​​סטרינגס. דעמאָלט וואָס איז די פאַל אונטער וואָס מיר רע געגאנגען צו צוריקקומען פאַלש? [תּלמיד] זאָל מיר זייַן טאן די טשאַר *? [ראָב בי] יא, גוט רופן. [תּלמיד] וואָס איז געווען וואָס? [ראָב בי] מיר געוואלט צו טאָן גרייס פון טשאַר * ווייַל מיר זענען ניט מער- דאָס וואָלט פאקטיש זייַן אַ זייער גרויס פּראָבלעם ווייַל סיזעאָף (טשאַר) וואָלט זייַן 1. סיזעאָף טשאַר * איז געגאנגען צו זייַן 4, אַזוי אַ פּלאַץ פון מאל ווען איר ניטאָ דילינג מיט ינץ, איר טענד צו באַקומען אַוועק מיט עס ווייַל גרייס פון ינט און גרייס פון ינט * אויף אַ 32-ביסל סיסטעם זענען געגאנגען צו זייַן די זעלבע זאַך. אבער דאָ, סיזעאָף (טשאַר) און סיזעאָף (טשאַר *) זענען איצט געגאנגען צו זייַן די זעלבע זאַך. וואָס איז די ומשטאַנד ווו מיר צוריקקומען פאַלש? [תּלמיד] ניו איז נאַל. יאָ, אויב נייַ איז נאַל, מיר צוריקקומען פאַלש, און איך בין געגאנגען צו וואַרפן אַראָפּ דאָ- [תּלמיד] [ינאָדאַבאַל] [ראָב בי] יאָ, דאָס איז פייַן. איר קען אָדער טאָן 2 מאל קאַפּאַציטעט אָדער קאַפּאַציטעט יבעררוק 1 און דעריבער בלויז שטעלן עס אַראָפּ דאָ אָדער וועלכער. מיר וועט טאָן עס ווי מיר האט עס. קאַפּאַציטעט >> = 1. און איר ניטאָ קיינמאָל געגאנגען צו האָבן צו זאָרג וועגן לוזינג די 1 'ס אָרט ווייַל איר לינקס שיפטיד דורך 1, אַזוי די 1 'ס אָרט איז דאַווקע אַ 0, אַזוי רעכט שיפטינג דורך 1, איר ניטאָ נאָך געגאנגען צו זייַן פייַן. [תּלמיד] צי איר דאַרפֿן צו טאָן וואָס פריער צוריקקומען? [ראָב בי] יא, דאָס מאכט לעגאַמרע קיין זינען. איצט יבערנעמען מיר רע געגאנגען צו סוף זיך אומגעקערט אמת צו דעם סוף. די וועג מיר רע געגאנגען צו טאָן די מעממאָוועס, מיר דאַרפֿן צו זייַן אָפּגעהיט מיט ווי מיר טאָן זיי. טוט ווער עס יז האָבן קיין פֿירלייגן פֿאַר ווי מיר טאָן זיי? דאָ ס אונדזער אָנהייב. ינעוואַטאַבלי, מיר ווילן צו אָנהייבן בייַ די אָנהייב ווידער און קאָפּי דאס אין פון דאָרט, 1, 3, 4, 2. ווי טאָן איר טאָן וואָס? ערשטער, איך האָבן צו קוקן בייַ די מענטש בלאַט פֿאַר מעממאָווע ווידער. מעממאָווע, סדר פון טענות איז שטענדיק וויכטיק. מיר וועלן אונדזער דעסטיניישאַן ערשטער, מקור רגע, גרייס דריט. עס זענען אַ פּלאַץ פון פאַנגקשאַנז וואָס פאַרקערט מקור און דעסטיניישאַן. דעסטיניישאַן, מקור טענדז צו זייַן קאָנסיסטענט עפּעס. מאַך, וואָס איז עס אומגעקערט? עס קערט אַ טייַטל צו דעסטיניישאַן, פֿאַר וועלכער סיבה איר זאל ווילן אַז. איך קענען בילד לייענען עס, אָבער מיר ווילן צו באַוועגן אין אונדזער דעסטיניישאַן. וואָס איז אונדזער דעסטיניישאַן געגאנגען צו זייַן? [תּלמיד] ניו. [ראָב בי] יא, און ווו זענען מיר קאַפּיינג פון? דער ערשטער זאַך מיר זענען קאַפּיינג איז דאָס 1, 3, 4. וואָס איז דער-דעם 1, 3, 4. וואָס איז די אַדרעס פון דעם 1? וואָס איז די אַדרעס פון אַז 1? [תּלמיד] [ינאָדאַבאַל] [ראָב בי] קאָפּ + דער אַדרעס פון דער ערשטער עלעמענט. ווי טאָן מיר באַקומען דער ערשטער עלעמענט אין דער מענגע? [תּלמיד] קיו. [ראָב בי] יא, ק.סטרינגס. געדענקען, דאָ, אונדזער קאָפּ איז 1. צירעווען עס. איך נאָר טראַכטן עס ס מאַדזשיקאַלי- דאָ, אונדזער קאָפּ איז 1. איך בין געגאנגען צו טוישן מיין קאָלירן אויך. און דאָ איז סטרינגס. דאס, מיר קענען אָדער שרייַבן עס ווי מיר האבן איבער דאָ מיט קעפ + ק.סטרינגס. א פּלאַץ פון מענטשן אויך שרייַבן עס & ק.סטרינגס [קאָפּ]. דאס איז ניט טאַקע קיין ווייניקער עפעקטיוו. איר זאל טראַכטן פון אים ווי איר זענט דערעפערענסינג עס און דעמאָלט געטינג די אַדרעס פון, אָבער דער קאַמפּיילער איז געגאנגען צו איבערזעצן עס צו וואָס מיר האבן פאר סייַ ווי סייַ, ק.סטרינגס + קאָפּ. אָדער וועג איר ווילן צו טראַכטן פון עס. און ווי פילע ביטעס טאָן מיר ווילן צו נאָכמאַכן? [תּלמיד] קאַפּאַסיטי - קאָפּ. קאַפּאַציטעט - קאָפּ. און דאַן איר קען שטענדיק שרייַבן אויס אַ בייַשפּיל צו רעכענען אויס אויב אַז ס רעכט. [תּלמיד] עס דאַרף צו זייַן צעטיילט דורך 2 דעמאָלט. יאָ, אַזוי איך טרעפן מיר קען נוצן גרייס. מיר נאָך האָבן גרייס זייַענדיק- ניצן גרייס, מיר האָבן גרייס גלייַך צו 4. אונדזער גרייס איז 4. אונדזער קאָפּ איז 1. מיר ווילן צו קאָפּיע די 3 עלעמענטן. אַז ס די מייושעוודיקייַט טשעק אַז גרייס - קאָפּ איז ריכטיק 3. און קומען צוריק דאָ, ווי מיר געזאגט פריער, אויב מיר געניצט קאַפּאַציטעט, דעמאָלט מיר 'ד האָבן צו טיילן דורך 2 ווייַל מיר ווע שוין דערוואַקסן אונדזער קאַפּאַציטעט, אַזוי אַנשטאָט, מיר רע געגאנגען צו נוצן גרייס. אַז קאפיעס אַז חלק. איצט, מיר דאַרפֿן צו נאָכמאַכן די אנדערע חלק, די חלק וואָס איז לינקס פון די אָנהייב. אַז ס 'געגאנגען צו מעממאָווע אין וואָס שטעלע? [תּלמיד] פּלוס גרייס - קאָפּ. יא, אַזוי מיר האָבן שוין קאַפּיד אין גרייס - קאָפּ ביטעס, און אַזוי ווו מיר ווילן צו נאָכמאַכן די רוען ביטעס איז נייַ און דעמאָלט גרייס מינוס-געזונט, די נומער פון ביטעס מיר ווע שוין קאַפּיד ין און דעמאָלט ווו זענען מיר קאַפּיינג פון? [תּלמיד] ק.סטרינגס [0]. [ראָב בי] יא, ק.סטרינגס. מיר קען אָדער טאָן & ק.סטרינגס [0]. דאס איז באטייטיק ווייניקער פּראָסט ווי דעם. אויב עס ס נאָר געגאנגען צו זייַן 0, דעמאָלט איר וועט טענד צו זען ק.סטרינגס. אַז ס ווו מיר רע קאַפּיינג פון. ווי פילע ביטעס טאָן מיר האָבן לינקס צו קאָפּיע? >> [תּלמיד] 10. רעכט. [תּלמיד] צי מיר האָבן צו מערן 5-10 מאל די גרייס פון די ביטעס אָדער עפּעס? יאָ, אַזוי דאָס איז ווו-וואָס פּונקט זענען מיר קאַפּיינג? [תּלמיד] [ינאָדאַבאַל] וואָס איז דער טיפּ פון די זאַך מיר רע קאַפּיינג? [תּלמיד] [ינאָדאַבאַל] יאָ, אַזוי די טשאַר * ס אַז מיר רע קאַפּיינג, מיר טאָן ניט וויסן ווו יענע זענען קומענדיק פון. נו, ווו זיי ניטאָ פּוינטינג צו, ווי די סטרינגס, מיר סוף אַרויף פּושינג עס אַנטו דער ריי אָדער ענקוועוינג אַנטו די ריי. ווו יענע זענען קומענדיק פון, מיר האָבן קיין געדאַנק. מיר נאָר דאַרפֿן צו האַלטן שפּור פון די טשאַר * ס זיך. מיר טאָן נישט וועלן צו קאָפּיע גרייס - קאָפּ ביטעס. מיר ווילן צו קאָפּיע גרייס - קאָפּ טשאַר * ס, אַזוי מיר רע געגאנגען צו מערן דעם דורך סיזעאָף (טשאַר *). זעלביקער אַראָפּ דאָ, קאָפּ * סיזעאָף (טשאַר *). [תּלמיד] וואָס וועגן [ינאָדאַבאַל]? דאס רעכט דאָ? [תּלמיד] ניין, ווייטער וואָס, די גרייס - קאָפּ. [ראָב בי] דאס רעכט דאָ? טייַטל אַריטמעטיק. ווי טייַטל אַריטמעטיק איז געגאנגען צו אַרבעט איז עס אויטאָמאַטיש מאַלטאַפּלייז דורך די גרייס פון דעם טיפּ וואָס מיר רע דילינג מיט. פּונקט ווי איבער דאָ, נייַ + (גרייס - קאָפּ) איז פּונקט עקוויוואַלענט צו & נייַ [גרייס - קאָפּ] ביז מיר דערוואַרטן אַז צו אַרבעטן ריכטיק, זינט אויב מיר רע דילינג מיט אַ ינט מענגע, דעמאָלט מיר טאָן ניט אינדעקס דורך ינט- אָדער אויב עס ס פון גרייס פון 5 און איר ווילן די 4 עלעמענט, דעמאָלט מיר אינדעקס אין די ינט מענגע [4]. איר דאָונט-[4] * גרייס פון ינט. אַז כאַנדאַלז עס אויטאָמאַטיש, און דעם פאַל איז ממש עקוויוואַלענט, אַזוי דער קאַנטיקער סינטאַקס איז נאָר געגאנגען צו זייַן קאָנווערטעד צו דעם ווי באַלד ווי איר צונויפנעמען. אַז ס 'עפּעס איר דאַרפֿן צו זייַן אָפּגעהיט פון וואָס ווען איר זענט אַדינג גרייס - קאָפּ איר זענט אַדינג נישט איינער ביטע. איר רע אַדינג איינער טשאַר *, וואָס קענען זייַן איינער ביטעס אָדער וועלכער. אנדערע שאלות? אָוקיי, דעקוועוע איז געגאנגען צו זייַן גרינגער. איך וועט געבן איר אַ מינוט צו מאַכשער. אָה, און איך טרעפן דעם איז די זעלבע סיטואַציע ווו וואָס די ענקוועוע פאַל, אויב מיר רע ענקוועוינג נאַל, אפֿשר מיר ווילן צו שעפּן עס, אפֿשר מיר טאָן ניט. מיר וועלן נישט טאָן עס ווידער דאָ, אָבער זעלבע ווי אונדזער אָנלייגן פאַל. אויב מיר ענקוועוע נאַל, מיר זאל וועלן צו דיסריגאַרד עס. ווער עס יז האָבן עטלעכע קאָד איך קענען ציען אַרויף? [תּלמיד] איך נאָר האָבן דעקוועוע. ווערסיע 2 איז אַז-אָוקיי. איר ווילן צו דערקלערן? [תּלמיד] ערשטער, איר מאַכן זיכער דאָרט ס 'עפּעס אין דער ריי און אַז די נומער איז געגאנגען אַראָפּ דורך 1. איר דאַרפֿן צו טאָן וואָס, און דאַן איר צוריקקומען די קאָפּ און דעריבער מאַך די קאָפּ אַרויף 1. אָוקיי, אַזוי עס איז אַ ווינקל פאַל מיר האָבן צו באַטראַכטן. יאָ. [תּלמיד] אויב דיין קאָפּ איז בייַ די לעצטע עלעמענט, דעמאָלט איר טאָן ניט וועלן קאָפּ צו פונט אַרויס פון די מענגע. יאָ, אַזוי ווי באַלד ווי קאָפּ היץ דער סוף פון אונדזער מענגע, ווען מיר דעקוועוע, אונדזער קאָפּ זאָל זייַן מאָדדעד צוריק צו 0. ליידער, מיר קענען נישט טאָן, אז אין איין שריט. איך טרעפן די וועג איך 'ד מיסטאָמע פאַרריכטן עס איז דאָס איז געגאנגען צו זייַן אַ טשאַר *, וואָס מיר רע אומגעקערט, וועלכער דיין בייַטעוודיק נאָמען וויל צו זייַן. דעמאָלט מיר ווילן צו מאָד קאָפּ דורך אונדזער קאַפּאַציטעט און דעמאָלט צוריקקומען רעט. א פּלאַץ פון מענטשן דאָ זיי זאל טאָן- דאָס איז די פאַל פון-יול זען מען טאָן אויב קאָפּ איז גרעסער ווי קאַפּאַציטעט, טאָן קאָפּ - קאַפּאַציטעט. און אַז ס נאָר ארבעטן אַרום וואָס מאָד איז. קאָפּ מאָד = קאַפּאַציטעט איז פיל קלינער פון אַ ראַפּינג אַרום ווי אויב קאָפּ גרעסער ווי קאַפּאַציטעט קאָפּ - קאַפּאַציטעט. שאלות? אָוקיי, די לעצטע זאַך מיר האָבן לינקס איז אונדזער לינגקט רשימה. איר זאל זייַן געניצט צו עטלעכע פון ​​די לינגקט רשימה אָפּפירונג אויב איר האט לינגקט רשימות אין דיין האַש טישן, אויב איר האט אַ האַש טיש. איך שטארק רעקאָמענדירן טאן אַ האַש טיש. איר זאל האָבן שוין געטאן אַ טריי, אָבער פרוווט זענען מער שווער. אין טעאָריע, זיי ניטאָ אַסימפּטאָטיקאַללי בעסער. אבער נאָר קוק אין די גרויס ברעט, און פרוווט קיינמאָל טאָן בעסער, און זיי נעמען זיך מער זכּרון. אַלץ וועגן פרוווט ענדס אַרויף זייַענדיק ערגער פֿאַר מער אַרבעט. עס ס וואָס דוד מאַלאַן ס לייזונג שטענדיק איז איז ער שטענדיק הודעות זייַן טריי לייזונג, און לאָזן ס זען ווו ער דערווייַל איז. וואָס איז ער אונטער, דוד דזש? ער ס # 18, אַזוי אַז ס 'נישט טעראַבלי שלעכט, און אַז ס 'געגאנגען צו זייַן איינער פון די בעסטער פרוווט איר קענען טראַכטן פון אָדער איינער פון די בעסטער פרוווט פון אַ טריי. איז עס נישט אַפֿילו זייַן אָריגינעל לייזונג? איך פילן ווי טריי סאַלושאַנז טענד צו זייַן מער אין דעם קייט פון באַראַן באַניץ. גיי אַראָפּ צו די זייער שפּיץ, און באַראַן באַניץ איז אין די איין דידזשאַץ. גיי אַראָפּ צו די דנאָ, און דאַן איר אָנהייב געזען פרוווט ווו איר באַקומען לעגאַמרע מאַסיוו באַראַן באַניץ, און פרוווט זענען מער שווער. ניט לעגאַמרע ווערט עס אָבער אַ בילדונגקרייז דערפאַרונג אויב איר האט איינער. די לעצטע זאַך איז אונדזער לינגקט רשימה, און די דרייַ זאכן, סטאַקס, קיוז, און לינגקט רשימות, קיין צוקונפֿט זאַך איר אלץ טאָן אין קאָמפּיוטער וויסנשאַפֿט וועט יבערנעמען איר האָבן פאַמיליעראַטי מיט די זאכן. זיי זענען פּונקט אַזוי פונדאַמענטאַל צו אַלץ. לינגקט רשימות, און דאָ מיר האָבן אַ יינציקווייַז לינגקט רשימה איז געגאנגען צו זייַן אונדזער ימפּלאַמענטיישאַן. וואָס טוט יינציקווייַז לינגקט מיינען ווי קעגן צו דאַבלי לינגקט? יא. [תּלמיד] עס נאָר ווייזט צו דער ווייַטער טייַטל אלא ווי צו די פּוינטערז, ווי דער איינער פּריסידינג עס און דער איינער נאָך אים. יאָ, אַזוי אין בילד פֿאָרמאַט, וואָס האט איך נאָר טאָן? איך האב צוויי זאכן. איך האָבן בילד און בילד. אין בילד פֿאָרמאַט, אונדזער יינציקווייַז לינגקט רשימות, ינעוואַטאַבלי, מיר האָבן עטלעכע מין פון טייַטל צו די קאָפּ פון אונדזער רשימה, און דעמאָלט ין אונדזער רשימה, מיר נאָר האָבן פּוינטערז, און אפֿשר דאָס ווייזט צו נאַל. עס ס געגאנגען צו זייַן דיין טיפּיש צייכענונג פון אַ יינציקווייַז לינגקט רשימה. א דאַבלי לינגקט רשימה, איר קענען גיין קאַפּויער. אויב איך געבן איר קיין נאָדע אין דער רשימה, דעמאָלט איר קענען דאַווקע באַקומען צו קיין אנדערע נאָדע אין דער רשימה אויב עס איז אַ דאַבלי לינגקט רשימה. אבער אויב איך באַקומען איר די דריט נאָדע אין דער רשימה און עס ס אַ יינציקווייַז לינגקט רשימה, קיין וועג איר ניטאָ אלץ געגאנגען צו באַקומען צו דער ערשטער און רגע נאָודז. און דאָרט ס בענעפיטן און דעטרימענץ, און מען קלאָר ווי דער טאָג איין איז איר נעמען אַרויף מער נומער, און איר האָבן צו האַלטן שפּור פון ווו די זאכן זענען פּוינטינג איצט. אבער מיר נאָר זאָרגן וועגן יינציקווייַז לינגקט. א ביסל זאכן מיר רע געגאנגען צו האָבן צו מאַכשער. דיין טיפּעדעף סטרוקט נאָדע, ינט איך: סטרוקט נאָדע * ווייַטער; נאָדע. אַז טיפּעדעף זאָל זייַן פארברענט אין דיין מחשבות. קוויז 1 זאָל זייַן ווי געבן אַ טיפּעדעף פון אַ לינגקט רשימה נאָדע, און איר זאָל זייַן ביכולת צו מיד קאָטשערעס ונ לאָפּעטעס אַז אַראָפּ אָן אַפֿילו טראכטן וועגן אים. איך טרעפן אַ פּאָר פראגעס, וואָס טאָן מיר דאַרפֿן סטרוקט דאָ? פארוואס קענען נישט מיר זאָגן נאָדע *? [תּלמיד] [ינאָדאַבאַל] יאָ. דער בלויז זאַך אַז דיפיינז אַ נאָדע ווי אַ זאַך איז די טיפּעדעף זיך. אבער ווי פון דעם פונט, ווען מיר רע מין פון פּאַרסינג דורך דעם סטרוקט נאָדע דעפֿיניציע, מיר האָבן נישט פאַרטיק אונדזער טיפּעדעף נאָך, אַזוי זינט די טיפּעדעף האט נישט פאַרטיק, נאָדע טוט נישט עקזיסטירן. אבער סטרוקט נאָדע טוט, און דאָס נאָדע אין דאָ, דאָס קען אויך זייַן גערופן עפּעס אַנדערש. דאס קען זייַן גערופן ען. עס קען זייַן גערופן לינגקט רשימה נאָדע. עס קען זייַן גערופן עפּעס. אבער דעם סטרוקט נאָדע דאַרף צו זייַן גערופן די זעלבע זאַך ווי דעם סטרוקט נאָדע. וואָס איר רופן דעם האט צו אויך זייַן דאָ, און אַזוי אַז אויך ענטפֿערס די רגע פונט פון די קשיא וואָס איז וואָס-אַ פּלאַץ פון מאל ווען איר זען סטרוקץ און טיפּעדעפס פון סטרוקץ, איר וועט זען אַנאָנימאָוס סטרוקץ ווו איר וועט פּונקט זען טיפּעדעף סטרוקט, ימפּלאַמענטיישאַן פון סטרוקט, ווערטערבוך, אָדער וועלכער. פארוואס דאָ טאָן מיר דאַרפֿן צו זאָגן נאָדע? פארוואס קענען נישט עס זייַן אַ אַנאָנימאָוס סטרוקט? עס ס כּמעט די זעלבע ענטפער. [תּלמיד] איר דאַרפֿן צו אָפּשיקן צו עס ין די סטרוקט. יאָ, ין די סטרוקט, איר דאַרפֿן צו אָפּשיקן צו די סטרוקט זיך. אויב איר טאָן ניט געבן די סטרוקט אַ נאָמען, אויב עס ס אַ אַנאָנימאָוס סטרוקט, איר קענען נישט אָפּשיקן צו עס. און לעצטע אָבער נישט מינדסטער-די זאָל אַלע זייַן עפּעס סטרייטפאָרווערד, און זיי זאָל העלפן איר פאַרשטיין אויב איר ניטאָ שרייבן דעם אַראָפּ אַז איר ניטאָ טאן עפּעס פאַלש אויב די סאָרץ פון דאס טאָן ניט מאַכן זינען. לעצטע אָבער נישט מינדסטער, וואָס טוט דאָס האָבן צו זייַן סטרוקט נאָדע *? פארוואס קענען נישט עס נאָר זייַן סטרוקט נאָדע ווייַטער? [תּלמיד] פּוינטער צו דער ווייַטער סטרוקט. אַז ס ינעוואַטאַבלי וואָס מיר ווילן. פארוואס קען עס קיינמאָל זייַן סטרוקט נאָדע ווייַטער? וואָס טוט עס האָבן צו זייַן סטרוקט נאָדע * ווייַטער? יאָ. [תּלמיד] עס ס ווי אַ ינפאַנאַט שלייף. יאָ. [תּלמיד] עס וואָלט אַלע זייַן אין איין. יאָ, נאָר טראַכטן פון ווי מיר וואָלט טאָן גרייס פון אָדער עפּעס. גרייס פון אַ סטרוקט איז בייסיקלי + אָדער - עטלעכע מוסטער דאָ אָדער דאָרט. עס ס בייסיקלי געגאנגען צו זייַן די סאַכאַקל פון די סיזעס פון די זאכן אין די סטרוקט. דאס רעכט דאָ, אָן טשאַנגינג עפּעס, די נומער איז געגאנגען צו זייַן גרינג. גרייס פון סטרוקט נאָדע איז געגאנגען צו זייַן גרייס פון איך + גרייס פון ווייַטער. גרייס פון איך איז געגאנגען צו זייַן 4. גרייס פון ווייַטער איז געגאנגען צו זייַן 4. גרייס פון סטרוקט נאָדע איז געגאנגען צו זייַן 8. אויב מיר טאָן ניט האָבן דעם *, טראכטן פון סיזעאָף, דעמאָלט סיזעאָף (איך) איז געגאנגען צו זייַן 4. גרייס פון סטרוקט נאָדע ווייַטער איז געגאנגען צו זייַן גרייס פון איך + גרייס פון סטרוקט נאָדע ווייַטער + גרייס פון איך + גרייס פון סטרוקט נאָדע ווייַטער. עס וואָלט זייַן אַ ינפאַנאַט רעקורסיאָן פון נאָודז. דאס איז וואָס דאָס איז ווי זאכן האָבן צו זייַן. ווידער, באשטימט מעמערייז אַז, אָדער בייַ מינדסטער פֿאַרשטיין עס גענוג אַז איר קענען זייַן ביכולת צו סיבה דורך וואָס עס זאָל קוקן ווי. די זאכן מיר רע געגאנגען צו ווילן צו מאַכשער. אויב לענג פון די רשימה- איר קען אָפּנאַרן און האַלטן אַרום אַ גלאבאלע לענג אָדער עפּעס, אָבער מיר ניטאָ ניט געגאנגען צו טאָן וואָס. מיר רע געגאנגען צו ציילן די לענג פון די רשימה. מיר האָבן כּולל, אַזוי אַז ס בייסיקלי ווי אַ זוכן, אַזוי מיר האָבן אַ לינגקט רשימה פון ינטאַדזשערז צו זען אויב דאָס ינטעגער איז אין די לינגקט רשימה. פּרעפּענד איז געגאנגען צו אַרייַנלייגן בייַ די אָנהייב פון די רשימה. צוגעבן איז געגאנגען צו אַרייַנלייגן בייַ די סוף. ינסערט_סאָרטעד איז געגאנגען צו אַרייַנלייגן אין די אויסגעשטעלט שטעלע אין דער רשימה. ינסערט_סאָרטעד מין פון אַסומז אַז איר קיינמאָל געניצט פּרעפּענד אָדער צוגעבן אין שלעכט וועגן. ינסערט_סאָרטעד ווען איר ניטאָ ימפּלאַמענינג ינסערט_סאָרטעד- לאָזן ס זאָגן מיר האָבן אונדזער לינגקט רשימה. דאס איז וואָס עס דערווייַל קוקט ווי, 2, 4, 5. איך ווילן צו אַרייַנלייגן 3, אַזוי ווי לאַנג ווי די רשימה זיך איז שוין אויסגעשטעלט, עס ס 'גרינג צו געפֿינען ווו 3 געהערט. איך אָנהייבן בייַ 2. אָוקיי, 3 איז גרעסער ווי 2, אַזוי איך ווילן צו האַלטן געגאנגען. אָה, 4 איז אויך גרויס, אַזוי איך וויסן 3 איז געגאנגען צו גיין אין צווישן 2 און 4, און איך האָבן צו פאַרריכטן פּוינטערז און אַלע וואָס שטאָפּן. אבער אויב מיר האבן נישט שטרענג נוצן ינסערט_סאָרטעד, ווי לאָזן ס נאָר זאָגן איך פּרעפּענד 6, דעריבער מיין לינגקט רשימה איז געגאנגען צו ווערן דעם. עס איצט מאכט קיין זינען, אַזוי פֿאַר ינסערט_סאָרטעד, איר קענען נאָר יבערנעמען אַז די רשימה איז אויסגעשטעלט, אַפֿילו כאָטש אַפּעריישאַנז עקסיסטירן וואָס קענען גרונט עס צו נישט זייַן אויסגעשטעלט, און אַז ס עס. געפֿינען אַ נוציק אַרייַנלייגן-אַזוי יענע זענען די הויפּט זאכן איר ניטאָ געגאנגען צו האָבן צו מאַכשער. פֿאַר איצט, נעמען אַ מינוט צו טאָן לענג און כּולל, און יענע זאָל זייַן לעפיערעך שנעל. נעאַרינג קלאָוזינג צייַט, אַזוי ווער עס יז האָבן עפּעס פֿאַר לענג אָדער כּולל? זיי ניטאָ געגאנגען צו זייַן כּמעט יידעניקאַל. [תּלמיד] לענג. זאל ס זען, רעוויזיע. אָוקיי. איר ווילן צו דערקלערן? [תּלמיד] איך נאָר מאַכן אַ טייַטל נאָדע און ינישאַלייז עס צו ערשטער, וואָס איז אונדזער גלאבאלע בייַטעוודיק, און דעמאָלט איך טשעק צו זען אויב עס ס נאַל אַזוי איך טאָן ניט באַקומען אַ סעג שולד און צוריקקומען 0 אויב אַז ס דער פאַל. אַנדערש, איך שלייף דורך, בעכעסקעם שפּור פון ין ינטעגער ווי פילע מאל איך ווע געליינט דער ווייַטער עלעמענט פון דער רשימה און אין דער זעלביקער ינקראַמאַנט אָפּעראַציע אויך צוטריט אַז פאַקטיש עלעמענט, און דעמאָלט איך קאַנטיניואַסלי מאַכן די טשעק צו זען אויב עס ס נאַל, און אויב עס ס נאַל, דעמאָלט עס אַבאָרץ און נאָר קערט די נומער פון עלעמענטן איך ווע געליינט. [ראָב בי] טוט ווער עס יז האָבן קיין באַמערקונגען אויף עפּעס? דאס קוקט פייַן קערעקטנאַס קלוג. [תּלמיד] איך טאָן ניט טראַכטן איר דאַרפֿן די נאָדע == נאַל. יאָ, אַזוי אויב נאָדע == נאַל צוריקקומען 0. אבער אויב נאָדע == נאַל דעמאָלט דעם-אָה, ​​עס איז אַ קערעקטנאַס אַרויסגעבן. עס איז געווען נאָר איר ניטאָ אומגעקערט איך, אָבער עס ס נישט אין פאַרנעם רעכט איצט. איר נאָר דאַרפֿן ינט איך, אַזוי איך = 0. אבער אויב נאָדע איז נאַל, דעמאָלט איך איז נאָך געגאנגען צו זייַן 0, און מיר רע געגאנגען צו צוריקקומען 0, אַזוי דעם פאַל איז יידעניקאַל. אן אנדער פּראָסט זאַך איז צו האַלטן די דעקלאַראַציע פון נאָדע ין פון די פֿאַר שלייף. איר קען זאָגן-טאַקע, ניט. זאל ס האַלטן עס ווי דעם. איך וואָלט מיסטאָמע שטעלן ינט איך = 0 דאָ, דעמאָלט נאָדע * נאָדע = ערשטער אין דאָ. און דאָס איז מיסטאָמע ווי-געטינג באַפרייַען פון דעם איצט. דאס איז מיסטאָמע ווי איך וואָלט האָבן געשריבן עס. איר קען אויך-קוקן בייַ אים ווי דעם. דאס פֿאַר שלייף סטרוקטור רעכט דאָ זאָל זייַן כּמעט ווי נאַטירלעך צו איר ווי פֿאַר ינט איך = 0 איך איז ווייניקער ווי לענג פון מענגע איך + +. אויב אַז ס ווי איר יטעראַטע איבער אַ מענגע, דאָס איז ווי איר יטעראַטע איבער אַ לינגקט רשימה. דאס זאָל זייַן רגע נאַטור אין עטלעכע פונט. מיט וואָס אין גייַסט, דעם איז געגאנגען צו זייַן כּמעט די זעלבע זאַך. איר רע געגאנגען צו ווילן צו יטעראַטע איבער אַ לינגקט רשימה. אויב די נאָדע-איך האָבן קיין געדאַנק וואָס די ווערט איז גערופן. נאָדע איך. אויב די ווערט בייַ אַז נאָדע = איך צוריקקומען אמת, און אַז ס עס. נאָטיץ אַז דער בלויז וועג מיר אלץ צוריקקומען פאַלש איז אויב מיר יטעראַטע איבער די גאנצע לינגקט רשימה און קיינמאָל צוריקקומען אמת, אַזוי אַז ס וואָס דאָס טוט. ווי אַ זייַט טאָן-מיר מיסטאָמע וועט נישט באַקומען צו צוגעבן אָדער פּרעפּענד. שנעל לעצטע טאָן. אויב איר זען די סטאַטיק קיווערד, אַזוי לאָזן ס זאָגן סטאַטיק ינט ציילן = 0, דעמאָלט מיר טאָן ציילן + +, איר קענען בייסיקלי טראַכטן פון אים ווי אַ גלאבאלע בייַטעוודיק, אַפֿילו כאָטש איך נאָר געזאגט דאָס איז ניט ווי מיר רע געגאנגען צו מאַכשער לענג. איך בין טאן דעם דאָ, און דעמאָלט ציילן + +. קיין וועג מיר קענען אַרייַן אַ נאָדע אין אונדזער לינגקט רשימה מיר זענען ינקרעמענטינג אונדזער ציילן. די פונט פון דעם איז וואָס די סטאַטיק קיווערד מיטל. אויב איך נאָר האט ינט ציילן = 0 אַז וואָלט זייַן אַ רעגולער אַלט גלאבאלע בייַטעוודיק. וואָס סטאַטיק ינט ציילן מיטל איז אַז עס איז אַ גלאבאלע בייַטעוודיק פֿאַר דעם טעקע. עס איז אוממעגלעך פֿאַר עטלעכע אנדערע טעקע, ווי טראַכטן פון פּסעט 5, אויב איר האָט אנגעהויבן. איר האָבן ביידע ספּעללער.ק, און איר האָט דיקטיאָנאַרי.ק, און אויב איר נאָר דערקלערן אַ זאַך גלאבאלע, דעמאָלט עפּעס אין ספּעללער.ק קענען זייַן געליינט אין דיקטיאָנאַרי.ק און וויצע ווערסאַ. גלאבאלע וועריאַבאַלז זענען צוטריטלעך דורך קיין. C טעקע, אָבער סטאַטיק וועריאַבאַלז זענען בלויז צוטריטלעך פון ין דער טעקע זיך, אַזוי ין פון רעגע טשעקער אָדער ין פון דיקטיאָנאַרי.ק, דאָס איז מין פון ווי איך וואָלט דערקלערן מיין בייַטעוודיק פֿאַר די גרייס פון מיין מענגע אָדער די גרייס פון מיין נומער פון ווערטער אין דער ווערטערבוך. זינט איך טאָן נישט וועלן צו דערקלערן אַ גלאבאלע בייַטעוודיק אַז ווער עס יז האט צוטריט צו, איך טאַקע בלויז זאָרגן וועגן אים פֿאַר מיין אייגן צוועקן. די גוט זאַך וועגן דעם איז אויך די גאנצע נאָמען צונויפשטויס שטאָפּן. אויב עטלעכע אנדערע טעקע פרוווט צו נוצן אַ גלאבאלע בייַטעוודיק גערופן ציילן, דאס גיין זייער, זייער אומרעכט, אַזוי דעם נייסלי האלט דאס זיכער, און נאָר איר קענען צוטריט עס, און קיין איינער אַנדערש קענען, און אויב עמעצער אַנדערש דערקלערט אַ גלאבאלע בייַטעוודיק גערופן ציילן, דעמאָלט עס וועט נישט אַרייַנמישנ זיך מיט דיין סטאַטיק בייַטעוודיק גערופן ציילן. אַז ס וואָס סטאַטיק איז. עס איז אַ טעקע גלאבאלע בייַטעוודיק. שאלות אויף עפּעס? אַלע שטעלן. ביי. [CS50.TV]