[Powered by Google Translate] [וואָך 6]
[דוד י מאַלאַן] [האַרוואַרד אוניווערסיטעט]
[דאס איז קס50.] [CS50.TV]
>> דאס איז קס50, און דאָס איז די אָנהייב פון וואָך 6,
אַזוי אַ פּאָר פון נייַ מכשירים זענען איצט פאַראַנען פֿאַר איר צו נעמען מייַלע פון,
דער ערשטער פון וואָס איז גערופן קס50 סטייל.
שאַנסן זענען אויב איר ניטאָ ווי מיר אָדער קיין פון דעם לערנען פעלאָוז,
איר ווע מיסטאָמע געזען אַ פּראָגראַם וועמענס נוסח קוקט אַ קליין עפּעס ווי דעם.
אפֿשר איר אָנהייב קאַטינג עטלעכע עקן שפּעט בייַ נאַכט, אָדער איר וועט האַנדלען מיט אים שפּעטער,
און דעמאָלט אַ טף אָדער CA קומט איבער בעשאַס אָפיס שעה.
דעמאָלט עס ס שווער פֿאַר אונדז צו לייענען.
נו, דאָס קאָד איז סינטאַקטיקאַללי ריכטיק, און עס וועט צונויפנעמען, און עס וועט פאקטיש לויפן.
אבער עס ס באשטימט נישט אַ 5 פֿאַר נוסח.
>> אבער איצט, אויב מיר גיין אין דעם Directory דאָ-
און באַמערקן אַז איך האב קאָנדיטיאָנס2.ק-
און איך לויפן דעם נייַ באַפֿעל, סטילע50, אויף דעם טעקע קאָנדיטיאָנס2.ק, אַרייַן,
באַמערקן אַז עס ס ינפאָרמד מיר אַז עס האט שוין סטיילייזד.
געדיט באמערקט אַז דער טעקע האט שוין געביטן אויף דיסק,
און אויב איך גיט רילאָוד, אַלע אייערע פּראָבלעמס זענען איצט אָטאַמייטיד.
[אַפּלאָדיסמענטן]
אַז ס איינער פון די זאכן מיר האט דעם אָפּרוטעג.
פאַרשטיין אַז עס איז ימפּערפיקט ווייַל עס זענען עטלעכע קאָד
אַז עס פשוט וועט נישט זייַן ביכולת צו סטייאַלייז בישליימעס,
אָבער פאַרשטיין דעם איז איצט אַ געצייַג איר קענען נעמען מייַלע פון
אויב נאָר צו ציכטיק אַרויף עטלעכע פון ​​די מער ערראַנטלי געשטעלט געגרייַזלט ברייסאַז און די ווי.
>> אבער מער קאַמפּעלינג איצט איז קס50 קוק.
מיט קס50 קוק, איר קענען פאקטיש דורכפירן די זעלבע קערעקטנאַס טעסץ
אויף דיין אייגן קאָד אַז דער לערנען פעלאָוז זענען ביכולת צו.
דאס איז אַ באַפֿעל שורה נוצן וואָס קומט איצט אין די אַפּפּליאַנסע
ווי באַלד ווי איר טאָן אַ ופּדאַטע50 ווי פּער
פּסעט 4 ספּעסאַפאַקיישאַנז, און איר נוצן עס יסענשאַלי ווי דעם.
איר לויפן די באַפֿעל טשעקק50.
דעמאָלט איר פאָרן אין אַ באַפֿעל שורה אַרגומענט, אָדער מער בכלל באקאנט ווי אַ באַשטימען אָדער אַ פאָן.
בכלל, דאס וואָס האָבן היפענס זענען גערופן אַ באַשטימען
צו אַ באַפֿעל שורה פּראָגראַם, אַזוי-C ספּעסאַפייז
די טשעקס וואָס איר ווילן צו לויפן.
>> די טעסץ אַז איר ווילן צו לויפן זענען יידענאַפייד יוניקלי דורך דעם שטריקל,
2012/פּסעט4/רעסיזע.
אין אנדערע ווערטער, אַז ס 'נאָר אַ אַרביטראַריש אָבער יינציק שטריקל
וואָס מיר נוצן צו יוניקלי ידענטיפיצירן פּסעט 4 ס קערעקטנאַס טעסץ.
און דאַן איר ספּעציפיצירן אַ פּלאַץ אפגעשיידט רשימה פון דער טעקעס אַז איר ווילן צו צופֿעליקער
צו קס50 קוק פֿאַר אַנאַליסיס.
פֿאַר בייַשפּיל, אויב איך גיין אין מיין לייזונג דאָ פֿאַר רעסיזע.ק-
לאָזן מיר עפענען זיך אַ ביגער וואָקזאַל פֿענצטער-
און איך גיין פאָרויס און לויפן לאָזן ס זאָגן טשעקק50-C 2012/פּסעט4/רעסיזע,
און דעמאָלט איך גיין פאָרויס און ספּעציפיצירן די נעמען פון די טעקעס,
רעסיזע.ק, און דעמאָלט שלאָגן אַרייַן, עס קאַמפּרעסאַז,
עס ופּלאָאַדס, עס טשעקס, און איך נאָר אַנדערש אַ גאַנץ בינטל פון טעסץ.
די איין אין רויט אין שפּיץ לינקס זאגט אַז רעסיזע.ק און במפּ עקזיסטירן.
וואָס איז די פּרובירן. וואָס איז די קשיא מיר געפרעגט.
און עס ס ומגליקלעך ווייַל די ענטפער איז געווען פאַלש.
די ווייַס טעקסט אונטן עס זאגט דערוואַרט במפּ.ה צו עקזיסטירן, און אַז ס 'פשוט מיין שולד.
איך Forgot צו צופֿעליקער עס, אַזוי איך דאַרפֿן צו צופֿעליקער ביידע טעקעס,
רעסיזע.ק און במפּ.ה.
אבער איצט באַמערקן אַלע פון ​​די אנדערע טעסץ זענען אין געל ווייַל זיי האָבן נישט לויפן,
און אַזוי די סמיילי פּנים איז ווערטיקאַל ווייַל ער ס ניט צופרידן אדער טרויעריק,
אָבער מיר האָבן צו צוריקשטעלן אַז אַרויסגעבן אין רויט פאר יענע אנדערע טשעקס וועט לויפן.
>> זאל מיר פאַרריכטן דעם.
זאל מיר פארגרעסער אויס און ריראַן דעם, דאָס מאָל מיט במפּ.ה אויך
אויף דעם באַפֿעל שורה, אַרייַן, און איצט אויב אַלע גייט גוט,
עס ס געגאנגען צו קאָנטראָלירן און דעמאָלט צוריקקומען אַ רעזולטאַט פון-האַלטן דיין אָטעם-
אַלע גרין, וואָס מיטל איך בין טאן טאַקע געזונט אויף פּסעט 4 אַזוי ווייַט.
איר קענען זען און אָפּלערנען פון די דיסקריפּטיוו טעקסט דאָ
פּונקט וואָס עס איז מיר טעסטעד.
מיר טעסטעד ערשטער טאָן די טעקעס עקזיסטירן?
מיר דעמאָלט טעסטעד טוט רעסיזע.ק צונויפנעמען?
דעמאָלט מיר טעסטעד טוט עס נישט רעסיזע אַ 1קס1-פּיקסעל במפּ ווען N, די רעסיזע פאַקטאָר, איז 1.
איצט, אויב איר האָבן קיין געדאַנק וואָס N איז, איר וועט אַמאָל איר ונטערטוקנ זיך אין פּסעט 4,
אָבער אַז פשוט איז אַ מייושעוודיקייַט טשעק צו מאַכן זיכער אַז איר ניטאָ ניט רעסיזינג
אַ בילד בייַ אַלע אויב די רעסיזע פאַקטאָר איז 1.
אויב, דורך קאַנטראַסט, עס רעסיזעס אַ 1קס1 פּיקסעל צו אַ 1קס1 פּיקסעל במפּ צו 2קס2 ריכטיק
ווען N איז 2, דעמאָלט סימילאַרלי, מייַן פארמען אַקאָרדינגלי.
>> אין קורץ, דאָס איז מענט צו, איינער, נעמען די אַריבער די פינגער
אויס פון די יקווייזשאַן רעכט איידער איר פאָרלייגן דיין פּסעט.
איר וועט וויסן פּונקט וואָס דיין טף וועט באַלד וויסן
ווען איר גיין וועגן סאַבמיטינג עטלעכע פון ​​די פּראָבלעם שטעלט,
און אויך די פּעדאַגאַדזשיקאַל מאָוטאַוויישאַן איז טאַקע צו שטעלן
די געלעגנהייט אין פראָנט פון איר אַזוי אַז ווען איר וויסן אַ פּריאָרי
אַז דאָרט ס באַגז אין דיין קאָד און טעסץ אַז ביסט נישט זייַענדיק דורכגעגאנגען,
איר קענען שטעלן אין מער עפעקטיוו צייַט אַרויף פראָנט צו סאָלווע יענע פּראָבלעמס
אלא ווי פאַרלירן ווייזט, באַקומען באַמערקונגען פון דיין טף,
און דאַן גיין, "אַ", ווי איך זאָל האָבן פיגיערד אַז אויס.
איצט בייַ מינדסטער דאָרט ס אַ געצייַג צו העלפן איר געפֿינען אַז.
עס ס ניט געגאנגען צו פונט אויס ווו די באַג איז, אָבער עס וועט זאָגן איר
וואָס איז סימפּטאַמאַטיק פון עס.
>> איצט פאַרשטיין די טעסץ זענען נישט דאַווקע יגזאָסטיוו.
נאָר ווייַל איר באַקומען אַ פאַרשטעלן פול פון גרין סמיילי פנימער
טוט נישט מיינען דיין קאָד איז גאנץ, אָבער עס טוט מיינען
אַז עס האט דורכגעגאנגען זיכער טעסץ פּריסקרייבד דורך די ספּעק.
מאל מיר וועלן נישט מעלדונג טשעקס.
פֿאַר בייַשפּיל, כודאַניט, איינער פון די אַספּעקץ פון פּסעט 4,
איז מין פון דיסאַפּוינטינג אויב מיר געבן איר
דער ענטפֿערן ווי צו וואָס עס איז, און דאָרט ס אַ נומער פון וועגן צו אַנטדעקן
ווער דער מענטש איז אין אַז רויט ראַש.
די ספּעק וועט שטענדיק ספּעציפיצירן אין דער צוקונפֿט פֿאַר פּסעט 5 פאָרויס
וואָס טשעקס עקסיסטירן פֿאַר איר.
איר וועט באַמערקן דאָרט ס דעם ווייַס URL אין די דנאָ.
פֿאַר איצט, דאָס איז נאָר דיאַגנאָסטיק רעזולטאַט.
אויב איר באַזוכן אַז URL, איר וועט באַקומען אַ גאַנץ בינטל פון משוגע, קריפּטיק אַרטיקלען
אַז איר ניטאָ באַגריסן צו קוקן דורך, אָבער עס ס מערסטנס פֿאַר דעם שטעקן
אַזוי אַז מיר קענען דיאַגנאָזירן און דעבוג באַגז אין טשעקק50 זיך.
>> אָן האַוועניש, לאָזן ס מאַך אויף צו ווו מיר לינקס אַוועק.
קס50 ביבליאָטעק מיר גענומען פֿאַר געגעבן פֿאַר עטלעכע וואָכן,
אָבער דעמאָלט לעצטע וואָך, מיר אנגעהויבן פּילינג צוריק איינער פון דעם לייַערס פון עס.
מיר אנגעהויבן פּאַטינג באַזונדער שטריקל אין טויווע פון ​​וואָס אַנשטאָט?
[סטודענטן] טשאַר.
טשאַר *, וואָס האט שוין אַ טשאַר * אַלע דעם צייַט,
אָבער איצט מיר טאָן ניט האָבן צו פאַרהיטן אַז עס ס אַ פאַקטיש דאַטן טיפּ שטריקל.
אלא, עס ס 'שוין אַ סינאָנים פון סאָרץ פֿאַר טשאַר *,
און אַ שטריקל איז אַ סיקוואַנס פון אותיות,
אַזוי וואָס טוט עס מאַכן זינען צו פאָרשטעלן סטרינגס ווי טשאַר * ס?
וואָס טוט אַ טשאַר * פאָרשטעלן אין דעם קאָנטעקסט פון דעם באַגריף פון אַ שטריקל?
יאָ. >> [תּלמיד] דער ערשטער כאַראַקטער.
גוט, די ערשטער כאַראַקטער, אָבער נישט גאַנץ דער ערשטער כאַראַקטער.
עס ס דער-[סטודענטן] אַדרעס.
גוט, די אַדרעס פון די ערשטער כאַראַקטער.
אַלע אַז ס נייטיק צו פאָרשטעלן אַ שטריקל אין אַ קאָמפּיוטער ס זכּרון
איז נאָר די יינציק אַדרעס פון זייַן זייער ערשטער ביטע.
איר טאָן ניט אַפֿילו האָבן צו וויסן ווי לאַנג עס איז
ווייַל ווי קענען איר רעכענען אַז אויס דינאַמיקאַללי?
[תּלמיד] סטרינג לענג.
איר קענען רופן שטריקל לענג, ויסגעצייכנט, אָבער ווי טוט שטריקל לענג אַרבעט?
וואָס טוט עס טאָן? יאָ.
[תּלמיד] האַלטן געגאנגען ביז איר באַקומען די נאַל כאַראַקטער.
יאָ, פּונקט, עס נאָר יטעראַטעס מיט אַ פֿאַר שלייף, בשעת שלייף,
וועלכער פון * צו די סוף, און דער סוף איז רעפּריזענטיד
דורך \ 0, די אַזוי-גערופן נול כאַראַקטער, נול,
ניט צו ווערן צעמישט מיט נאַל, וואָס איז אַ טייַטל,
וואָס וועט קומען אַרויף אין שמועס ווידער הייַנט.
>> מיר פּילד צוריק אַ שיכטע פון ​​געטינט, און דאַן מיר גענומען אַ קוק בייַ געצטרינג,
און צוריקרופן אַז ביידע פון ​​יענע פאַנגקשאַנז, אָדער טאַקע,
געצטרינג, איז געווען ניצן אַ געוויסע פֿונקציע
צו פאקטיש פּאַרס, וואָס איז, לייענען אָדער פונאַנדערקלייַבן, דעם באַניצער 'ס אַרייַנשרייַב.
און וואָס איז געווען אַז נייַ פונקציאָנירן?
סקאַנף אָדער ססקאַנף. עס פאקטיש קומט אין אַ ביסל אַנדערש פלייווערז.
עס ס סקאַנף, דאָרט ס ססקאַנף, דאָרט ס פסקאַנף.
פֿאַר איצט, כאָטש, לאָזן ס פאָקוס אויף די איין רובֿ לייכט ילאַסטרייטאַד,
און לאָזן מיר גיין פאָרויס און עפענען זיך אין די אַפּפּליאַנסע
אַ טעקע ווי דעם, סקאַנפ1.ק.
דאס איז אַ סופּער פּשוט פּראָגראַם,
אָבער וואָס טוט עפּעס אַז מיר ווע קיינמאָל געטאן
אָן די הילף פון די קס50 ביבליאָטעק.
דעם געץ אַ ינט פון אַ באַניצער. ווי טוט עס אַרבעט?
נו, אין שורה 16 ​​דאָרט,
באַמערקן אַז מיר דערקלערן אַ ינט גערופן X, און בייַ דעם פונט אין די געשיכטע,
וואָס איז די ווערט פון X?
[ינאָדאַבאַל תּלמיד ענטפער]
[דוד עם] רעכט, ווער ווייסט, עטלעכע מיסט ווערט פּאַטענטשאַלי, אַזוי אין 17, מיר נאָר זאָגן דער באַניצער
געבן מיר אַ נומער, ביטע, און שריט 18 איז ווו עס געץ טשיקאַווע.
סקאַנף מיינט צו באָרגן אַ געדאַנק פון פּרינטף אין אַז עס ניצט די פֿאָרמאַט קאָודז אין קוואָטעס.
% ד איז פון קורס אַ דעצימאַל נומער.
אבער וואָס בין איך גייט פארביי אין & X אַנשטאָט פון נאָר X?
די ערשטע איז ריכטיק. יאָ.
[ינאָדאַבאַל תּלמיד ענטפער]
פּונקט, אויב דער ציל פון דעם פּראָגראַם, ווי די פֿונקציע געטינט זיך,
איז צו באַקומען אַ ינט פון דעם באַניצער איך קענען פאָרן פאַנגקשאַנז
אַלע די וועריאַבאַלז איך וועלן, אָבער אויב איך טאָן ניט פאָרן זיי דורך דערמאָנען
אָדער דורך אַדרעס אָדער דורך טייַטל, אַלע סאַנאַנאַמאַס פֿאַר הייַנט ס צוועקן,
דעמאָלט וואָס פונקציאָנירן האט קיין פיייקייַט צו טוישן דעם אינהאַלט פון וואָס בייַטעוודיק.
דאס וואָלט פאָרן אין אַ קאָפּיע פּונקט ווי דער וואָגן ווערסיע פון ​​ויסבייַטן
אַז מיר ווע גערעדט וועגן אַ ביסל מאל איצט.
>> אבער אַנשטאָט, דורך טאן & X, איך בין ממש גייט פארביי אין וואָס?
[תּלמיד] דער אַדרעס. >> די אַדרעס פון X.
עס ס ווי צייכענונג אַ מאַפּע פֿאַר די פֿונקציע גערופן סקאַנף און געזאגט דאָ,
די ביסט אינסטרוקציעס צו אַ פּייַדע פון ​​זכּרון אין די קאָמפּיוטער
אַז איר קענען גיין קראָם עטלעכע ינטעגער ין
אין סדר פֿאַר ססקאַנף צו איצט טאָן אַז
וואָס אָפּעראַטאָר, וואָס שטיק פון סינטאַקס איז עס געגאנגען צו האָבן צו נוצן
אַפֿילו כאָטש מיר קענען נישט זען עס ווייַל עמעצער אַנדערש געשריבן דעם פֿונקציע?
אין אנדערע ווערטער - וואָס ס וואָס?
[תּלמיד] רענטגענ לייענען.
עס ס געגאנגען צו זייַן עטלעכע לייענען, אָבער נאָר מיט אַכטונג צו X דאָ.
אויב סקאַנף איז זייַענדיק דורכגעגאנגען די אַדרעס פון X,
סינטאַקטיקאַללי, וואָס אָפּעראַטאָר איז געבונדן צו עקזיסטירן ערגעץ
ין פון סקאַנף ס ימפּלאַמענטיישאַן אַזוי אַז סקאַנף
קענען פאקטיש שרייַבן אַ נומער 2 צו אַז אַדרעס?
יאָ, אַזוי די *.
צוריקרופן אַז די * איז אונדזער דערעפערענסע אָפּעראַטאָר, וואָס יסענשאַלי מיטל גיין דאָרט.
>> אַמאָל איר ווע שוין קאָלנער אַ אַדרעס, ווי איז דער פאַל דאָ,
סקאַנף איז מיסטאָמע-אויב מיר פאקטיש געקוקט אַרום זייַן מקור קאָד-
איז טאן * X אָדער דער עקוויוואַלענט צו פאקטיש גיין צו אַז אַדרעס און שטעלן עטלעכע ווערט דאָרט.
איצט, ווי פֿאַר ווי סקאַנף געץ אַרייַנשרייַב פון די קלאַוויאַטור,
מיר וועט כוואַליע אונדזער הענט אויס פֿאַר הייַנט.
נאָר יבערנעמען אַז די אַפּערייטינג סיסטעם אַלאַוז ססקאַנף צו רעדן
צו דעם באַניצער 'ס קלאַוויאַטור, אָבער בייַ דעם פונט איצט אין שורה 19,
ווען מיר פשוט דרוקן אויס X, עס מיינט צו זייַן דעם פאַל
אַז סקאַנף האט שטעלן אַ ינט אין X.
אַז ס פּונקט ווי סקאַנף אַרבעט, און צוריקרופן לעצטע וואָך
אַז ס פּונקט ווי געצטרינג און געטינט און זייַן אנדערע משפּחה פון פאַנגקשאַנז
לעסאָף אַרבעט, אָלבייט מיט קליין צעטיילט ווי ססקאַנף,
וואָס מיטל יבערקוקן אַ שטריקל אַנשטאָט פון די קלאַוויאַטור.
אבער לאָזן ס נעמען אַ קוק אין אַ קליין צעטיילט פון דעם.
אין סקאַנפ2, איך פאקטיש סקרוד אַרויף.
וואָס איז פאַלש-און איך וועט באַהאַלטן די באַמערקונג אַז דערקלערט ווי פיל-
וואָס איז פאַלש מיט דעם פּראָגראַם, ווערסיע 2?
זייַן ווי טעכניש ווי מעגלעך דעם צייַט.
עס קוקט שיין גוט.
עס ס נייסלי ינדענטעד, אָבער-
אָוקיי, ווי וועגן לאָזן ס פלוים עס אַראָפּ צו קירצער שאלות?
שורה 16. וואָס ס שורה 16 ​​טאן אין גענוי אָבער טעכניש ענגליש?
געטינג אַ ביסל ומגעלומפּערט. יא, מיכאל.
[תּלמיד] עס ס פּוינטינג צו דער ערשטער בריוו פון אַ שטריקל.
>> אָוקיי, נאָענט. זאל מיר טוויק אַז אַ קליין ביסל.
פּוינטינג צו דער ערשטער בריוו פון אַ שטריקל, איר זענט דיקלערינג אַ בייַטעוודיק גערופן באַפער
וואָס וועט פונט צו די ערשטער אַדרעס פון אַ שטריקל,
אָדער אלא, וואָס וועט פונט מער ספּאַסיפיקלי צו אַ טשאַר.
נאָטיץ עס ס נישט פאקטיש פּוינטינג ערגעץ ווייַל דאָרט ס קיין אַסיינמאַנט אָפּעראַטאָר.
עס ס ניט גלייַך צייכן, אַזוי אַלע מיר רע טאן איז אַלאַקייטינג די בייַטעוודיק גערופן באַפער.
עס כאַפּאַנז צו זייַן 32 ביטן ווייַל עס ס אַ טייַטל,
און דער אינהאַלט פון באַפער מאַשמאָעס יווענטשאַוואַלי
וועט אַנטהאַלטן אַ אַדרעס פון אַ טשאַר, אָבער פֿאַר איצט, וואָס טוט באַפער אַנטהאַלטן?
נאָר עטלעכע פאַלש, ווער ווייסט, עטלעכע מיסט ווערט,
ווייַל מיר האָבן נישט בפירוש ינישאַלייזד עס, אַזוי מיר זאָל נישט יבערנעמען עפּעס.
אָוקיי, אַזוי איצט שורה 17 איז-וואָס טוט שורה 17 טאָן?
אפֿשר וואָס וועט וואַרעם דעם אַרויף.
עס פּרינץ אַ שטריקל, רעכט?
עס פּרינץ סטרינג ביטע.
>> שורה 18 איז מין פון באַקאַנט איצט אין וואָס מיר נאָר געזען אַ צעטיילט פון דעם
אָבער מיט אַ אַנדערש פֿאָרמאַט קאָד, אַזוי אין שורה 18,
מיר רע טעלינג סקאַנף דאָ איז די אַדרעס פון אַ פּייַדע פון ​​זכּרון.
איך ווילן איר צו קלינגען אין אַ שטריקל, ווי ימפּלייד דורך% s,
אָבער די פּראָבלעם איז אַז מיר האָבן נישט געטאן אַ פּאָר פון זאכן דאָ.
וואָס ס איינער פון די פראבלעמען?
[תּלמיד] עס ס טריינג צו דערעפערענסע אַ נאַל טייַטל.
גוט, נאַל אָדער נאָר אַנדערש אומבאַקאַנט פּוינטערז.
איר רע כאַנדינג סקאַנף אַן אַדרעס, אָבער איר נאָר געזאגט אַ מאָמענט צוריק
אַז וואָס אַדרעס איז עטלעכע מיסט ווערט ווייַל מיר האבן נישט פאקטיש באַשטימען עס צו עפּעס,
און אַזוי איר ניטאָ טעלינג סקאַנף יפעקטיוולי גיין לייגן אַ שטריקל דאָ,
אָבער מיר טאָן ניט וויסן ווו דאָ נאָך איז,
אַזוי מיר האָבן נישט פאקטיש אַלאַקייטיד זכּרון פֿאַר באַפער.
דערצו, וואָס זענען איר אויך ניט אַפֿילו טעלינג סקאַנף?
רעכן דאָס איז געווען אַ פּייַדע פון ​​זכּרון, און עס איז געווען ניט אַ מיסט ווערט,
אָבער איר ניטאָ נאָך נישט טעלינג סקאַנף עפּעס וויכטיק.
[תּלמיד] וואו עס פאקטיש איז, די אַמפּערסאַנד.
אַמפּערסאַנד, אַזוי אין דעם פאַל, עס ס אָוקיי.
ווייַל באַפער איז שוין דערקלערט ווי אַ טייַטל
מיט דעם * שטיק פון סינטאַקס, מיר טאָן ניט דאַרפֿן צו נוצן אַמפּערסאַנד
ווייַל עס ס 'שוין אַן אַדרעס, אָבער איך טראַכטן איך געהערט עס דאָ.
[תּלמיד] ווי גרויס איז עס?
גוט, מיר ניטאָ ניט טעלינג סקאַנף ווי גרויס דאָס באַפער איז,
וואָס מיטל אַפֿילו אויב באַפער געווען אַ טייַטל,
מיר רע געזאגט סקאַנף, שטעלן אַ שטריקל דאָ,
אָבער דאָ קען זייַן 2 ביטעס, עס קען זייַן 10 ביטעס, עס קען זייַן אַ מעגאבייט.
סקאַנף האט קיין געדאַנק, און ווייַל דאָס איז אַ פּייַדע פון ​​זכּרון
מאַשמאָעס, עס ס נישט אַ שטריקל נאָך.
עס ס נאָר אַ שטריקל אַמאָל איר שרייַבן אותיות און אַ \ 0 צו אַז פּייַדע פון ​​זכּרון.
איצט עס ס נאָר עטלעכע פּייַדע פון ​​זכּרון.
סקאַנף וועט נישט וויסן ווען צו האַלטן שרייבן צו אַז אַדרעס.
>> אויב איר צוריקרופן עטלעכע ביישפילן אין דער פאַרגאַנגענהייַט ווו איך ראַנדאַמלי טייפּט אויף די קלאַוויאַטור
טריינג צו לויפן אַ באַפער, און מיר גערעדט אויף פרייטאג וועגן פּונקט וואָס.
אויב אַ קעגנער עפעס ינדזשעקץ אין דיין פּראָגראַם אַ פיל ביגער וואָרט
אָדער זאַץ אָדער פראַזע דעמאָלט איר זענען יקספּעקטינג איר קענען באַדעקן
אַ פּייַדע פון ​​זכּרון, וואָס קענען האָבן שלעכט פאלגן,
ווי גענומען איבער די גאנצע פּראָגראַם זיך.
מיר דאַרפֿן צו פאַרריכטן דעם עפעס.
זאל מיר פארגרעסער אויס און גיין אין ווערסיע 3 פון דעם פּראָגראַם.
אַז ס אַ קליין ביסל בעסער.
אין דעם ווערסיע, באַמערקן דעם חילוק.
אין שורה 16, איך בין ווידער דיקלערינג אַ בייַטעוודיק גערופן באַפער,
אָבער וואָס איז עס איצט?
עס ס אַ מענגע פון ​​16 טשאַרס.
דאס איז גוט ווייַל דעם מיטל איך קענען איצט זאָגן סקאַנף
דאָ איז אַ פאַקטיש פּייַדע פון ​​זכּרון.
איר קענען כּמעט טראַכטן פון ערייז ווי זייַענדיק פּוינטערז איצט,
אַפֿילו כאָטש זיי ניטאָ נישט פאקטיש עקוויוואַלענט.
זיי וועט ביכייוו דיפערענטלי אין פאַרשידענע קאַנטעקסץ.
אבער עס ס אַוואַדע די פאַל אַז באַפער איז רעפעראַנסינג
16 קאַנטיגיואַס טשאַרס ווייַל אַז ס וואָס אַ מענגע איז
און האט שוין פֿאַר עטלעכע וואָכן איצט.
>> דאָ, איך בין טעלינג סקאַנף דאָ ס אַ פּייַדע פון ​​זכּרון.
דאס מאָל, עס ס 'פאקטיש אַ פּייַדע פון ​​זכּרון,
אָבער וואָס איז דעם פּראָגראַם נאָך עקספּלאָיטאַבלע?
וואָס ס אומרעכט נאָך?
איך ווע האט געבן מיר 16 ביטעס אָבער-
[תּלמיד] וואָס אויב זיי טיפּ אין מער ווי 16?
פּונקט, וואָס אויב דער באַניצער טייפּס אין 17 אותיות אָדער 1700 אותיות?
אין פאַקט, לאָזן ס זען אויב מיר קענען נישט יאַזדע איבער דעם גרייַז איצט.
עס ס בעסער אָבער נישט גאנץ.
זאל מיר גיין פאָרויס און לויפן מאַכן סקאַנפ3 צו צונויפנעמען דעם פּראָגראַם.
זאל מיר לויפן סקאַנפ3, סטרינג ביטע: העלא, און מיר ויסקומען צו זייַן אָוקיי.
זאל מיר פּרובירן אַ ביסל מער איינער, העלא דאָרט.
אָוקיי, לאָזן ס טאָן העלא דאָרט ווי זענט איר הייַנט, אַרייַן.
געטינג מין פון מאַזלדיק דאָ, לאָזן ס זאָגן העלא דאָרט ווי זענט איר.
פאַרשילטן עס.
אָוקיי, אַזוי מיר גאַט מאַזלדיק. זאל ס זען אויב מיר קענען נישט פאַרריכטן דעם.
ניין, עס ס ניט געגאנגען צו לאָזן מיר קאָפּיע.
זאל ס פּרובירן דעם ווידער.
אַלע רעכט, שטיין דורך.
מיר וועט זען ווי לאַנג איך קענען פאַרהיטן צו פאָקוס בשעת נאָך טאן דעם.
פאַרשילטן עס. אַז ס אלא צונעמען, פאקטיש.
עס מיר גיין.
פונט געמאכט.
>> דאס, ימבעראַסינג כאָטש עס אויך איז, עס איז אויך איינער פון די קוואלן פון גרויס צעמישונג
ווען שרייבן מגילה וואָס האָבן באַגז ווייַל זיי באַשייַמפּערלעך זיך
נאָר אַמאָל אין אַ בשעת מאל.
דער פאַקט איז אַז אַפֿילו אויב דיין קאָד איז גאָר צעבראכן,
עס זאל נאָר זייַן גאָר צעבראכן אַמאָל אין אַ בשעת
ווייַל מאל, יסענשאַלי וואָס כאַפּאַנז איז די אַפּערייטינג סיסטעם אַלאַקייץ
אַ ביסל מער זכּרון ווי איר פאקטיש דאַרפֿן פֿאַר וועלכער סיבה,
און אַזוי קיין איינער אַנדערש איז ניצן די זכּרון רעכט נאָך דיין פּייַדע פון ​​16 אותיות,
אַזוי אויב איר גיין צו 17, 18, 19, וועלכער, עס ס נישט אַזאַ אַ גרויס האַנדלען.
איצט, דער קאָמפּיוטער, אַפֿילו אויב עס טוט נישט קראַך אין אַז פונט,
זאל יווענטשאַוואַלי נוצן ביטע נומער 17 אָדער 18 אָדער 19 פֿאַר עפּעס אַנדערש,
אין וואָס פונט דיין דאַטן וואָס איר שטעלן דאָרט, אָלבייט יקסעסיוולי לאַנג,
איז געגאנגען צו באַקומען אָוווערריטאַן פּאַטענטשאַלי דורך עטלעכע אנדערע פֿונקציע.
עס ס נישט דאַווקע געגאנגען צו בלייַבן בעשאָלעם,
אָבער עס וועט נישט דאַווקע גרונט אַ סעג שולד.
אבער אין דעם פאַל, איך לעסאָף צוגעשטעלט גענוג אותיות
אַז איך יסענשאַלי יקסידיד מיין אָפּשניט פון זכּרון, און באַם,
די אַפּערייטינג סיסטעם האט געזאגט, "אנטשולדיגט, וואָס ס ניט גוט, סעגמאַנטיישאַן שולד".
>> און לאָזן ס זען איצט אויב וואָס בלייבט דאָ אין מיין וועגווייַזער-
באַמערקן אַז איך האב דעם טעקע דאָ, האַרץ.
נאָטיץ אַז דאָס איז ווידער גערופן אַ האַרץ דאַמפּ.
עס ס יסענשאַלי אַ טעקע אַז כּולל די צופרידן פון דיין פּראָגראַם ס זכּרון
בייַ די פונט אין וואָס עס קראַשט,
און נאָר צו פּרובירן אַ ביסל בייַשפּיל דאָ לאָזן מיר גיין אין דאָ
און לויפן גדב אויף סקאַנפ3 און דעמאָלט ספּעציפיצירן 1/3 אַרגומענט גערופן האַרץ,
און באַמערקן דאָ אַז אויב איך רשימה דעם קאָד,
מיר וועט זייַן קענען ווי געוויינטלעך מיט גדב צו אָנהייבן גיין דורך דעם פּראָגראַם,
און איך קענען לויפן אים און ווי באַלד ווי איך שלאָגן-ווי מיט די שריט באַפֿעל אין גדב-
ווי באַלד ווי איך שלאָגן די פּאַטענטשאַלי וואָגן שורה נאָך טייפּינג אין אַ ריזיק שטריקל,
איך וועט זייַן ביכולת צו פאקטיש ידענטיפיצירן עס דאָ.
מער אויף דעם, כאָטש, אין אָפּטיילונג אין טערמינען פון האַרץ דאַמפּס
און די ווי אַזוי אַז איר קענען פאקטיש שטורכען אַרום ין פון די האַרץ דאַמפּ
און זען אויף וואָס שורה די פּראָגראַם אַנדערש איר.
קיין שאלות דעמאָלט אויף פּוינטערז און אויף ווענדט?
ווייַל הייַנט אויף, מיר רע געגאנגען צו אָנהייב גענומען פֿאַר געגעבן אַז די זאכן עקסיסטירן
און מיר וויסן פּונקט וואָס זיי זענען.
יא.
>> [תּלמיד] ווי קומען איר האט ניט האָבן צו שטעלן אַ אַמפּערסאַנד ווייַטער צו דער טייל-
גוט קשיא.
ווי קומען איך האט ניט האָבן צו שטעלן אַ אַמפּערסאַנד ווייַטער צו די כאַראַקטער מענגע ווי איך האט פריער
מיט רובֿ פון אונדזער ביישפילן?
די קורץ ענטפֿערן איז ערייז זענען אַ ביסל ספּעציעל.
איר קענען כּמעט טראַכטן אַ באַפער ווי פאקטיש זייַענדיק אַן אַדרעס,
און עס פּונקט אַזוי כאַפּאַנז צו זייַן די פאַל אַז די קוואַדראַט קאַנטיקער נאָוטיישאַן
איז אַ קאַנוויניאַנס אַזוי אַז מיר קענען גיין אין קאַנטיקער 0, קאַנטיקער 1,
קאַנטיקער 2, אָן בעת ​​צו נוצן דעם * נאָוטיישאַן.
אַז ס אַ ביסל פון אַ ווייַס ליגן ווייַל ערייז און פּוינטערז
זענען, אין פאַקט, אַ קליין ביסל אַנדערש, אָבער זיי קענען אָפֿט אָבער ניט שטענדיק זייַן געניצט ינטערטשיינדזשאַבלי.
אין קורץ, ווען אַ פֿונקציע איז יקספּעקטינג אַ טייַטל צו אַ פּייַדע פון ​​זכּרון,
איר קענען אָדער פאָרן עס אַן אַדרעס אַז איז אומגעקערט דורך מאַללאָק,
און מיר וועט זען מאַללאָק ווידער איידער לאַנג, אָדער איר קענען פאָרן עס די נאָמען פון אַ מענגע.
איר טאָן ניט האָבן צו טאָן אַמפּערסאַנד מיט ערייז ווייַל זיי זענען שוין
יסענשאַלי ווי ווענדט.
אַז ס די איין אויסנאַם.
די קוואַדראַט בראַקאַץ מאַכן זיי ספּעציעל.
>> קען איר שטעלן אַ אַמפּערסאַנד ווייַטער צו די באַפער?
ניט אין דעם פאַל.
וואָס וואָלט ניט אַרבעט ווייַל, ווידער, פון דעם ווינקל פאַל
ווו ערייז זענען נישט גאַנץ פאקטיש ווענדט.
אבער מיר וועט טאָמער קומען צוריק צו אַז איידער לאַנג מיט אנדערע ביישפילן.
זאל ס פּרובירן צו סאָלווע אַ פּראָבלעם דאָ.
מיר האָבן אַ דאַטן סטרוקטור וואָס מיר ווע שוין ניצן פֿאַר עטלעכע מאָל באקאנט ווי אַ מענגע.
פאַל אין פונט, אַז ס וואָס מיר נאָר געהאט.
אבער ערייז האָבן עטלעכע ופּסידעס און דאַונסיידז.
ערייז זענען פייַן וואָס?
וואָס ס איין זאַך וואָס איר ווי-צו די מאָס איר ווי ערייז-וועגן ערייז?
וואָס ס באַקוועם וועגן זיי? וואָס ס קאַמפּעלינג?
פארוואס האבן מיר באַקענען זיי אין דער ערשטער אָרט?
יאָ.
[תּלמיד] זיי קענען קראָם אַ פּלאַץ פון דאַטן, און איר טאָן ניט האָבן צו נוצן אַ גאנצע זאַך.
איר קענען נוצן אַ אָפּטיילונג.
גוט, מיט אַ מענגע איר קענען קראָם אַ פּלאַץ פון דאַטן,
און איר טאָן ניט דאַווקע האָבן צו נוצן אַלע פון ​​אים, אַזוי איר קענען אָוועראַללאָקאַטע,
וואָס זאל זייַן באַקוועם אויב איר טאָן ניט וויסן אין שטייַגן ווי פילע פון ​​עפּעס צו דערוואַרטן.
>> געצטרינג איז אַ גאנץ בייַשפּיל.
געצטרינג, געשריבן דורך אונדז, האט קיין געדאַנק ווי פילע טשאַרס צו דערוואַרטן,
אַזוי דעם פאַקט אַז מיר קענען אַלאַקייט טשאַנגקס פון קאַנטיגיואַס זכּרון איז גוט.
ערייז אויך סאָלווע אַ פּראָבלעם מיר געזען אַ פּאָר וואָכן צוריק איצט
ווו דיין קאָד סטאַרץ צו דיוואַלוו אין עפּעס זייער שוואַך דיזיינד.
צוריקרופן אַז איך באשאפן אַ תּלמיד סטרוקטור גערופן דוד,
און דעמאָלט וואָס איז פאקטיש אַן אָלטערנאַטיוו, כאָטש,
צו ווייל אַ בייַטעוודיק גערופן נאָמען און אן אנדער בייַטעוודיק גערופן, איך טראַכטן, הויז,
און אנדערן בייַטעוודיק גערופן שייַן ווייַל אין אַז געשיכטע איך דעריבער געוואלט צו פאָרשטעלן עפּעס אַנדערש
ווי ראָב אין דעם פּראָגראַם, אַזוי דעמאָלט איך באַשלאָסן וואַרטן אַ מינוט,
איך דאַרפֿן צו רענאַמע די וועריאַבאַלז.
זאל ס רופן מייַן נאַמע1, יד1, האָוסע1.
זאל ס רופן ראָב ס נאַמע2, האָוסע2, יד2.
אבער דעמאָלט וואַרטן אַ מינוט, וואָס וועגן טאַמי?
דעמאָלט מיר האט דרייַ מער וועריאַבאַלז.
מיר באַקענענ עמעצער אַנדערש, פיר שטעלט פון וועריאַבאַלז.
די וועלט אנגעהויבן צו באַקומען מעסי זייער געשווינד,
אַזוי מיר באַקענענ סטרוקץ, און וואָס ס קאַמפּעלינג וועגן אַ סטרוקט?
וואָס טוט אַ C סטרוקט לאָזן איר טאָן?
עס ס טאַקע ומגעלומפּערט הייַנט.
וואָס? >> [ינאָדאַבאַל תּלמיד ענטפער]
יאָ, ספּאַסיפיקלי, טיפּעדעף אַלאַוז איר צו שאַפֿן אַ נייַ דאַטן טיפּ,
און סטרוקט, די סטרוקט קיווערד, אַלאַוז איר צו ענקאַפּסאַלייט
קאַנסעפּטשואַלי פֿאַרבונדענע ברעקלעך פון דאַטן צוזאַמען
און דערנאָכדעם רופן זיי עפּעס ווי אַ תּלמיד.
>> וואָס איז געווען גוט ווייַל איצט מיר קענען מאָדעל
פיל מער סאָרט פון קאַנסעפּטשואַלי קאָנסיסטענט דער געדאנק פון אַ תּלמיד אין אַ בייַטעוודיק
אלא ווי אַרביטרעראַלי ווייל איינער פֿאַר אַ שטריקל, איינער פֿאַר אַ שייַן, און אַזוי אַרויס.
ערייז זענען פייַן ווייַל זיי לאָזן אונדז צו אָנהייבן רייניקונג אַרויף אונדזער קאָד.
אבער וואָס איז אַ דאַונסייד איצט פון אַ מענגע?
וואָס קענען איר ניט טאָן? יאָ.
[תּלמיד] איר האָבן צו וויסן ווי גרויס עס איז.
איר האָבן צו וויסן ווי גרויס עס איז, אַזוי עס ס מין פון אַ ווייטיק.
יענע פון ​​איר מיט פריערדיק פּראָגראַממינג דערפאַרונג וויסן אַז אין אַ פּלאַץ פון שפּראַכן,
ווי דזשאַוואַ, איר קענען פרעגן אַ פּייַדע פון ​​זכּרון, ספּאַסיפיקלי אַ מענגע,
ווי גרויס זענען איר, מיט אַ לענג, פאַרמאָג, אַזוי צו רעדן, און אַז ס 'טאַקע באַקוועם.
אין C, איר קענען נישט אַפֿילו רופן סטרלען אויף אַ דזשאַנעריק מענגע
ווייַל סטרלען, ווי די וואָרט ימפּלייז, איז נאָר פֿאַר סטרינגס,
און איר קענען רעכענען אויס די לענג פון אַ שטריקל ווייַל פון דעם מענטש קאַנווענשאַן
פון בעת ​​אַ \ 0, אָבער אַ מענגע, מער דזשאַנעריקלי, איז נאָר אַ פּייַדע פון ​​זכּרון.
אויב עס ס אַ מענגע פון ​​ינץ, דאָרט ס ניט געגאנגען צו זייַן עטלעכע ספּעציעל כאַראַקטער
אין די סוף ווארטן פֿאַר איר.
איר האָבן צו געדענקען די לענג פון אַ מענגע.
אן אנדער דאַונסייד פון אַ מענגע רירד זייַן קאָפּ אין געצטרינג זיך.
וואָס ס אנדערן דאַונסייד פון אַ מענגע?
האר, נאָר איר און מיר הייַנט.
[ינאָדאַבאַל תּלמיד ענטפער] >> עס ס וואָס?
עס ס דערקלערט אויף דעם אָנלייגן.
אָוקיי, דערקלערט אויף דעם אָנלייגן. פארוואס טאָן ניט איר ווי וואָס?
[תּלמיד] ווייַל עס געץ ריוזד.
עס געץ ריוזד.
אָוקיי, אויב איר נוצן אַ מענגע צו אַלאַקייט זכּרון,
איר קענען ניט, פֿאַר בייַשפּיל, צוריקקומען עס ווייַל עס ס אויף דעם אָנלייגן.
אָוקיי, אַז ס אַ כיסאָרן.
און ווי וועגן איין אנדערע מיט אַ מענגע?
אַמאָל איר אַלאַקייט עס, איר ניטאָ מין פון סקרוד אויב איר דאַרפֿן מער פּלאַץ
ווי אַז מענגע האט.
>> דעמאָלט מיר באַקענענ, צוריקרופן, מאַללאָק, וואָס געגעבן אונדז דעם פיייקייַט צו דינאַמיקאַללי אַלאַקייט זכּרון.
אבער וואָס אויב מיר געפרוווט אַ פאַרשידענע וועלט בעסאַכאַקל?
וואָס אויב מיר געוואלט צו סאָלווע אַ פּאָר פון יענע פּראָבלעמס
אַזוי מיר אַנשטאָט-מיין פעדער האט געפאלן שלאָפנדיק דאָ-
וואָס אויב מיר אַנשטאָט געוואלט צו יסענשאַלי שאַפֿן אַ וועלט אַז ס ניט מער ווי דעם?
דאס איז אַ מענגע, און, פון קורס, דעם מין פון דיטיריערייץ אַמאָל מיר שלאָגן די סוף פון די מענגע,
און איך איצט ניט מער האָבן פּלאַץ פֿאַר אן אנדער ינטעגער אָדער אן אנדער כאַראַקטער.
וואָס אויב מיר סאָרט פון פּריעמפּטיוולי זאָגן געזונט, וואָס טאָן ניט מיר אָפּרוען
דעם פאָדערונג אַז אַלע די טשאַנגקס פון זכּרון זייַן קאַנטיגיואַס צוריק צו צוריק,
און וואָס טאָן ניט, ווען איך דאַרפֿן אַ ינט אָדער אַ טשאַר,
נאָר געבן מיר פּלאַץ פֿאַר איינער פון זיי?
און ווען איך דאַרפֿן אנדערן, געבן מיר אן אנדער אָרט,
און ווען איך דאַרפֿן אנדערן, געבן מיר אן אנדער פּלאַץ.
די מייַלע פון ​​וואָס איצט איז אַז אויב עמעצער אַנדערש
נעמט דער זכּרון איבער דאָ, קיין גרויס האַנדלען.
איך וועט נעמען דעם נאָך פּייַדע פון ​​זכּרון דאָ און דאַן דעם איין.
>> איצט, דער נאָר כאַפּן דאָ איז אַז דאָס כּמעט פילז ווי איך האָבן
אַ גאַנץ בינטל פון פאַרשידענע וועריאַבאַלז.
דאס פילז ווי פינף פאַרשידענע וועריאַבאַלז פּאַטענטשאַלי.
אבער וואָס אויב מיר גאַנווענען אַ געדאַנק פון סטרינגס
ווערביי מיר עפעס לינק די זאכן צוזאַמען קאַנסעפּטשואַלי, און וואָס אויב איך האט דאָס?
דאס איז מיין זייער שוואַך ציען פייַל.
אבער רעכן אַז יעדער פון די טשאַנגקס פון זכּרון
שפּיציק צו די אנדערע, און דעם באָכער, וואס האט קיין סיבלינג צו זייַן רעכט,
האט ניט אַזאַ פייַל.
דאס איז אין פאַקט וואָס ס גערופן אַ לינגקט רשימה.
דאס איז אַ נייע דאַטע סטרוקטור וואָס אַלאַוז אונדז צו אַלאַקייט אַ פּייַדע פון ​​זכּרון,
דעמאָלט אנדערן, דעמאָלט אנדערן, דעמאָלט אנדערן, קיין צייַט מיר ווילן
בעשאַס אַ פּראָגראַם, און מיר געדענקען אַז זיי ניטאָ אַלע עפעס שייַכות
דורך ממש טשיינינג זיי צוזאַמען, און מיר האבן אַז פּיקטאָריאַללי דאָ מיט אַ פייַל.
אבער אין קאָד, וואָס וואָלט זייַן די מעקאַניזאַם דורך וואָס איר קען עפעס פאַרבינדן,
כּמעט ווי סקראַטטש, איינער פּייַדע צו אן אנדער פּייַדע?
מיר קען נוצן אַ טייַטל, רעכט?
ווייַל טאַקע די פייַל אַז ס 'געגאנגען פון די שפּיץ לינקס קוואַדראַט,
דעם באָכער דאָ צו דעם איינער, קען אַנטהאַלטן ין פון דעם קוואַדראַט
נישט נאָר עטלעכע ינץ, ניט נאָר עטלעכע טשאַר, אָבער וואָס אויב איך פאקטיש אַלאַקייטיד
אַ ביסל עקסטרע פּלאַץ אַזוי אַז איצט,
יעדער פון מיין טשאַנגקס פון זכּרון, אַפֿילו כאָטש דעם איז געגאנגען צו קאָסטן מיר,
איצט קוקט אַ ביסל מער רעקטאַנגגיאַלער ווו איינער פון די טשאַנגקס פון זכּרון
איז געניצט פֿאַר אַ נומער, ווי די נומער 1,
און דעריבער אויב דאָס באָכער סטאָרז דער נומער 2,
דאָס אנדערע פּייַדע פון ​​זכּרון איז געניצט פֿאַר אַ פייַל,
אָדער מער קאַנקריטלי, אַ טייַטל.
און רעכן איך קראָם די נומער 3 איבער דאָ בשעת איך נוצן דאָס צו פונט בייַ אַז באָכער,
און איצט דעם באָכער, לאָזן ס רעכן איך נאָר ווילן דרייַ אַזאַ טשאַנגקס פון זכּרון.
איך וועט ציען אַ שורה דורך וואָס, ינדאַקייטינג נאַל.
עס איז ניט נאָך כאַראַקטער.
>> טאקע, דאָס איז ווי מיר קענען גיין וועגן ימפּלאַמענינג
עפּעס אַז ס גערופן אַ לינגקט רשימה.
א לינגקט רשימה איז אַ נייע דאַטע סטרוקטור, און עס ס אַ סטעפּינג שטיין צו
פיל פאַנסיער דאַטן סטראַקטשערז אַז אָנהייבן צו סאָלווע פּראָבלעמס
צוזאמען די שורות פון פאַסעבאָאָק-טיפּ פּראָבלעמס און גוגל-טיפּ פּראָבלעמס
ווו איר האָבן ריזיק דאַטן שטעלט, און עס ניט מער קאַץ עס
צו קראָם אַלץ קאָנטיגואָוסלי און נוצן עפּעס ווי לינעאַר זוכן
אָדער אַפֿילו עפּעס ווי ביינערי זוכן.
איר ווילן אַפֿילו בעסער פליסנדיק מאל.
אין פאַקט, איינער פון די רוס גראַילס מיר וועט רעדן וועגן שפּעטער דעם וואָך אָדער ווייַטער
איז אַ אַלגערידאַם וועמענס פליסנדיק צייַט איז קעסיידערדיק.
אין אנדערע ווערטער, עס שטענדיק נעמט די זעלבע סומע פון ​​צייַט קיין ענין
ווי גרויס די אַרייַנשרייַב איז, און וואָס וואָלט טאַקע זייַן קאַמפּעלינג,
אַפֿילו מער אַזוי ווי עפּעס לאַגערידמיק.
וואָס איז דאָס אויף די פאַרשטעלן דאָ?
יעדער פון די רעקטאַנגגאַלז איז פּונקט וואָס איך נאָר געצויגן דורך האַנט.
אבער די זאַך אַלע די וועג אויף די לינקס איז אַ ספּעציעל בייַטעוודיק.
עס ס געגאנגען צו זייַן אַ איין טייַטל ווייַל די איין גאַטשאַ
מיט אַ לינגקט רשימה, ווי די זאכן זענען גערופן,
איז אַז איר האָבן צו הענגען אַנטו איינער סוף פון די לינגקט רשימה.
>> פּונקט ווי מיט אַ שטריקל, איר האָבן צו וויסן די אַדרעס פון די ערשטער טשאַר.
זעלביקער האַנדלען פֿאַר לינגקט רשימות.
איר האָבן צו וויסן די אַדרעס פון די ערשטער פּייַדע פון ​​זכּרון
ווייַל פון דאָרט, איר קענען דערגרייכן יעדער אנדערע איינער.
דאָוונסידע.
וואָס פּרייַז זענען מיר פּייינג פֿאַר דעם ווערסאַטילאַטי פון בעת ​​אַ דינאַמיקאַללי
סייזאַבאַל דאַטן סטרוקטור אַז אויב מיר אלץ דאַרפֿן מער זכּרון, פייַן,
נאָר אַלאַקייט איינער מער פּייַדע און ציען אַ טייַטל פון
די אַלט צו די נייַ עק פון דער רשימה?
יאָ.
[תּלמיד] עס נעמט וועגן צוויי מאָל ווי פיל פּלאַץ.
עס נעמט צוויי מאָל ווי פיל פּלאַץ, אַזוי אַז ס באשטימט אַ דאַונסייד, און מיר 'ווע געזען דעם
טריידאָף איידער צווישן צייַט און פּלאַץ און בייגיקייַט
ווו דורך איצט, מיר דאַרפֿן נישט 32 ​​ביטן פֿאַר יעדער פון די נומערן.
מיר טאַקע דאַרפֿן 64, 32 פֿאַר די נומער און 32 פֿאַר די טייַטל.
אבער היי, איך האב 2 גיגאבייט פון באַראַן.
אַדינג אנדערן 32 ביטן דאָ און דאָ טוט נישט ויסקומען אַז גרויס פון אַ האַנדלען.
אבער פֿאַר גרויס דאַטן שטעלט, עס באשטימט מוסיף אַרויף צו ממש צוויי מאָל ווי פיל.
וואָס ס אנדערן דאַונסייד איצט, אָדער וואָס שטריך טאָן מיר געבן אַרויף,
אויב מיר פאָרשטעלן רשימות פון זאכן מיט אַ לינגקט רשימה און נישט אַ מענגע?
[תּלמיד] איר קענען נישט דורך עס קאַפּויער.
איר קענען נישט דורך עס קאַפּויער, אַזוי איר ניטאָ מין פון סקרוד אויב איר ניטאָ גיין
פון לינקס צו רעכט ניצן אַ פֿאַר שלייף אָדער אַ בשעת שלייף
און דאַן איר פאַרשטיין, "אָה, איך וועלן צו גיין צוריק צו דער אָנהייב פון דער רשימה."
איר קענען נישט ווייַל די פּוינטערז נאָר גיין פון לינקס צו רעכט ווי די אַראָוז אָנווייַזן.
>> איצט, איר קען געדענקען די אָנהייב פון די רשימה מיט אנדערן בייַטעוודיק,
אָבער אַז ס אַ קאַמפּלעקסיטי צו האַלטן אין מיינונג.
אַ מענגע, קיין ענין ווי ווייַט איר גיין, איר קענען שטענדיק טאָן מינוס, מינוס, מינוס, מינוס
און גיין צוריק פון פונוואנען איר געקומען.
וואָס ס אנדערן דאַונסייד דאָ? יאָ.
[ינאָדאַבאַל תּלמיד קשיא]
איר קען, אַזוי איר ווע פאקטיש נאָר פארגעלייגט אַ דאַטן סטרוקטור גערופן אַ דאַבלי לינגקט רשימה,
און טאַקע, איר וואָלט לייגן אן אנדער טייַטל צו יעדער פון די רעקטאַנגגאַלז
וואָס גייט די אנדערע ריכטונג, דער מיטנ קאָפּ פון וואָס
איז איצט איר קענען דורך צוריק און אַרויס,
די דאַונסייד פון וואָס איז איצט איר ניטאָ ניצן דרייַ מאל ווי פיל זכּרון ווי מיר געניצט צו
און אויך אַדינג קאַמפּלעקסיטי אין טערמינען פון די קאָד איר האָבן צו שרייַבן צו באַקומען עס רעכט.
אבער די זענען אַלע טאָמער זייער גלייַך טריידאָפס, אויב די מאַפּאָלע איז מער וויכטיק.
יאָ.
[תּלמיד] איר אויך קענען נישט האָבן אַ 2 ד לינגקט רשימה.
גוט, איר קענען ניט טאַקע האָבן אַ 2 ד לינגקט רשימה.
איר קען. עס ס נישט קימאַט ווי גרינג ווי אַ מענגע.
ווי אַ מענגע, איר טאָן עפענען קאַנטיקער, פֿאַרמאַכט קאַנטיקער, עפענען קאַנטיקער, פֿאַרמאַכט קאַנטיקער,
און איר באַקומען עטלעכע 2-דימענשאַנאַל סטרוקטור.
איר קען מאַכשער אַ 2-דימענשאַנאַל לינגקט רשימה
אויב איר טאָן לייגן-ווי איר פארגעלייגט-1/3 טייַטל צו יעדער פון די זאכן,
און אויב איר טראַכטן וועגן אן אנדער רשימה קומען בייַ איר 3 ד נוסח
פון די פאַרשטעלן צו אַלע פון ​​אונדז, וואָס איז נאָר אן אנדער קייט פון עטלעכע סאָרט.
מיר קען טאָן עס, אָבער עס ס ניט ווי פּשוט ווי טייפּינג עפענען קאַנטיקער, קוואַדראַט קאַנטיקער. יאָ.
[ינאָדאַבאַל תּלמיד קשיא]
גוט, אַזוי דאָס איז אַ פאַקטיש קיקער.
>> די אַלגערידאַמז אַז מיר ווע פּיינד איבער, ווי טאַקע, ביינערי זוכן,
איר קענען זוכן אַ מענגע פון ​​נומערן אויף די ברעט
אָדער אַ טעלעפאָן בוך אַזוי פיל מער געשווינד אויב איר נוצן טיילן און קאַנגקער
און אַ ביינערי זוכן אַלגערידאַם, אָבער ביינערי זוכן פארלאנגט צוויי אַסאַמפּשאַנז.
איינער, אַז די דאַטן איז געווען אויסגעשטעלט.
איצט, מיר קענען מאַשמאָעס האַלטן דעם אויסגעשטעלט,
אַזוי אפֿשר אַז ס 'נישט אַ דייַגע, אָבער ביינערי זוכן אויך אנגענומען
אַז איר האט טראַפ - צוטריט צו די רשימה פון נומערן,
און אַ מענגע אַלאַוז איר צו האָבן טראַפ - צוטריט, און דורך טראַפ - צוטריט,
איך מיינען אויב איר ניטאָ געגעבן אַ מענגע, ווי פיל צייַט טוט עס נעמען איר
צו באַקומען צו קאַנטיקער 0?
איינער אָפּעראַציע, איר נאָר נוצן [0] און איר ניטאָ רעכט דאָרט.
ווי פילע טריט טוט עס נעמען צו באַקומען צו אָרט 10?
איין שריט, איר נאָר גיין צו [10] און איר רע דאָרט.
דורך קאַנטראַסט, ווי טאָן איר באַקומען צו די 10 ינטעגער אין אַ לינגקט רשימה?
איר האָבן צו אָנהייבן בייַ די אָנהייב ווייַל איר ניטאָ בלויז רימעמבערינג
דער אָנהייב פון אַ לינגקט רשימה, נאָר ווי אַ שטריקל איז זייַענדיק דערמאנט
דורך די אַדרעס פון זייַן ערשטער טשאַר, און צו געפֿינען אַז 10 ינט
אָדער אַז 10 כאַראַקטער אין אַ שטריקל, איר האָבן צו זוכן די גאנצע פאַרשילטן זאַך.
>> ווידער, מיר ניטאָ ניט סאַלווינג אַלע פון ​​אונדזער פּראָבלעמס.
מיר רע ינטראָודוסינג נייַ אָנעס, אָבער עס טאַקע דעפּענדס אויף וואָס איר ניטאָ טריינג צו פּלאַן פֿאַר.
אין טערמינען פון ימפּלאַמענינג דעם, מיר קענען באָרגן אַ געדאַנק פון וואָס תּלמיד סטרוקטור.
די סינטאַקס איז זייער ענלעך, חוץ איצט, דער געדאַנק איז אַ ביסל מער אַבסטראַקט
ווי הויז און נאָמען און שייַן.
אבער איך פאָרשלאָגן אַז מיר קען האָבן אַ דאַטן סטרוקטור אין C
וואָס איז גערופן נאָדע, ווי די לעצטע וואָרט אויף דער רוק סאַגדזשעס,
ין פון אַ נאָדע, און אַ נאָדע איז נאָר אַ דזשאַנעריק קאַנטיינער אין קאָמפּיוטער וויסנשאַפֿט.
עס ס יוזשאַוואַלי ציען ווי אַ קרייַז אָדער אַ קוואַדראַט אָדער גראָדעק ווי מיר ווע געטאן.
און אין דעם דאַטן סטרוקטור, מיר האָבן אַ ינט, N,
אַזוי אַז ס די נומער איך ווילן צו קראָם.
אבער וואָס איז דאָס רגע שורה, סטרוקט נאָדע * ווייַטער?
פארוואס איז דעם ריכטיק, אָדער וואָס ראָלע טוט דעם זאַך שפּילן,
אַפֿילו כאָטש עס ס אַ ביסל קריפּטיק בייַ ערשטער בליק?
יאָ.
[ינאָדאַבאַל תּלמיד ענטפער]
פּונקט, אַזוי די * סאָרט פון ספּוילז אַז עס ס אַ טייַטל פון עטלעכע סאָרט.
דער נאָמען פון דעם טייַטל איז אַרביטרעראַלי ווייַטער,
אָבער מיר קען האָבן גערופן עס עפּעס מיר ווילן, אָבער וואָס טוט דעם טייַטל פונט צו?
[תּלמיד] אן אנדער נאָדע. >> עקסאַקטלי, עס ווייזט צו אן אנדער אַזאַ נאָדע.
>> איצט, דאָס איז סאָרט פון אַ נייַגעריקייַט פון סי
צוריקרופן אַז C איז לייענען דורך אַ קאַמפּיילער שפּיץ צו דנאָ, לינקס צו רעכט,
וואָס מיטל אויב-דאָס איז אַ ביסל אַנדערש פון וואָס מיר האבן מיט די תּלמיד.
ווען מיר דיפיינד אַ תּלמיד, מיר פאקטיש האט נישט שטעלן אַ וואָרט דאָרט.
עס נאָר געזאגט טיפּעדעף.
דעמאָלט מיר האט ינט שייַן, שטריקל נאָמען, שטריקל הויז,
און דעמאָלט תּלמיד בייַ די דנאָ פון די סטרוקט.
דאס דערקלערונג איז אַ ביסל אַנדערש ווייַל,
ווידער, די C קאַמפּיילער איז אַ ביסל שטום.
עס ס נאָר געגאנגען צו לייענען שפּיץ צו דנאָ,
אַזוי אויב עס ריטשאַז די 2 שורה דאָ
ווו ווייַטער איז דערקלערט און עס זעט, אָה, דאָ ס אַ בייַטעוודיק גערופן ווייַטער.
עס ס אַ טייַטל צו אַ סטרוקט נאָדע.
דער קאַמפּיילער איז געגאנגען צו פאַרשטיין וואָס איז אַ סטרוקט נאָדע?
איך ווע קיינמאָל געהערט פון דעם זאַך איידער,
ווייַל די וואָרט נאָדע זאל ניט אַנדערש דערשייַנען
ביז די דנאָ, אַזוי עס איז דעם יבעריקייַט.
איר האָבן צו זאָגן סטרוקט נאָדע דאָ, וואָס איר קענען דעריבער פאַרקירצן שפּעטער אויף
דאַנק צו טיפּעדעף אַראָפּ דאָ, אָבער דאָס איז ווייַל
מיר זענען רעפעראַנסינג די סטרוקטור זיך ין פון די סטרוקטור.
אַז ס 'דער איינער גאַטשאַ דאָרט.
>> עטלעכע טשיקאַווע פּראָבלעמס זענען געגאנגען צו אויפשטיין.
מיר ווע גאַט אַ רשימה פון נומערן. ווי טאָן מיר אַרייַנלייגן אין אים?
ווי טאָן מיר זוכן עס? ווי טאָן מיר אויסמעקן פון אים?
ספּעציעל איצט וואָס מיר האָבן צו פירן אַלע פון ​​די פּוינטערז.
איר געדאַנק פּוינטערז זענען סאָרט פון גייַסט-בענדינג
ווען איר האט איינער פון זיי נאָר טריינג צו לייענען אַ ינט צו עס.
איצט מיר האָבן צו מאַניפּולירן אַ גאנצע רשימה ס ווערט.
פארוואס טאָן ניט מיר נעמען אונדזער 5-מינוט ברעכן דאָ, און דאַן מיר וועט ברענגען
עטלעכע פאָלקס אַרויף אויף בינע צו טאָן פּונקט וואָס.
>> C איז פיל מער שפּאַס ווען עס ס אַקטאַד אויס.
ווער וואָלט ממש ווי צו זייַן ערשטער?
אָוקיי, קומען אויף אַרויף. איר זענט ערשטער.
ווער וואָלט ווי צו זייַן 9? אָוקיי, 9.
ווי וועגן 9? 17?
א ביסל קנופיע דאָ. 22 און 26 אין אַז פראָנט רודערן.
און דעמאָלט ווי וועגן עמעצער איבער דאָרט זייַענדיק שפּיציק בייַ.
איר זענט 34. אָוקיי, 34, קומען אויף אַרויף.
ערשטער איז איבער דאָרט. אָוקיי, אַלע פיר פון איר גייז.
און וואס האט מיר זאָגן פֿאַר 9?
ווער איז אונדזער 9?
ווער טאַקע וויל צו זייַן 9? אַלע רעכט, קומען אויף, זייַן 9.
דאָ מיר גיין.
34, מיר וועט טרעפן איר איבער דאָרט.
דער ערשטער טייל איז מאַכן אליין קוק ווי אַז.
26, 22, 17, גוט.
אויב איר קענען שטיין אַוועק צו די זייַט, ווייַל מיר רע געגאנגען צו מאַללאָק איר אין אַ מאָמענט.
>> גוט, גוט.
אָוקיי, ויסגעצייכנט, אַזוי לאָזן ס פרעגן אַ פּאָר פון שאלות דאָ.
און פאקטיש, וואָס ס 'דיין נאָמען? >> אַניטאַ.
אַניטאַ, אָוקיי, קומען אויף איבער דאָ.
אַניטאַ איז געגאנגען צו העלפן אונדז סאָרט פון סאָלווע איינער פערלי פּשוט קשיא אין ערשטער,
וואָס איז ווי טאָן איר געפֿינען צי אָדער נישט אַ ווערט איז אין דער רשימה?
איצט, באַמערקן אַז ערשטער, רעפּריזענטיד דאָ דורך לוקאַס,
איז אַ ביסל אַנדערש, און אַזוי זייַן שטיק פון פּאַפּיר איז דיליבראַטלי סיידווייז
ווייַל עס ס נישט גאַנץ ווי הויך און טוט נישט נעמען זיך ווי פילע ביטן,
אַפֿילו כאָטש טעקניקלי ער האט די זעלבע גרייס פון פּאַפּיר נאָר ראָוטייטיד.
אבער ער ס אַ ביסל אַנדערש אין אַז ער ס נאָר 32 ביטן פֿאַר אַ טייַטל,
און אַלע פון ​​די גייז זענען 64 ביטן, האַלב פון וואָס איז די נומער, העלפט פון וואָס איז אַ טייַטל.
אבער די טייַטל איז נישט דיפּיקטיד, אַזוי אויב איר גייז קען עפּעס אָקווערדלי
נוצן דיין לינקס האַנט צו פונט אין דער מענטש ווייַטער צו איר.
און איר ניטאָ נומער 34. וואָס ס 'דיין נאָמען?
אַרי.
אַרי, אַזוי פאקטיש, האַלטן די פּאַפּיר אין אייער רעכט האַנט, און לינקס האַנט גייט גלייַך אַראָפּ.
איר פאָרשטעלן נאַל אויף די לינקס.
>> איצט אונדזער מענטש בילד איז זייער קאָנסיסטענט.
דאס איז פאקטיש ווי פּוינטערז אַרבעט.
און אויב איר קענען סקראַנטש אַ קליין ביסל דעם וועג אַזוי איך בין נישט אין דיין וועג.
אַניטאַ דאָ, געפֿינען מיר דעם נומער 22,
אָבער יבערנעמען אַ קאַנסטריינט פון נישט יומאַנז האלטן זיך ברעקלעך פון פּאַפּיר,
אָבער דאָס איז אַ רשימה, און איר נאָר האָבן לוקאַס צו אָנהייבן מיט
ווייַל ער איז ממש די ערשטע טייַטל.
רעכן איר זיך ביסט אַ טייַטל, און אַזוי איר אויך האָבן די פיייקייַט צו פונט בייַ עפּעס.
פארוואס טאָן ניט איר אָנהייב דורך פּוינטינג בייַ פּונקט וואָס לוקאַס איז פּוינטינג בייַ?
גוט, און לאָזן מיר ינאַקט דעם אויס איבער דאָ.
נאָר פֿאַר די צוליב פון דיסקוסיע, לאָזן מיר ציען אַרויף אַ ליידיק בלאַט דאָ.
ווי טאָן איר רעגע דיין נאָמען? >> אַניטאַ.
אָוקיי, אַניטאַ.
זאל ס זאָגן נאָדע * אַניטאַ = לוקאַס.
נו, מיר זאָל נישט רופן איר לוקאַס. מיר זאָל רופן איר ערשטער.
פארוואס איז דאָס אין פאַקט קאָנסיסטענט מיט פאַקט דאָ?
איינער, ערשטער שוין יגזיסץ.
ערשטער האט שוין אַלאַקייטיד מאַשמאָעס ערגעץ אַרויף דאָ.
נאָדע * ערשטער, און עס ס 'שוין אַלאַקייטיד אַ רשימה עפעס.
איך טאָן ניט וויסן ווי אַז געטראפן. אַז געטראפן איידער קלאַס אנגעהויבן.
דאס לינגקט רשימה פון יומאַנז האט שוין באשאפן.
און איצט בייַ דעם פונט אין די געשיכטע-דאָס איז אַלע געגאנגען אויף פאַסעבאָאָק משמעות שפּעטער-
אין דעם פונט אין די געשיכטע, אַניטאַ האט שוין ינישאַלייזד צו זייַן גלייַך צו ערשטער,
וואָס טוט נישט מיינען אַז אַניטאַ פונקטן אין לוקאַס.
אלא, זי ווייזט בייַ וואָס ער ווייזט בייַ
ווייַל דער זעלביקער אַדרעס אַז ס 'ין פון לוקאַס ס 32 ביטן - 1, 2, 3 -
איז איצט אויך ין פון אַניטאַ ס 32 ביטן - 1, 2, 3.
>> איצט געפֿינען 22. ווי וואָלט איר גיין וועגן טאן דעם?
וואָס ס וואָס? >> פּוינט צו וועלכער.
פונט צו וועלכער, אַזוי גיין פאָרויס און אַקט עס אויס ווי בעסטער איר קענען דאָ.
גוט, גוט, און איצט איר ניטאָ פּוינטינג אין-וואָס ס אייער נאָמען מיט 22?
ראַמאָן. >> ראַמאָן, אַזוי ראַמאָן איז האלטן זיך 22.
איר האָבן איצט געטאן אַ טשעק.
טוט ראַמאָן == 22, און אויב אַזוי, פֿאַר בייַשפּיל, מיר קענען צוריקקומען אמת.
זאל מיר-בשעת די גייז שטיין דאָ עפּעס אָקווערדלי-
לאָזן מיר טאָן עפּעס געשווינד ווי באָאָל געפֿינען.
איך בין געגאנגען צו גיין פאָרויס און זאָגן (נאָדע * רשימה, ינט N).
איך וועט זייַן רעכט צוריק מיט איר גייז. איך נאָר האָבן צו שרייַבן עטלעכע קאָד.
און איצט איך בין געגאנגען צו גיין פאָרויס און טאָן דאָס, נאָדע * אַניטאַ = רשימה.
און איך בין געגאנגען צו גיין פאָרויס און זאָגן בשעת (אַניטאַ! = נאַל).
>> די מעטאַפאָר דאָ איז געטינג אַ ביסל אויסגעשטרעקט, אָבער בשעת (אַניטאַ! = נאַל), וואָס טאָן איך ווילן צו טאָן?
איך דאַרפֿן עטלעכע וועג פון רעפעראַנסינג
די ינטעגער אַז אַניטאַ איז פּוינטינג בייַ.
אין דער פאַרגאַנגענהייַט, ווען מיר האבן סטראַקטשערז, וואָס אַ נאָדע איז,
מיר געניצט די פּינטעלע נאָוטיישאַן, און מיר וואָלט זאָגן עפּעס ווי
אַניטאַ.ן, אָבער די פּראָבלעם דאָ איז אַז אַניטאַ איז נישט אַ סטרוקט פּער סיי.
וואָס איז זי?
זי ס אַ טייַטל, אַזוי טאַקע, אויב מיר ווילן צו נוצן דעם פּינטעלע נאָוטיישאַן-
און דאָס איז געגאנגען צו קוקן דיליבראַטלי אַ ביסל קריפּטיק-
מיר האָבן צו טאָן עפּעס ווי גיין צו וועלכער אַניטאַ ס לינקס האַנט איז פּוינטינג בייַ
און דעמאָלט באַקומען די פעלד גערופן ען.
אַניטאַ איז אַ טייַטל, אָבער וואָס איז * אַניטאַ?
וואָס טאָן איר געפֿינען ווען איר גיין צו וואָס אַניטאַ איז פּוינטינג בייַ?
א סטרוקט, אַ נאָדע, און אַ נאָדע, צוריקרופן, האט אַ פעלד גערופן N
ווייַל עס האט, צוריקרופן, די 2 פעלדער, ווייַטער און N,
אַז מיר געזען אַ מאָמענט צוריק רעכט דאָ.
>> צו פאקטיש נאָכמאַכן דעם אין קאָד,
מיר קען טאָן דאָס און זאָגן אויב ((* אַניטאַ). ן == N), די ען אַז איך בין קוקן פֿאַר.
נאָטיץ אַז די פֿונקציע איז דורכגעגאנגען אין די נומער איך זאָרגן וועגן.
דעמאָלט איך קענען גיין פאָרויס און טאָן עפּעס ווי צוריקקומען אמת.
אַנדערש, אויב אַז ס 'נישט דער פאַל, וואָס טאָן איך ווילן צו טאָן?
ווי טאָן איך איבערזעצן צו קאָד וואָס אַניטאַ האט אַזוי ינטויטיוולי דורך גיין דורך דער רשימה?
וואָס זאָל איך טאָן אַרויף דאָ צו סימולירן אַניטאַ גענומען אַז שריט צו די לינקס, אַז שריט צו די לינקס?
[ינאָדאַבאַל תּלמיד ענטפער] >> וואָס ס וואָס?
[ינאָדאַבאַל תּלמיד ענטפער]
גוט, נישט אַ שלעכט געדאַנק, אָבער אין דער פאַרגאַנגענהייַט, ווען מיר ווע געטאן דעם, מיר ווע געטאן אַניטאַ + +
ווייַל וואָס וואָלט לייגן די נומער 1 צו אַניטאַ,
וואָס וואָלט טיפּיקלי פונט אין דער ווייַטער מענטש, ווי ראַמאָן,
אָדער דער מענטש ווייַטער צו אים, אָדער די ווייַטער צו אים מענטש אַראָפּ די שורה.
אבער אַז ס 'נישט גאַנץ גוט דאָ ווייַל וואָס טוט דעם זאַך קוק ווי אין זכּרון?
נישט וואָס. מיר האָבן צו דיסייבאַל אַז.
עס קוקט ווי דעם אין זכּרון, און אַפֿילו כאָטש איך ווע ציען 1 און 2 און 3 נאָענט צו איינער דעם אנדערן,
אויב מיר טאַקע סימולירן דעם-קענען איר גייז, בשעת נאָך פּוינטינג בייַ די זעלבע מענטשן,
קענען עטלעכע פון ​​איר נעמען אַ טראַפ שריט צוריק, עטלעכע פון ​​איר אַ טראַפ שריט פאָרויס?
>> דעם באַלאַגאַן איז נאָך אַ לינגקט רשימה,
אָבער די גייז קען זייַן ערגעץ אין זכּרון,
אַזוי אַניטאַ + + איז נישט געגאנגען צו אַרבעט וואָס?
וואָס ס בייַ אָרט אַניטאַ + +?
ווער ווייסט.
עס ס עטלעכע אנדערע ווערט אַז פּונקט אַזוי כאַפּאַנז צו זייַן ינטערפּאָסעד
צווישן אַלע פון ​​די נאָודז דורך געלעגנהייַט ווייַל מיר רע נישט ניצן אַ מענגע.
מיר אַלאַקייטיד יעדער פון די נאָודז ינדיווידזשואַלי.
אָוקיי, אויב איר גייז קענען ריין אליין צוריק אַרויף.
זאל מיר פאָרשלאָגן אַז אַנשטאָט פון אַניטאַ + +, מיר אַנשטאָט טאָן אַניטאַ געץ-
נו, וואָס טוט ניט מיר גיין צו וועלכער אַניטאַ איז פּוינטינג בייַ און דעמאָלט טאָן. ווייַטער?
אין אנדערע ווערטער, מיר גיין צו ראַמאָן, וואס ס האלטן די נומער 22,
און דעמאָלט. ווייַטער איז ווי כאָטש אַניטאַ וואָלט זייַן קאַפּיינג זייַן לינקס האַנט טייַטל.
אבער זי וואָלט נישט גיין ווייַטער ווי ראַמאָן ווייַל מיר געפונען 22.
אבער וואָס וואָלט זייַן די געדאַנק. איצט, דאָס איז אַ גאָט-שרעקלעך באַלאַגאַן.
האָנעסטלי, קיין איינער וועט אלץ געדענקען דעם סינטאַקס, און אַזוי טאַנגקפאַלי,
עס ס 'פאקטיש אַ ביסל דיליבראַט-אָה, ​​איר האט נישט פאקטיש זען וואָס איך געשריבן.
דאס וואָלט זייַן מער קאַמפּעלינג אויב איר קען. וווואַלאַ!
>> הינטער די סינז, איך איז געווען סאַלווינג די פּראָבלעם דעם וועג.
אַניטאַ, צו נעמען אַז שריט צו די לינקס,
ערשטער, מיר טאָן גיין צו דער אַדרעס וואָס אַניטאַ איז פּוינטינג בייַ
און ווו זי וועט געפֿינען ניט בלויז ען, וואָס מיר נאָר אָפּגעשטעלט פֿאַר פאַרגלייַך ס צוליב,
אָבער איר וועט אויך געפֿינען ווייַטער - אין דעם פאַל,
ראַמאָן ס לינקס האַנט פּוינטינג צו דער ווייַטער נאָדע אין די רשימה.
אבער דאָס איז דער גאָט-שרעקלעך באַלאַגאַן צו וואָס איך ריפערד פריער,
אָבער עס טורנס אויס C לעץ אונדז פאַרפּאָשעטערן דעם.
אַנשטאָט פון שרייבן (* אַניטאַ), מיר קענען אַנשטאָט נאָר שרייַבן אַניטאַ-> N,
און עס ס די פּינטלעך זעלבע זאַך פאַנגקשאַנאַלי, אָבער עס ס אַ פּלאַץ מער ינטואַטיוו,
און עס ס אַ פּלאַץ מער קאָנסיסטענט מיט די בילד וואָס מיר ווע שוין צייכענונג
אַלע דעם צייַט ניצן אַראָוז.
>> לאַסטלי, וואָס טאָן מיר דאַרפֿן צו טאָן אין דעם סוף פון דעם פּראָגראַם?
עס ס איין שורה פון קאָד רוען.
צוריקקומען וואָס?
פאַלש, ווייַל אויב מיר באַקומען דורך די גאנצע בשעת שלייף
און אַניטאַ איז, אין פאַקט, נאַל, אַז מיטל זי געגאנגען אַלע די וועג צו די סוף פון די רשימה
ווו זי איז געווען פּוינטינג אין-וואָס ס 'דיין נאָמען ווידער?
אַרי. >> אַרי 'ס לינקס האַנט, וואָס איז נאַל.
אַניטאַ איז איצט נאַל, און איך פאַרשטיין איר ניטאָ נאָר שטייענדיק דאָ אָקווערדלי אין לימבאָו
ווייַל איך בין געגאנגען אַוועק אויף אַ מאָנאָלאָג דאָ,
אָבער מיר וועט אַרייַנציען איר ווידער אין נאָר אַ מאָמענט.
אַניטאַ איז נאַל בייַ אַז פונט אין דער געשיכטע, אַזוי די בשעת שלייף טערמינייץ,
און מיר האָבן צו צוריקקומען פאַלש ווייַל אויב זי גאַט אַלע די וועג צו אַרי ס נאַל טייַטל
דעמאָלט דאָרט געווען קיין נומער אַז זי געזוכט אין די רשימה.
מיר קענען ריין דעם אַרויף אויך, אָבער דאָס איז אַ שיין גוט ימפּלאַמענטיישאַן דעמאָלט
פון אַ טראַווערסאַל פונקציאָנירן, אַ געפֿינען פֿונקציע פֿאַר אַ לינגקט רשימה.
עס ס נאָך לינעאַר זוכן, אָבער עס ס ניט ווי פּשוט ווי + + אַ טייַטל
אָדער + + אַן איך בייַטעוודיק ווייַל איצט מיר קענען נישט טרעפן
ווו יעדער פון די נאָודז זענען אין זכּרון.
מיר האָבן צו ממש נאָכפאָלגן דעם שטעג פון ברעאַדקרומבס אָדער, מער ספּאַסיפיקלי,
פּוינטערז, צו באַקומען פון איינער נאָדע צו אנדערן.
>> איצט לאָזן ס פּרובירן אנדערן איינער. אַניטאַ, טאָן איר ווילן צו קומען צוריק דאָ?
פארוואס טאָן ניט מיר גיין פאָרויס און אַלאַקייט איין אנדערע מענטש פון די וילעם?
מאַללאָק-וואָס ס אייער נאָמען? >> רעבעקקאַ.
רעבעקקאַ. רעבעקקאַ האט שוין מאַללאָסעד פון די וילעם,
און זי איז איצט סטאָרינג די נומער 55.
און דער ציל בייַ האַנט איצט איז פֿאַר אַניטאַ צו אַרייַנלייגן
רעבעקקאַ אין די לינגקט רשימה דאָ אין זייַן צונעמען אָרט.
קומען אויף איבער דאָ פֿאַר אַ מאָמענט.
איך האָבן געטאן עפּעס ווי דעם.
איך האָבן געטאן נאָדע *. און וואָס ס 'דיין נאָמען ווידער?
רעבעקקאַ. >> רעבעקקאַ, אָוקיי.
רעבעקקאַ געץ מאַללאָק (סיזעאָף (נאָדע)).
פּונקט ווי מיר האָבן אַלאַקייטיד זאכן ווי סטודענטן און וואַטנאַט אין דער פאַרגאַנגענהייַט,
מיר דאַרפֿן די גרייס פון דעם נאָדע, אַזוי איצט רעבעקקאַ
איז פּוינטינג אין וואָס?
רעבעקקאַ האט צוויי פעלדער ין פון איר, איינער פון וואָס איז 55.
זאל ס טאָן וואָס, ראַבעקאַ-> = 55.
אבער דעמאָלט ראַבעקאַ-> ווייַטער זאָל זייַן-ווי רעכט איצט, איר האַנט איז מין פון ווער ווייסט?
עס ס פּוינטינג בייַ עטלעכע מיסט ווערט, אַזוי וואָס טאָן ניט פֿאַר גוט מאָס
מיר בייַ מינדסטער טאָן דעם אַזוי אַז לינקס האַנט איז איצט בייַ איר זייַט.
איצט אַניטאַ, נעמען עס פון דאָ.
איר האָבן רעבעקקאַ ווייל שוין אַלאַקייטיד.
גיין פאָרויס און געפֿינען ווו מיר זאָל שטעלן רעבעקקאַ.
גוט, זייער גוט.
אָוקיי, גוט, און איצט מיר דאַרפֿן איר צו צושטעלן אַ ביסל פון ריכטונג,
אַזוי איר ווע ריטשט אַרי.
זיין לינקס האַנט איז נאַל, אָבער רעבעקקאַ קלאר געהערט צו די רעכט,
אַזוי ווי טאָן מיר האָבן צו יבערבייַטן דעם לינגקט רשימה
אין סדר צו אַרייַנלייגן רעבעקקאַ אין די צונעמען אָרט?
אויב איר קען ממש מאַך מענטשן ס לינקס הענט אַרום ווי דארף,
מיר וועט פאַרריכטן דעם פּראָבלעם אַז וועג.
אָוקיי, גוט, און דערווייַל, רעבעקקאַ ס לינקס האַנט איז איצט דורך איר זייַט.
>> וואָס איז געווען אויך גרינג.
זאל ס פּרובירן אַלאַקייטינג-ווער כּמעט געטאן, 20.
אָוקיי, קומען אויף אַרויף.
20 האט שוין אַלאַקייטיד, אַזוי לאָזן מיר גיין פאָרויס און זאָגן ווידער דאָ
מיר ווע נאָר געטאן נאָדע * סאַד.
מיר האָבן מאַללאָק (סיזעאָף (נאָדע)).
מיר דאַן טאָן די זעלבע פּינטלעך סינטאַקס ווי מיר האבן פריער פֿאַר 20,
און איך וועט טאָן ווייַטער = נאַל, און איצט עס ס אַרויף צו אַניטאַ
צו אַרייַנלייגן איר אין די לינגקט רשימה, אויב איר קען שפּילן וואָס פּינטלעך זעלבע ראָלע.
ויספירן.
אָוקיי, גוט.
איצט טראַכטן קערפאַלי איידער איר אָנהייב מאָווינג לינקס הענט אַרום.
איר דורך ווייַט גאַט דער רובֿ ומגעלומפּערט ראָלע הייַנט.
וועמענס האַנט זאָל זייַן אריבערגעפארן ערשטער?
אָוקיי, וואַרטן, איך בין געהער עטלעכע קיין ס.
אויב עטלעכע פאָלקס וואָלט בענימעס ווי צו העלפן סאָלווע אַ ומגעלומפּערט סיטואַציע דאָ.
וועמענס לינקס האַנט זאָל זייַן דערהייַנטיקט ערשטער טאָמער? יאָ.
[תּלמיד] סאַד ס.
אָוקיי, סאַאַד ס, וואָס, כאָטש?
[ינאָדאַבאַל תּלמיד ענטפער]
גוט, ווייַל אויב מיר מאַך-וואָס ס אייער נאָמען? >> מאַרשאַל.
מאַרשאַל, אויב מיר מאַך זייַן האַנט ערשטער אַראָפּ צו נאַל,
איצט מיר האָבן ממש אָרפאַנד פיר מענטשן אין דעם רשימה
ווייַל ער איז געווען דער בלויז זאַך פּוינטינג בייַ ראַמאָן און אַלעמען צו די לינקס,
אַזוי אַפּדייטינג אַז טייַטל ערשטער איז געווען שלעכט.
זאל ס ופמאַכן אַז.
גוט, און איצט גיין פאָרויס און מאַך די צונעמען לינקס האַנט פּוינטינג בייַ ראַמאָן.
דאס פילז אַ ביסל יבעריק.
איצט דאָרט ס צוויי מענטשן פּוינטינג בייַ ראַמאָן, אָבער אַז ס פייַן
ווייַל איצט ווי אַנדערש טאָן מיר דערהייַנטיקן די רשימה?
וואָס אנדערע האַנט האט צו רירן?
ויסגעצייכנט, איצט האָבן מיר פאַרפאַלן קיין זכּרון?
ניין, אַזוי גוט, לאָזן ס זען אויב מיר קענען נישט ברעכן דעם אַמאָל מער.
>> מאַללאָסינג איין לעצטע מאָל, נומער 5.
כל די וועג אין צוריק, קומען אויף אַראָפּ.
עס ס זייער יקסייטינג.
[אַפּלאָדיסמענטן]
וואָס ס 'דיין נאָמען? >> ראָן.
ראָן, אָוקיי, איר זענט מאַללאָסעד ווי נומער 5.
מיר ווע נאָר עקסאַקיוטאַד קאָד אַז ס 'כּמעט יידעניקאַל צו די
מיט נאָר אַ אַנדערש נאָמען.
ויסגעצייכנט.
איצט, אַניטאַ, גוט גליק ינסערטינג נומער 5 אין דער רשימה איצט.
גוט, און?
ויסגעצייכנט, אַזוי דאָס איז טאַקע די דריט פון דרייַ גאַנץ קאַסעס.
מיר ערשטער האט עמעצער אין די סוף, רעבעקקאַ.
מיר דעמאָלט האט עמעצער אין דער מיטן.
איצט מיר האָבן עמעצער אין די אָנהייב, און אין דעם בייַשפּיל,
מיר איצט האט צו דערהייַנטיקן לוקאַס פֿאַר די ערשטער מאָל
ווייַל דער ערשטער עלעמענט אין דער רשימה איצט האט צו פונט בייַ אַ נייַ נאָדע,
וואס, אין דרייַ, איז פּוינטינג בייַ נאָדע נומער 9.
>> דאס איז געווען אַ כיודזשלי ומגעלומפּערט דעמאַנסטריישאַן, איך בין זיכער,
אַזוי אַ גרויס קייַלעכיק פון אַפּלאָדיסמענטן פֿאַר די גייז אויב איר קען.
נייסלי געטאן.
אַז ס אַלע. איר זאלט ​​האַלטן דיין ברעקלעך פון פּאַפּיר ווי אַ קליין זכּרון.
עס טורנס אויס אַז טאן דאָס אין קאָד
איז נישט גאַנץ ווי פּשוט ווי נאָר מאָווינג הענט אַרום
און פּוינטינג פּוינטערז בייַ פאַרשידענע זאכן.
אבער פאַרשטיין אַז ווען עס קומט צייַט צו מאַכשער עפּעס ווי
אַ לינגקט רשימה אָדער אַ וואַריאַנט פון אים אויב איר פאָקוס אויף טאַקע
די גרונט פאַנדאַמענאַלז, די בייַסן-גרייס פּראָבלעמס איך האָבן צו רעכענען אויס,
איז עס דעם האַנט אָדער דעם האַנט, פאַרשטיין אַז וואָס איז אַנדערש אַ פערלי קאָמפּלעקס פּראָגראַם
קענען, אין פאַקט, זייַן רידוסט צו פערלי פּשוט בנין בלאַקס ווי דעם.
>> זאל ס נעמען דאס אין אַ מער סאַפיסטאַקייטיד ריכטונג נאָך.
מיר איצט האָבן די געדאנק פון די לינגקט רשימה.
מיר אויך האָבן-דאַנק צו די פאָרשלאָג צוריק דאָרט-אַ דאַבלי לינגקט רשימה,
וואָס קוקט כּמעט די זעלבע, אָבער איצט מיר האָבן צוויי פּוינטערז ין פון די סטרוקט
אַנשטאָט פון איין, און מיר קען מיסטאָמע רופן יענע פּוינטערז פֿריִערדיקע און ווייַטער
אָדער לינקס אָדער רעכט, אָבער מיר טאָן, אין פאַקט, דאַרפֿן צוויי פון זיי.
די קאָד וואָלט זייַן אַ ביסל מער ינוואַלווד.
אַניטאַ וואָלט האָבן געהאט צו טאָן מער אַרבעט דאָ אויף דער בינע.
אבער מיר קען זיכער מאַכשער אַז מין פון סטרוקטור.
אין טערמינען פון פליסנדיק צייַט, כאָטש, וואָס וואָלט זייַן די פליסנדיק צייַט
פֿאַר אַניטאַ פון געפונען אַ נומער N אין אַ לינגקט רשימה איצט?
נאָך גרויס אָ פון N, אַזוי עס ס ניט בעסער ווי לינעאַר זוכן.
מיר קענען ניט טאָן ביינערי זוכן, כאָטש, ווידער.
פארוואס איז געווען אַז דער פאַל? איר קענען נישט שפּרינגען אַרום.
אפילו כאָטש מיר דאָך זען אַלע די יומאַנז אויף דער בינע,
און אַניטאַ קען האָבן ייעבאַללעד עס און געזאגט, "דאָ איז דער מיטן פון דער רשימה,"
זי וואָלט נישט וויסן אַז אויב זי געווען די קאָמפּיוטער פּראָגראַם
ווייַל דער בלויז זאַך זי האט צו לאַטש אויף צו אין די אָנהייב פון דעם סצענאַר
האט לוקאַס, וואס איז געווען דער ערשטער טייַטל.
זי וואָלט דאַווקע האָבן צו נאָכפאָלגן יענע לינקס,
קאַונטינג איר וועג ביז זי געפונען בעערעך די מיטל,
און אַפֿילו דעמאָלט, זי ס ניט געגאנגען צו וויסן ווען זי ס 'ריטשט די מיטל
סייַדן זי גייט אַלע די וועג צו דער סוף צו רעכענען אויס ווי פילע עס זענען,
דעמאָלט באַקטראַקס, און אַז אויך וואָלט זייַן שווער סייַדן איר האט
אַ דאַבלי לינגקט רשימה פון עטלעכע סאָרט.
>> סאַלווינג עטלעכע פראבלעמען הייַנט, אָבער ינטראָודוסינג אנדערע.
וואָס וועגן אַ אַנדערש דאַטן סטרוקטור בעסאַכאַקל?
דאס איז אַ פאָטאָגראַפיע פון ​​די טרייַס אין מאַדער הויז,
און אין דעם פאַל, מיר האָבן אַ דאַטן סטרוקטור מיר ווע אויך מין פון שוין שוין גערעדט וועגן.
מיר גערעדט וועגן אַ אָנלייגן אין דעם קאָנטעקסט פון זכּרון,
און אַז ס סאָרט פון דיליבראַטלי געהייסן ווייַל אַ אָנלייגן אין די טערמינען פון זכּרון
איז יפעקטיוולי אַ דאַטן סטרוקטור וואָס האט מער און מער שטאָפּן לייערד אויף שפּיץ פון עס.
אבער די טשיקאַווע זאַך וועגן אַ אָנלייגן, ווי איז דער פאַל אין פאַקט,
איז אַז עס ס אַ ספּעציעל מין פון דאַטן סטרוקטור.
עס ס אַ דאַטן סטרוקטור ווערביי דער ערשטער עלעמענט אין
איז די לעצטע עלעמענט אויס.
אויב איר זענט דער ערשטער טאַץ צו זייַן שטעלן אַנטו דעם אָנלייגן,
איר ניטאָ געגאנגען צו זייַן ליידער די לעצטע טאַץ צו זייַן גענומען אַוועק דעם אָנלייגן,
און אַז ס 'נישט דאַווקע אַ גוט זאַך.
קאָנווערסעלי, איר קענען טראַכטן וועגן אים די אנדערע וועג אַרום,
די לעצטע אין איז דער ערשטער אויס.
>> איצט, טאָן קיין סינעריאָוז קומען צו מיינונג ווו בעת אַ אָנלייגן
דאַטן סטרוקטור ווו איר האָבן אַז פאַרמאָג
פון די לעצטע אין, ערשטער אויס, איז פאקטיש קאַמפּעלינג?
איז אַז אַ גוטע זאַך? איז אַז אַ שלעכט זאַך?
עס ס באשטימט אַ שלעכט זאַך אויב די טרייַס זענען נישט אַלע יידעניקאַל
און זיי זענען אַלע ספּעציעל פאַרשידענע פארבן אָדער וואַטנאַט,
און די קאָלירן איר ווילן איז אַלע דער וועג בייַ די דנאָ.
פון קורס, איר קענען נישט באַקומען אַז אָן גרויס מי.
איר האָבן צו אָנהייב פון דער שפּיץ און אַרבעט דיין וועג אַראָפּ.
סימילאַרלי, וואָס אויב איר געווען איינער פון די פאָכער יינגלעך
וואס ווייץ אַרויף אַלע נאַכט טריינג צו באַקומען אַ יפאָנע און שורות אַרויף
אין אַ אָרט ווי דעם?
וואָלט נישט עס זייַן פייַן אויב די עפּל קראָם
געווען אַ אָנלייגן דאַטן סטרוקטור?
יייַ? נייַ?
עס ס נאָר גוט פֿאַר די מענטשן וואס ווייַזן זיך אין די לעצטע מעגלעך מינוט
און דעמאָלט באַקומען פּלאַקט אַוועק די ריי.
און אין פאַקט, די פאַקט אַז איך איז געווען אַזוי גענייגט צו זאָגן ריי
איז פאקטיש קאָנסיסטענט מיט וואָס מיר וואָלט רופן דעם מין פון דאַטן סטרוקטור,
איינער אין פאַקט ווו די סדר טוט ענין,
און איר ווילן די ערשטער איינער אין צו זייַן דער ערשטער איינער אויס
אויב נאָר פֿאַר די צוליב פון מענטש יוישער.
מיר וועט בכלל רופן אַז אַ ריי דאַטן סטרוקטור.
>> עס טורנס אויס חוץ לינגקט רשימות, מיר קענען אָנהייבן ניצן די זעלבע גרונט געדאנקען
און אָנהייבן שאפן נייַ און פאַרשידענע טייפּס פון סאַלושאַנז צו פראבלעמען.
פֿאַר בייַשפּיל, אין דעם פאַל פון אַ אָנלייגן, מיר געקענט פאָרשטעלן אַ אָנלייגן
ניצן אַ דאַטן סטרוקטור ווי דעם, איך וואָלט פאָרשלאָגן.
אין דעם פאַל, איך ווע דערקלערט אַ סטרוקט, און איך ווע האט ין פון דעם סטרוקטור
איז אַ מענגע פון ​​נומערן און דעמאָלט אַ בייַטעוודיק גערופן גרייס,
און איך בין געגאנגען צו רופן דעם זאַך אַ אָנלייגן.
איצט, וואָס טוט דאָס פאקטיש אַרבעט?
אין דעם פאַל פון אַ סטאַק, איך קען ציען דעם יפעקטיוולי אויף די פאַרשטעלן ווי אַ מענגע.
דאָ איז מיין אָנלייגן. יענע ביסט מיין נומערן.
און מיר וועט ציען זיי ווי דאָס, דעם, דאָס, דעם, דאָס.
און דעמאָלט איך האָבן עטלעכע אנדערע דאַטן מיטגליד דאָ,
וואָס איז גערופן נומער, אַזוי דאָס איז נומער, און דאָס איז נומערן,
און קאַלעקטיוולי, די גאנצע יפּאַד דאָ רעפּראַזענץ מען אָנלייגן סטרוקטור.
איצט, דורך פעליקייַט, גרייס האט מאַשמאָעס גאַט צו זייַן ינישאַלייזד צו 0,
און וואָס ס 'ין פון די מענגע פון ​​נומערן טכילעס
ווען איך ערשטער אַלאַקייט אַ מענגע?
מיסט. ווער ווייסט? און עס טוט נישט פאקטיש ענין.
עס טוט נישט ענין אויב דאָס איז 1, 2, 3, 4, 5, גאָר ראַנדאַמלי
דורך שלעכט גליק סטאָרד אין מיין סטרוקטור ווייַל אַזוי לאַנג ווי איך וויסן אַז די גרייס פון דעם אָנלייגן
איז 0, דעמאָלט איך וויסן פּראָגראַממאַטיקאַללי, טאָן נישט קוקן אין קיין פון די יסודות אין די מענגע.
עס טוט נישט ענין וואָס ס דאָרט.
צי ניט קוקן בייַ זיי, ווי וואָלט זייַן די ימפּלאַקיישאַן פון אַ גרייס פון 0.
>> אבער רעכן איצט איך גיין פאָרויס און אַרייַנלייגן עפּעס אין דעם אָנלייגן.
איך ווילן צו אַרייַנלייגן די נומער 5, אַזוי איך שטעלן נומער 5 דאָ,
און דעמאָלט וואָס טאָן איך שטעלן אַראָפּ דאָ?
איצט איך וואָלט פאקטיש שטעלן אַראָפּ 1 פֿאַר די נומער,
און איצט דעם אָנלייגן איז פון נומער 1.
וואָס אויב איך גיין פאָרויס און אַרייַנלייגן די נומער, לאָזן ס זאָגן, 7 ווייַטער?
דאס דעמאָלט געץ דערהייַנטיקט צו 2, און דאַן מיר וועט טאָן 9,
און דאַן דעם געץ דערהייַנטיקט צו 3.
אבער די טשיקאַווע שטריך איצט פון דעם אָנלייגן איז אַז
איך בין געמיינט צו באַזייַטיקן וואָס עלעמענט אויב איך ווילן צו קנאַל
עפּעס אַוועק פון דעם אָנלייגן, אַזוי צו רעדן?
9 וואָלט זייַן דער ערשטער זאַך צו גיין.
ווי זאָל דער בילד טוישן אויב איך ווילן צו קנאַל אַן עלעמענט אַוועק דעם אָנלייגן,
פיל ווי אַ טאַץ אין מאַדער?
יאָ. >> [תּלמיד] באַשטעטיק גרייס צו 2.
פּונקט, אַלע איך טאָן איז באַשטימט גרייס צו 2, און וואָס טאָן איך טאָן מיט די מענגע?
איך טאָן ניט האָבן צו טאָן עפּעס.
איך קען, נאָר צו זייַן אַנאַל, שטעלן אַ 0 דאָרט אָדער אַ -1 אָדער עפּעס צו באַטייַטן
אַז דאָס איז נישט אַ לעגיט ווערט, אָבער עס טוט נישט ענין ווייַל
איך קענען רעקאָרד אַרויס פון די מענגע זיך ווי לאַנג עס איז
אַזוי אַז איך וויסן נאָר קוק אין דער ערשטער צוויי עלעמענטן אין דעם מענגע.
איצט, אויב איך גיין און לייגן די נומער 8 צו דעם מענגע, ווי טוט די בילד טוישן ווייַטער?
דאס ווערט 8, און דעם ווערט 3.
איך בין קאַטינג אַ ביסל עקן דאָ.
איצט מיר האָבן 5, 7, 8, און מיר רע צוריק צו אַ נומער פון 3.
דאס איז שיין פּשוט צו מאַכשער,
אָבער ווען זענען מיר געגאנגען צו באַדויערן דעם פּלאַן באַשלוס?
ווען טאָן דאס אָנהייבן צו גיין זייער, זייער אומרעכט? יאָ.
[ינאָדאַבאַל תּלמיד ענטפער]
ווען איר ווילן צו גיין צוריק און באַקומען די ערשטער עלעמענט איר שטעלן ין
>> עס טורנס אויס דאָ אַפֿילו כאָטש אַ אָנלייגן איז אַ מענגע ונטער דער קאַפּטער,
די דאַטן סטראַקטשערז מיר ווע אנגעהויבן גערעדט וועגן זענען אויך בכלל באקאנט ווי
אַבסטראַקט דאַטן סטראַקטשערז ווערביי ווי זיי ניטאָ ימפּלאַמענטאַד
איז גאָר חוץ די פונט.
א דאַטן סטרוקטור ווי אַ אָנלייגן איז געמיינט צו לייגן שטיצן
אַפּעריישאַנז ווי שטופּן, וואָס פּושיז אַ טאַץ אַנטו דעם אָנלייגן,
און קנאַל, וואָס רימוווז אַן עלעמענט פון דעם אָנלייגן, און אַז ס עס.
אויב איר געווען צו אָפּלאָדירן עמעצער אַנדערש ס קאָד וואס שוין ימפּלאַמענטאַד
דעם זאַך גערופן אַ אָנלייגן, אַז מענטש וואָלט האָבן געשריבן
בלויז צוויי פאַנגקשאַנז פֿאַר איר, שטופּן און קנאַל, וועמענס פּיאַטע ציל אין לעבן
וואָלט זייַן צו טאָן פּונקט וואָס.
איר אָדער אים אָדער איר וואס ימפּלאַמענטאַד אַז פּראָגראַם
וואָלט האָבן שוין לעגאַמרע די איין צו באַשליסן ווי צו מאַכשער
די סימאַנטיקס פון פּושינג און פּאַפּינג ונטער דער קאַפּטער
אָדער די פאַנגקשאַנאַליטי פון פּושינג און פּאַפּינג.
און איך האב געמאכט אַ עפּעס שאָרצייטיד באַשלוס דאָ
דורך ימפּלאַמענינג מיין אָנלייגן מיט דעם פּשוט דאַטן סטרוקטור וואָס?
ווען טוט דעם דאַטן סטרוקטור ברעכן?
אין וואָס פונט טאָן איך האָבן צו צוריקקומען אַ טעות ווען דער באַניצער רופט שטופּן, פֿאַר בייַשפּיל?
[תּלמיד] אויב דאָרט ס ניט מער פּלאַץ.
פּונקט, אויב דאָרט ס ניט מער פּלאַץ, אויב איך ווע יקסידיד קאַפּאַציטעט,
וואָס איז אַלע קאַפּס ווייַל עס סאַגדזשעס אַז עס ס עטלעכע מין פון גלאבאלע קעסיידערדיק.
נו, דאַן איך בין נאָר געגאנגען צו האָבן צו זאָגן, "אנטשולדיגט, איך קען נישט שטופּן אנדערן ווערט
אַנטו דעם אָנלייגן, "פיל ווי אין מאַדער.
>> אין עטלעכע פונט, זיי ניטאָ געגאנגען צו שלאָגן די שפּיץ טייל פון וואָס ביסל קאַבינעט.
עס ס ניט מער פּלאַץ אָדער קאַפּאַציטעט אין דעם אָנלייגן, אין וואָס פונט דאָרט ס עטלעכע מין פון טעות.
זיי האָבן צו שטעלן די עלעמענט ערגעץ אַנדערש, דער טאַץ ערגעץ אַנדערש,
אָדער ינ ערגעצ ניט בייַ אַלע.
איצט, מיט אַ ריי, מיר קען מאַכשער עס אַ ביסל דיפערענטלי.
א ריי איז אַ ביסל אַנדערש אין אַז ונטער דער קאַפּטער, עס קענען זייַן ימפּלאַמענטאַד
ווי אַ מענגע, אָבער וואָס, אין דעם פאַל, בין איך פּראַפּאָוזינג
צו אויך האָבן אַ קאָפּ עלעמענט רעפּריזענטינג די קאָפּ פון דער רשימה,
די פראָנט פון די רשימה, דער ערשטער מענטש אין שורה אין די עפּל קראָם, אין דערצו צו גרייס?
פארוואס טאָן איך דאַרפֿן אַן נאָך שטיק פון דאַטן דאָ?
טראַכטן צוריק צו וואָס נומערן איז
אויב איך ווע ציען עס ווי גייט.
רעכן דאָס איז איצט אַ ריי אַנשטאָט פון אַ אָנלייגן,
די חילוק זייַענדיק-פּונקט ווי די עפּל קראָם-ריי איז שיין.
דער ערשטער מענטש אין שורה אין די אָנהייב פון דער רשימה, נומער 5 אין דעם פאַל,
ער אָדער זי איז געגאנגען צו זייַן לאָזן אין די קראָם ערשטער.
זאל ס טאָן אַז.
רעכן אַז דאָס איז די שטאַט פון מיין ריי אין דעם מאָמענט אין צייַט, און איצט די עפּל קראָם
עפענען און דער ערשטער מענטש, נומער 5, איז געפירט אין די קראָם.
ווי טאָן איך טוישן דעם בילד איצט אַז איך האָבן דע-קוועועד דער ערשטער מענטש
אין די פראָנט פון די שורה?
וואָס ס וואָס? >> [תּלמיד] בייַט די ריי.
טוישן די קאָפּ, אַזוי 5 פארשווינדט.
אין פאַקט, עס ס ווי כאָטש-ווי בעסטער צו טאָן דעם?
אין פאַקט, עס ס ווי כאָטש דעם באָכער פארשווינדט.
וואָס וואָלט נומער 7 טאָן אין אַ פאַקטיש קראָם?
זיי וואָלט נעמען אַ גרויס שריט פאָרויס.
>> אבער וואָס האָבן מיר קומען צו אָפּשאַצן ווען עס קומט צו ערייז
און מאָווינג זאכן אַרום?
אַז ס מין פון אַ וויסט פון אייער צייַט, רעכט?
פארוואס טאָן איר האָבן צו זייַן אַזוי אַנאַל ווי צו האָבן דער ערשטער מענטש
אין די אָנהייב פון די שורה בייַ פיזיקלי דער אָנהייב פון דער פּייַדע פון ​​זכּרון?
אַז ס גאָר ומנייטיק. פארוואס?
וואָס קען איך נאָר געדענקען אַנשטאָט? >> [ינאָדאַבאַל תּלמיד ענטפער]
פּונקט, איך קען נאָר געדענקען מיט דעם נאָך דאַטן מיטגליד קאָפּ
אַז איצט די קאָפּ פון די רשימה איז ניט מער 0, וואָס עס איז געווען אַ מאָמענט צוריק.
איצט עס ס 'פאקטיש די נומער 1. אין דעם וועג, איך באַקומען אַ קליין אַפּטאַמאַזיישאַן.
נאָר ווייַל איך ווע דע-קוועועד עמעצער פון שורה אין די אָנהייב פון די שורה בייַ די עפּל קראָם
טוט נישט מיינען אַלעמען האט צו שיפט, וואָס צוריקרופן איז אַ לינעאַר אָפּעראַציע.
איך קענען אַנשטאָט פאַרברענגען קעסיידערדיק צייַט בלויז
און דערגרייכן דעמאָלט אַ פיל פאַסטער ענטפער.
אבער די פּרייַז איך בין פּייינג איז וואָס צו געווינען אַז נאָך פאָרשטעלונג
און נישט ווייל צו יבעררוק אַלעמען?
יאָ. >> [ינאָדאַבאַל תּלמיד ענטפער]
קענען לייגן מער מענטשן, געזונט, אַז פּראָבלעם איז אָרטאָגאַנאַל
צו די פאַקט אַז מיר ניטאָ ניט שיפטינג מענטשן אַרום.
עס ס נאָך אַ מענגע, אַזוי צי אָדער נישט מיר יבעררוק אַלעמען אָדער נישט-
אָה, איך זען וואָס איר מיינען, אָוקיי.
פאקטיש, איך שטימען מיט וואָס איר ניטאָ זאגן אין אַז עס ס כּמעט ווי כאָטש
מיר רע איצט קיינמאָל געגאנגען צו נוצן די אָנהייב פון דעם מענגע ענימאָר
ווייַל אויב איך אַראָפּנעמען 5, דעמאָלט איך אַראָפּנעמען 7.
אבער איך נאָר שטעלן מענטשן צו די רעכט.
>> עס פילז ווי איך בין ווייסטינג פּלאַץ, און יווענטשאַוואַלי מיין ריי דיסינטאַגרייץ אין גאָרנישט בייַ אַלע,
אַזוי מיר קען נאָר האָבן מענטשן ווראַפּאַראָונד,
און מיר געקענט טראַכטן פון דעם מענגע טאַקע ווי עטלעכע מין פון קייַלעכיק סטרוקטור,
אָבער מיר נוצן וואָס אָפּעראַטאָר אין C צו טאָן אַז סאָרט פון ווראַפּאַראָונד?
[ינאָדאַבאַל תּלמיד ענטפער] >> די מאָדולאָ אָפּעראַטאָר.
עס וואָלט זייַן אַ ביסל אַנויינג צו טראַכטן דורך ווי טאָן איר טאָן די ווראַפּאַראָונד,
אָבער מיר קען טאָן עס, און מיר קען אָנהייבן פּאַטינג מענטשן אין וואָס געניצט צו זייַן די פראָנט פון די שורה,
אָבער מיר נאָר געדענקען מיט דעם קאָפּ בייַטעוודיק וואס די פאַקטיש קאָפּ פון די שורה פאקטיש איז.
וואָס אויב, אַנשטאָט, אונדזער ציל לעסאָף, כאָטש,
איז געווען צו קוקן אַרויף נומערן, ווי מיר האבן דאָ אויף בינע מיט אַניטאַ,
אָבער מיר טאַקע ווילן די בעסטער פון אַלע די וועלטן?
מיר ווילן מער סאַפיסטאַקיישאַן ווי מענגע אַלאַוז
ווייַל מיר ווילן די פיייקייַט צו דינאַמיקאַללי וואַקסן די דאַטן סטרוקטור.
אבער מיר טאָן נישט וועלן צו האָבן צו Resort צו עפּעס אַז מיר אנגעוויזן אויס
אין דער ערשטער לעקציע איז געווען ניט אַ אָפּטימאַל אַלגערידאַם,
אַז פון לינעאַר זוכן.
עס טורנס אויס אַז איר קענען, אין פאַקט, דערגרייכן
אָדער בייַ מינדסטער נאָענט צו קעסיידערדיק צייַט, ווערביי עמעצער ווי אַניטאַ,
אויב זי קאָנפיגורעס איר דאַטן סטרוקטור ניט צו זייַן אַ לינגקט רשימה,
ניט צו זייַן אַ סטאַק, נישט צו זייַן אַ ריי, קען, אין פאַקט,
קומען אַרויף מיט אַ דאַטן סטרוקטור וואָס אַלאַוז איר צו קוקן אַרויף זאכן,
אַפֿילו ווערטער, ניט נאָר נומערן, אין וואָס מיר וועט רופן קעסיידערדיק צייַט.
>> און אין פאַקט, זוכן פאָרויס, איינער פון די פּסעץ אין דעם קלאַס איז כּמעט שטענדיק
אַ ימפּלאַמענטיישאַן פון אַ ספּעללטשעקקער, ווערביי
מיר געבן איר ווידער עטלעכע 150.000 ענגליש ווערטער און דער ציל איז צו
מאַסע יענע אין זכּרון און ראַפּאַדלי זייַן ביכולת צו ענטפֿערן פראגעס פון די פאָרעם
איז דאָס וואָרט ספּעלד ריכטיק?
און עס וואָלט טאַקע זויגן אויב איר האט צו יטעראַטע דורך אַלע 150.000 ווערטער צו ענטפֿערן אַז.
אבער, אין פאַקט, מיר וועט זען אַז מיר קענען טאָן עס אין זייער, זייער שנעל צייַט.
און עס ס געגאנגען צו אַרייַנציען ימפּלאַמענינג עפּעס גערופן אַ האַש טיש,
און אַפֿילו כאָטש בייַ ערשטער בליק דעם זאַך גערופן אַ האַש טיש איז געגאנגען צו
לאָזן אונדז דערגרייכן די סופּער גיך ענטפער מאל,
עס טורנס אויס אַז עס איז אין פאַקט אַ פּראָבלעם.
ווען עס קומט צייַט צו מאַכשער דעם זאַך גערופן-ווידער, איך בין טאן עס ווידער.
איך בין די נאָר איינער דאָ.
ווען עס קומט צייַט צו ימפּלאַמענינג דעם זאַך גערופן אַ האַש טיש,
מיר רע געגאנגען צו האָבן צו מאַכן אַ באַשלוס.
ווי גרויס זאָל דעם זאַך פאקטיש זייַן?
און ווען מיר אָנהייבן ינסערטינג נומערן אין דעם האַש טיש,
ווי זענען מיר געגאנגען צו קראָם זיי אין אַזאַ אַ וועג
אַז מיר קענען באַקומען זיי צוריק אויס ווי געשווינד ווי מיר גאַט זיי אין?
אבער מיר וועט זען איידער לאַנג אַז דעם קשיא פון
ווען אַלעמען ס דיין געבורסטאָג איז אין דער קלאַס וועט זייַן גאַנץ דזשערמיין.
עס טורנס אויס אַז אין דעם צימער, מיר ווע גאַט אַ ביסל הונדערט מענטשן,
אַזוי די שאַנסן אַז צוויי פון אונדז האָבן די זעלבע דיין געבורסטאָג איז מיסטאָמע שיין הויך.
וואָס אויב עס זענען נאָר 40 פון אונדז אין דעם צימער?
וואָס זענען די שאַנסן פון צוויי מענטשן בעת ​​דער זעלביקער דיין געבורסטאָג?
[סטודענטן] איבער 50%.
יאָ, איבער 50%. אין פאַקט, איך אַפֿילו געבראכט אַ טשאַרט.
עס טורנס אויס-און דאָס איז טאַקע נאָר אַ סניק פאָרויסיקע ווייַזונג-
אויב דאָרט ס נאָר 58 פון אונדז אין דעם צימער, די מאַשמאָעס פון 2 פון אונדז
בעת דער זעלביקער דיין געבורסטאָג איז כיודזשלי הויך, כּמעט 100%,
און אַז ס 'געגאנגען צו פאַרשאַפן אַ גאַנץ בינטל פון שאַטן פֿאַר אונדז אויף מיטוואך.
>> מיט וואָס האט געזאגט, לאָזן ס אָפּליגן דאָ. מיר וועט זען איר אויף מיטוואך.
[אַפּלאָדיסמענטן]
[CS50.TV]