[מוזיק פּלייינג] דאַג לויד: גוט, אַזוי ביי דעם פונט אין דעם קורס, מיר ווע באדעקט אַ פּלאַץ פון די באַסיקס פון סי מיר וויסן אַ פּלאַץ וועגן וועריאַבאַלז, ערייז, פּוינטערז, אַלע אַז גוט שטאָפּן. יענע זענען אַלע סאָרט פון געבויט אין צו זען ווי די פונדאַמענטאַלס, אָבער מיר קענען טאָן מער, רעכט? מיר קענען פאַרבינדן זאכן צוזאַמען אין טשיקאַווע וועגן. און אַזוי לאָזן ס טאָן אַז, לאָזן ס אָנהייבן צו צווייַג אויס פון וואָס C גיט אונדז, און אָנהייבן צו מאַכן אונדזער אייגן דאַטן סטראַקטשערז ניצן די בנין בלאַקס צוזאַמען צו טאָן עפּעס טאַקע ווערטפול, נוציק. איין וועג מיר קענען טאָן דעם איז צו רעדן וועגן זאמלונגען. אַזוי אַזוי ווייַט מיר ווע האט איין מין פון דאַטן ביניען פֿאַר רעפּריזענטינג זאמלונגען פון ווי וואַלועס, ענלעך וואַלועס. וואס זאל זיין אַ מענגע. מיר האָבן זאמלונגען פון ינטאַדזשערז, אָדער זאמלונגען פון אותיות און אַזוי אויף. סטרוקטורעס זענען אויך סאָרט פון אַ דאַטע סטרוקטור פֿאַר קאַלעקטינג אינפֿאָרמאַציע, אָבער עס ס ניט פֿאַר קאַלעקטינג ווי וואַלועס. עס יוזשאַוואַלי מיקסעס פאַרשידענע דאַטע טייפּס צוזאַמען ין פון אַ איין קעסטל. אבער עס ס ניט זיך געניצט צו קייט צוזאַמען אָדער פאַרבינדן צוזאַמען ענלעך זאכן, ווי אַ מענגע. ערייז זענען גרויס פֿאַר עלעמענט קוקן אַרויף, אָבער צוריקרופן אַז עס ס זייער שווער צו טאָן אין אַ מענגע, סייַדן מיר ניטאָ ינסערטינג ביי די זייער סוף פון אַז מענגע. און די בעסטער משל איך האב פֿאַר וואָס איז ינסערשאַן סאָרט. אויב איר צוריקרופן אונדזער ווידעא אויף ינסערשאַן סאָרט, עס איז אַ פּלאַץ פון קאָסט ינוואַלווד אין בעת צו קלייַבן אַרויף יסודות, און יבעררוק זיי אויס פון די וועג צו פּאַסיק עפּעס אין די מיטן פון דיין מענגע. ערייז אויך לייַדן פון אנדערן פּראָבלעם, וואָס איז ינפלעקסיביליטי. ווען מיר דערקלערן אַ מענגע, מיר באַקומען איין שאָס אין עס. מיר באַקומען צו זאָגן, איך ווילן דעם פילע עלעמענטן. זאל זיין 100, עס זאל זייַן 1,000, עס זאל זייַן רענטגענ ווו x איז אַ נומער וואָס דער באַניצער האט אונדז אין אַ פּינטלעך אָדער בייַ די באַפֿעל ליניע. אבער מיר נאָר באַקומען איין שאָס אין עס, מיר טאָן ניט באַקומען צו דעמאָלט זאָגן טאַקע, טאַקע איך דארף 101, אָדער איך דארף רענטגענ פּלוס 20. אויך שפּעט, מיר ווע שוין דערקלערט די מענגע, און אויב מיר ווילן צו באַקומען 101 אָדער רענטגענ פּלוס 20, מיר האָבן צו דערקלערן אַ גאנצן אַנדערש מענגע, קאָפּיע אַלע די יסודות פון די מענגע איבער, און דעמאָלט מיר האָבן גענוג. און וואָס אויב מיר זענען פאַלש ווידער, וואָס אויב מיר אַקטשאַוואַלי דאַרפֿן 102, אָדער רענטגענ פּלוס 40, מיר האָבן צו טאָן דעם ווידער. אַזוי זיי ניטאָ זייער ינפלעקסיבלע פֿאַר רעסיזינג אונדזער דאַטע, אָבער אויב מיר פאַרבינדן צוזאַמען עטלעכע פון די באַסיקס אַז מיר ווע שוין געלערנט וועגן פּוינטערז און סטראַקטשערז, אין באַזונדער ניצן דינאַמיש זכּרון אַלאַקיישאַן מיט מאַללאָק, מיר קענען שטעלן די ברעקלעך צוזאַמען צו שאַפֿן אַ נייַ דאַטן סטרוקטורע-- אַ יינציקווייַז לינגקט רשימה מיר זאלן סייַ-- אַז אַלאַוז אונדז צו וואַקסן און ייַנשרומפּן אַ זאַמלונג פון וואַלועס און מיר וועלן ניט האָבן קיין ווייסטאַד פּלאַץ. אַזוי ווידער, מיר רופן דעם געדאַנק, דעם געדאנק, אַ לינגקט רשימה. אין באַזונדער, אין דעם ווידעא מיר ניטאָ גערעדט וועגן יינציקווייַז לינגקט רשימה, און דעמאָלט אן אנדער ווידעא מיר וועט רעדן וועגן דאַבלי לינגקט רשימות, וואָס איז נאָר אַ ווערייישאַן אויף אַ טעמע דאָ. אבער אַ יינציקווייַז לינגקט רשימה איז קאַמפּרייזד פון נאָודז, נאָודז נאָר ווייל אַ אַבסטראַקט טערמ-- עס ס נאָר עפּעס איך בין פאַך אַז ס אַ מין פון סטרוקטור, בייסיקלי, איך בין? נאָר געגאנגען צו רופן עס אַ נאָדע-- און דעם נאָדע האט צוויי מיטגלידער, אָדער צוויי fields. עס האט דאַטן, יוזשאַוואַלי אַ ינטאַדזשער, אַ כאַראַקטער לאָזנ שווימען, אָדער קען זיין עטלעכע אנדערע דאַטן טיפּ אַז איר ווע Defined מיט אַ טיפּ דעף. און עס כּולל אַ טייַטל צו אן אנדער נאָדע פון ​​דער זעלביקער טיפּ. אַזוי מיר האָבן צוויי זאכן ין פון דעם נאָדע, דאַטע און אַ טייַטל צו אן אנדער נאָדע. און אויב איר אָנהייבן צו וויזשוואַלייז דעם, איר קענען טראַכטן וועגן אים ווי אַ קייט פון נאָודז אַז זענען קאָננעקטעד צוזאַמען. מיר האָבן די ערשטער נאָדע, עס כּולל דאַטע, און אַ טייַטל צו די רגע נאָדע, וואָס כּולל דאַטע, און אַ טייַטל צו די דריט נאָדע. און אַזוי אַז ס וואָס מיר רופן עס אַ לינגקט רשימה, זיי ניטאָ לינגקט צוזאַמען. וואָס טוט דעם ספּעציעל נאָדע סטרוקטור קוקן ווי? נו, אויב איר צוריקרופן פון אונדזער ווידעא אויף דעפינינג מנהג טייפּס, מיט טיפּ דעף, מיר קענען דעפינירן אַ סטרוקטורע-- און טיפּ דעפינירן אַ סטרוקטור ווי דעם. טיעפּדעף סטרוקט סלליסט, און דעמאָלט איך בין ניצן די וואָרט ווערט דאָ אַרביטרעראַלי צו אָנווייַזן קיין דאַטן טיפּ טאַקע. איר קען פאָרן אויף אַ ינטאַדזשער אָדער לאָזנ שווימען, איר געקענט האָבן וועלכער איר ווילן. עס ס ניט ריסטריקטאַד צו פּונקט ינטאַדזשערז, אָדער עפּעס ווי אַז. אזוי ווערט איז נאָר אַ אַרביטראַריש דאַטן טיפּ, און דעמאָלט אַ טייַטל צו אן אנדער נאָדע פון ​​דער זעלביקער טיפּ. איצט, עס ס אַ ביסל כאַפּן דאָ מיט דעפינינג אַ סטרוקטור ווען עס ס אַ זעלבסט רעפערענטיאַל ביניען. איך האָבן צו האָבן אַ צייַטווייַליק נאָמען פֿאַר מיין סטרוקטור. אין די סוף פון די טאָג איך קלאר ווילן צו רופן עס SLL נאָדע, אַז ס לעסאָף די נייַ נאָמען טייל פון מיין טיפּ דעפֿיניציע, אָבער איך קען ניט נוצן SLL נאָדע אין די מיטן פון דעם. די סיבה ווייל, איך האב נישט Created אַ טיפּ גערופֿן SLL נאָדע ביז איך שלאָגן דעם לעצט פונט דאָ. אַרויף ביז אַז פונט, איך האָבן צו האָבן אן אנדער וועג צו אָפּשיקן צו דעם דאַטן טיפּ. און דעם איז אַ אַליינ רעפערענטיאַל דאַטן טיפּ. עס; ס אַ דאַטן טיפּ פון אַ ביניען אַז כּולל אַ דאַטע, און אַ טייַטל צו אן אנדער סטרוקטור פון דער זעלביקער טיפּ. אַזוי איך דאַרפֿן צו קענען צו אָפּשיקן צו דעם דאַטן טיפּ לפּחות טעמפּערעראַלי, אַזוי געבן עס אַ צייַטווייַליק נאָמען פון סטרוקט סלליסט אַלאַוז מיר צו דעמאָלט זאָגן איך ווילן אַ טייַטל צו אן אנדער סטרוקט סלליסט, אַ סטרוקט סלליסט שטערן, און דעמאָלט נאָך איך ווע געענדיקט די דעפֿיניציע, איך קענען איצט רופן דעם טיפּ אַ SLL נאָדע. אַזוי אַז ס וואָס איר זען עס ס אַ צייַטווייַליק נאָמען דאָ, אָבער אַ שטענדיק נאָמען דאָ. מאל איר זאל זען זוך פון סטרוקטור, למשל, וואָס זענען נישט זיך רעפערענטיאַל, אַז טאָן ניט האָבן אַ ספּעסיפיער נאָמען דאָ. עס וואָלט נאָר זאָגן טיפּעדעף סטרוקט, עפענען געגרייַזלט בראַסע און דעמאָלט דעפינירן עס. אבער אויב איר ניטאָ סטרוקט איז זיך רעפערענטיאַל, ווי דעם איינער איז, איר דאַרפֿן צו ספּעציפיצירן אַ צייַטווייַליק טיפּ נאָמען. אבער לעסאָף, איצט אַז מיר ווע געטאן דעם, מיר קענען נאָר אָפּשיקן צו די נאָודז, די וניץ, ווי SLL נאָודז פֿאַר צוועקן פון די מנוחה פון דעם ווידעא. אַלע רעכט, אַזוי מיר וויסן ווי צו שאַפֿן אַ לינגקט רשימה נאָדע. מיר וויסן ווי צו דעפינירן אַ לינגקט רשימה נאָדע. איצט, אויב מיר רע געגאנגען צו אָנהייבן ניצן זיי צו זאַמלען אינפֿאָרמאַציע, עס ס אַ פּאָר פון אַפּעריישאַנז מיר דאַרפֿן צו פֿאַרשטיין און אַרבעטן מיט. מיר דאַרפֿן צו וויסן ווי צו מאַכן אַ לינגקט רשימה פון דין לופט. אויב עס ס ניט רשימה שוין, מיר ווילן צו אָנהייבן איינער. אַזוי מיר דאַרפֿן צו קענען צו שאַפֿן אַ לינגקט רשימה, מיר דאַרפֿן צו מיסטאָמע זוכן דורך די לינק רשימה צו געפֿינען אַן עלעמענט מיר רע קוקן פֿאַר. מיר דאַרפֿן צו קענען צו טאָן נייַ זאכן אין דער רשימה, מיר ווילן אונדזער רשימה צו קענען צו וואַקסן. און סימאַלערלי, מיר ווילן צו קענען צו ויסמעקן זאכן פון אונדזער רשימה, מיר ווילן אונדזער רשימה צו קענען צו ייַנשרומפּן. און אין די סוף פון אונדזער מגילה, ספּעציעל אויב איר צוריקרופן אַז מיר ניטאָ דינאַמיקאַללי אַלאַקייטינג זכּרון צו בויען די רשימות טיפּיקאַללי, מיר ווילן צו פּאָטער אַלע פון ​​וואָס זכּרון ווען מיר ניטאָ געטאן ארבעטן מיט אים. און אַזוי מיר דאַרפֿן צו קענען צו ויסמעקן אַ גאנצע לינגקט רשימה אין איין פאַרלאָזן סווופּ. אַזוי לאָזן ס גיין דורך עטלעכע פון ​​די אַפּעריישאַנז און ווי מיר זאל וויזשוואַלייז זיי, גערעדט אין פּסעודאָקאָדע קאָד ספּעסיפיקאַללי. אַזוי מיר ווילן צו שאַפֿן אַ לינגקט רשימה, אַזוי אפֿשר מיר ווילן צו דעפינירן אַ פֿונקציע מיט דעם פּראָוטאַטייפּ. SLL נאָדע שטערן, מאַכן, און איך בין פּאַסינג אין איין אַרגומענט, עטלעכע אַרביטראַריש דאַטע טיפּ ווידער, פון עטלעכע אַרביטראַריש דאַטן טיפּ. אבער איך בין רעטורנינג-- דעם פֿונקציע זאָל צוריקקומען צו מיר אַ טייַטל, צו אַ יינציקווייַז לינגקט רשימה נאָדע. ווידער, מיר ניטאָ טריינג צו מאַכן אַ לינגקט רשימה פון דין לופט, אַזוי איך דאַרפֿן אַ טייַטל צו אַז רשימה ווען איך בין געטאן. אזוי וואָס זענען די טריט ינוואַלווד דאָ? נו, ערשטער זאַך איך בין געגאנגען צו טאָן איז דינאַמיקאַללי אַלאַקייט פּלאַץ פֿאַר אַ נייַ נאָדע. ווידער, מיר ניטאָ קריייטינג עס אויס פון דין לופט, אַזוי מיר דאַרפֿן צו מאַללאָק פּלאַץ פֿאַר עס. און פון קורס, מיד נאָך מיר מאַללאָק, מיר שטענדיק טשעק צו מאַכן זיכער אַז אונדזער פּאָינטער-- מיר האבן ניט באַקומען צוריק נאַל. ווייַל אויב מיר פּרובירן און אַכטונג אַ נאַל טייַטל, מיר רע געגאנגען צו לייַדן אַ סעגפאַולט און מיר טאָן ניט ווילן אַז. דעמאָלט מיר ווילן צו פּלאָמבירן אין פֿעלד, מיר ווילן צו ינישאַלייז די ווערט פעלד און ינישאַלייז די ווייַטער פעלד. און דעמאָלט מיר ווילן טאָ-- יווענטשאַוואַלי ווי די פֿונקציע פּראָוטאַטייפּ ינדיקאַטעס-- מיר ווילן צו קריק אַ טייַטל צו אַ SLL נאָדע. אַזוי וואָס מאַכן דעם קוקן ווי וויזשוואַלי? נו, ערשטער מיר רע געגאנגען צו דינאַמיקאַללי אַלאַקייט פּלאַץ פֿאַר אַ נייַ SLL נאָדע, אַזוי מיר מאַללאָק-- אַז ס אַ וויזשאַוואַל פאַרטרעטונג פון די נאָדע מיר נאָר Created. און מיר טשעק צו מאַכן זיכער עס ס ניט נולל-- אין דעם פאַל, די בילד וואָלט ניט האָבן געוויזן אַרויף אויב עס איז נאַל, מיר וואָלט האָבן לויפן אויס פון זכּרון, אַזוי מיר ניטאָ גוט צו גיין דאָרט. אזוי איצט מיר ניטאָ אויף צו טרעטן C, ינישאַלייז די נאָודז ווערט פעלד. נו, באזירט אויף דעם פֿונקציע רוף איך בין ניצן דאָ, קוקט ווי איך ווילן צו פאָרן אין 6, אַזוי איך וועט 6 אין די ווערט פעלד. איצט, ינישאַלייז די ווייַטער פעלד. נו, וואָס בין איך געגאנגען צו טאָן עס, עס איז גאָרנישט ווייַטער, רעכט, דעם איז דער בלויז זאַך אין דער רשימה. אזוי וואָס ס די ווייַטער זאַך אין די רשימה? עס זאָל ניט פונט צו עפּעס, רעכט. עס ס גאָרנישט אַנדערש עס, אַזוי וואָס איז דער באַגריף מיר וויסן פון וואָס ס נאָטהינג-- פּוינטערז צו גאָרנישט? עס זאָל זיין אפֿשר מיר ווילן צו שטעלן אַ נאַל טייַטל דאָרט, און איך וועט פאָרשטעלן די נאַל טייַטל ווי נאָר אַ רויט קעסטל, מיר קענען ניט גיין קיין ווייַטער. ווי מיר וועט זען אַ ביסל שפּעטער אויף, מיר וועלן האָבן יווענטשאַוואַלי קייטן פון אַראָוז קאַנעקטינג די נאָודז צוזאַמען, אָבער ווען איר שלאָגן די רויט קעסטל, אַז ס נאַל, מיר קענען ניט גיין קיין ווייַטער, אַז ס די סוף פון די רשימה. און לאַסטלי, מיר נאָר ווילן צו צוריקקומען אַ טייַטל צו דעם נאָדע. אזוי מיר וועט רופן עס נייַ, און וועט צוריקקומען נייַ אַזוי עס קענען זיין געניצט אין וועלכער פֿונקציע Created עס. אַזוי עס מיר גיין, מיר ווע Created אַ יינציקווייַז לינגקט רשימה נאָדע פון ​​דין לופט, און איצט מיר האָבן אַ רשימה מיר קענען אַרבעטן מיט. איצט, לאָזן ס זאָגן מיר שוין האָבן אַ גרויס קייט, און מיר ווילן צו געפֿינען עפּעס אין עס. און מיר ווילן אַ פֿונקציע אַז ס 'געגאנגען צו צוריקקומען אמת אָדער פאַלש, דיפּענדינג אויף צי אַ ווערט יגזיסץ אין אַז רשימה. אַ פֿונקציע פּראָוטאַטייפּ, אָדער דעקלאַראַציע פֿאַר אַז פֿונקציע, זאל קוקן ווי טהיס-- באָאָל געפֿינען, און דעמאָלט מיר ווילן צו פאָרן אין צוויי טענות. דער ערשטער, איז אַ טייַטל צו די ערשטער עלעמענט פון די לינגקט רשימה. דעם איז אַקטשאַוואַלי עפּעס איר וועט שטענדיק ווילן צו האַלטן שפּור פון, און אַקשלי זאל זיין עפּעס אַז איר אַפֿילו שטעלן אין אַ גלאבאלע בייַטעוודיק. אַמאָל איר מאַכן אַ רשימה, איר שטענדיק, שטענדיק ווילן צו האַלטן שפּור פון די זייער ערשטער עלעמענט פון דער רשימה. אַז וועג איר קענען אָפּשיקן צו אַלע די אנדערע עלעמענטן דורך פּונקט ווייַטערדיק דער קייט, אָן ווייל צו האַלטן פּוינטערז בעשאָלעם צו יעדער איין עלעמענט. איר נאָר דאַרפֿן צו האַלטן שפּור פון דער ערשטער איינער אויב זיי ניטאָ אַלע טשיינד צוזאַמען. און דעריבער די רגע זאַך מיר ניטאָ פּאַסינג אין ווידער איז אַרביטרעראַלי סאָמע-- וועלכער דאַטן טיפּ מיר ניטאָ קוקן פֿאַר עס איז ין פון אַלעווייַ איינער פון די נאָודז אין דער רשימה. אזוי וואָס זענען די טריט? נו, דער ערשטער זאַך מיר טאָן איז מיר שאַפֿן אַ transversal טייַטל פּוינטינג צו די רשימות קאָפּ. נו, וואָס טאָן מיר טאָן אַז, מיר שוין האָבן אַ טייַטל אין די רשימות קאָפּ, וואָס טאָן ניט מיר נאָר מאַך אַז איינער אַרום? נו, ווי איך נאָר געזאגט, עס ס טאַקע וויכטיק פֿאַר אונדז צו שטענדיק האַלטן שפּור פון די זייער ערשטער עלעמענט אין דער רשימה. און אַזוי עס ס אַקטשאַוואַלי בעסער צו שאַפֿן אַ דופּליקאַט פון אַז, און נוצן אַז צו באַוועגן אַרום אַזוי מיר קיינמאָל אַקסאַדענאַלי מאַך אַוועק, אָדער מיר שטענדיק האָבן אַ טייַטל אין עטלעכע פונט אַז איז רעכט אויף דער ערשטער עלעמענט פון דער רשימה. אַזוי עס ס בעסער צו שאַפֿן אַ רגע איינער וואָס מיר נוצן צו באַוועגן. דעמאָלט מיר נאָר פאַרגלייַכן צי די ווערט פעלד אין אַז נאָדע איז וואָס מיר ניטאָ קוקן פֿאַר, און אויב עס ס ניט, מיר נאָר מאַך צו די ווייַטער נאָדע. און מיר האַלטן טאן אַז איבער, און איבער, און איבער, ביז מיר אָדער געפינען די עלעמענט, אָדער מיר שלאָגן נולל-- מיר ווע ריטשט די סוף פון דער רשימה און עס איז נישט דאָרט. דאס זאָל אַלעווייַ רינג אַ גלאָק צו איר ווי נאָר לינעאַר זוכן, מיר ניטאָ פּונקט רעפּליקייטינג עס אין אַ יינציקווייַז לינגקט רשימה סטרוקטור אַנשטאָט פון ניצן אַ מענגע צו טאָן עס. אַזוי דאָ ס אַ בייַשפּיל פון אַ יינציקווייַז לינגקט רשימה. דאס איינער באשטייט פון פינף נאָודז, און מיר האָבן אַ טייַטל צו די קאָפּ פון די רשימה, וואָס איז גערופֿן רשימה. דער ערשטער זאַך מיר ווילן צו טאָן איז ווידער, מאַכן אַז טראַווערסאַל טייַטל. אַזוי מיר האָבן איצט צוויי פּוינטערז אַז פונט צו די זעלבע זאַך. איצט, באַמערקן דאָ אויך, איך האט ניט האָבן צו מאַללאָק קיין פּלאַץ פֿאַר Trav. איך האט ניט זאָגן Trav יקוואַלז מאַללאָק עפּעס, וואָס נאָדע שוין יגזיסץ, וואָס אָרט אין זכּרון עקזיסטירט שוין. אזוי אַלע איך בין טאַקע טאן איז קריייטינג אנדערן טייַטל צו עס. איך בין נישט מאַללאָסינג אַן נאָך פּלאַץ, נאָר האָבן איצט צוויי פּוינטערז פּוינטינג צו די זעלבע זאַך. אַזוי איז 2 וואָס איך בין קוקן פֿאַר? נו, קיין, אַזוי אַנשטאָט איך בין געגאנגען צו מאַך צו די ווייַטער איינער. אַזוי בייסיקלי איך וואָלט זאָגן, Trav יקוואַלז Trav ווייַטער. איז 3 וואָס איך בין קוקן פֿאַר, ניט. אַזוי איך פאָרזעצן צו גיין דורך, ביז יווענטשאַוואַלי באַקומען צו 6 וואָס איז וואָס איך בין קוקן פֿאַר באזירט אויף די פֿונקציע רופן איך האב אין די שפּיץ דאָרט, און אַזוי איך בין געטאן. איצט, וואָס אויב דער עלעמענט איך בין קוקן פֿאַר איז ניט אין דער רשימה, איז עס נאָך געגאנגען צו אַרבעטן? נו, באַמערקן אַז דער רשימה דאָ איז סאַטאַלי אַנדערש, און דעם איז אן אנדער זאַך אַז ס וויכטיק מיט לינגקט רשימות, איר טאָן ניט האָבן צו ופהיטן זיי אין קיין באַזונדער סדר. איר קענען אויב איר ווילן, אָבער איר זאלט ​​האָבן שוין באמערקט וואָס מיר ניטאָ ניט בעכעסקעם שפּור פון וואָס נומער עלעמענט מיר זענען אין. און אַז ס סאָרט פון איין האַנדל אַז מיר האָבן מיט לינגקט רשימה ווערסעס ערייז, איז עס מיר טאָן ניט האָבן ראַנדאָם צוטריט ענימאָר. מיר קענען ניט נאָר זאָגן, איך ווילן צו גיין צו די 0 עלעמענט, אָדער די 6 עלעמענט פון מיין מענגע, וואָס איך קענען טאָן אין אַ מענגע. איך קענען נישט זאָגן איך ווילן צו גיין צו די 0 עלעמענט, אָדער די 6 עלעמענט, אָדער די 25 עלעמענט פון מיין לינגקט רשימה, עס ס ניט אינדעקס פֿאַרבונדן מיט זיי. און אַזוי עס טוט ניט טאַקע ענין אויב מיר ופהיטן אונדזער רשימה אין סדר. אויב איר ווילן צו איר אַוואַדע קענען, אָבער דאָרט ס קיין סיבה וואָס זיי דאַרפֿן צו זייַן פּרעסערוועד אין קיין סדר. אַזוי ווידער, לאָזן ס פּרובירן און געפינען 6 אין דעם רשימה. נו, מיר אָנהייבן בייַ די אָנהייב, מיר טאָן ניט געפֿינען 6, און דעמאָלט מיר פאָרזעצן נישט דערגייונג 6, ביז מיר יווענטשאַוואַלי באַקומען צו דאָ. אַזוי רעכט איצט Trav ווייזט צו די נאָדע מיט 8, און זעקס איז נישט אין דאָרט. אזוי די ווייַטער שריט וואָלט זיין צו גיין צו די ווייַטער טייַטל, אַזוי זאָגן Trav יקוואַלז Trav ווייַטער. נו, Trav ווייַטער, אנגעוויזן דורך די רויט קעסטל דאָרט, איז נאַל. אַזוי עס ס ינ ערגעצ ניט אַנדערש צו גיין, און אַזוי אין דעם פונט מיר קענען פאַרענדיקן אַז מיר ווע ריטשט דער סוף פון די לינגקט רשימה, און 6 איז נישט אין דאָרט. און עס וואָלט זיין אומגעקערט פאַלש אין דעם פאַל. גוט, ווי טאָן מיר אַרייַנלייגן אַ נייַ נאָדע אין די לינגקט רשימה? אַזוי מיר ווע שוין קענען צו שאַפֿן אַ לינגקט רשימה פון ינ ערגעצ ניט, אָבער מיר מיסטאָמע ווילן צו בויען אַ קייט און ניט מאַכן אַ בינטל פון בוילעט רשימות. מיר ווילן צו האָבן איין רשימה אַז האט אַ בינטל פון נאָודז אין עס, ניט אַ בינטל פון רשימות מיט אַ איין נאָדע. אזוי מיר קענען ניט נאָר האַלטן ניצן די שאַפֿן פונקציאָנירן מיר Defined פריער, איצט מיר ווילן צו טאָן אין אַ רשימה אַז עקזיסטירט שוין. אַזוי דעם פאַל, מיר רע געגאנגען צו פאָרן אין צוויי טענות, די טייַטל צו די קאָפּ פון אַז לינגקט רשימה אַז מיר ווילן צו לייגן צו. ווידער, אַז ס וואָס עס ס אַזוי וויכטיק אַז מיר שטענדיק האַלטן שפּור פון אים, ווייַל עס ס דער בלויז וועג מיר טאַקע האָבן צו אָפּשיקן צו די גאנצע רשימה איז נאָר דורך אַ טייַטל צו דער ערשטער עלעמענט. אַזוי מיר ווילן צו פאָרן אין אַ טייַטל צו אַז ערשטער עלעמענט, און וועלכער ווערט מיר ווילן צו לייגן צו די רשימה. און יווענטשאַוואַלי דעם פֿונקציע איז געגאנגען צו צוריקקומען אַ טייַטל צו די נייע קאָפּ פון אַ לינגקט רשימה. וואָס זענען די טריט ינוואַלווד דאָ? נו, פּונקט ווי מיט מאַכן, מיר דאַרפֿן צו דינאַמיקאַללי אַלאַקייט פּלאַץ פֿאַר אַ נייַ נאָדע, און טשעק צו מאַכן זיכער מיר טאָן ניט לויפן אויס פון זכּרון, ווידער, ווייַל מיר ניטאָ ניצן מאַללאָק. דעמאָלט מיר ווילן צו באַפעלקערן און אַרייַנלייגן די נאָדע, אַזוי שטעלן די נומער, וועלכער וואַל איז, אין די נאָדע. מיר ווילן צו אַרייַנלייגן די נאָדע אין דער אָנהייב פון די לינגקט רשימה. עס ס אַ סיבה אַז איך ווילן צו טאָן דאָס, און עס זאל זיין ווערט גענומען אַ רגע צו פּויזע די ווידעא דאָ, און טראַכטן וועגן וואָס איך וואָלט ווילן צו אַרייַנלייגן אין די אָנהייב פון אַ לינגקט רשימה. ווידער, איך דערמאנט פריער אַז עס טוט נישט טאַקע ענין אויב מיר ופהיטן עס אין קיין סדר, אַזוי אפֿשר אַז ס אַ קלו. און איר האָט געזען וואָס וואָלט פּאַסירן אויב מיר געוואלט טאָ-- אָדער פון נאָר אַ רגע צוריק ווען מיר זענען געגאנגען דורך זוכן איר קען זען וואָס זאל פּאַסירן אויב מיר זענען טריינג צו טאָן אין די סוף פון די רשימה. ווייַל מיר טאָן ניט האָבן אַ טייַטל צו די סוף פון די רשימה. אַזוי די סיבה וואָס איך וואָלט ווילן צו טאָן אין די אָנהייב, איז ווייַל איך קענען טאָן עס מיד. איך האָבן אַ טייַטל אין די אָנהייב, און מיר וועט זען דעם אין אַ וויזשאַוואַל אין אַ רגע. אבער אויב איך ווילן צו אַרייַנלייגן אין די סוף, איך האָבן צו אָנהייבן בייַ די אָנהייב, דורך אַלע די וועג צו די סוף, און דעמאָלט שטיפט עס אויף. אַזוי אַז וואָלט מיינען אַז ינסערטינג אין די סוף פון די רשימה וואָלט ווערן אַ אָ פון N אָפּעראַציע, גיי צוריק צו אונדזער דיסקוסיע פון קאַמפּיוטיישאַנאַל קאַמפּלעקסיטי. עס 'ד ווערן אַ אָ פון N אָפּעראַציע, ווו ווי דער רשימה גאַט ביגער, און ביגער, און ביגער, עס וועט ווערן מער און מער שווער צו שטיפט עפּעס אויף אין די סוף. אבער עס ס שטענדיק טאַקע גרינג צו שטיפט עפּעס אויף אין די אָנהייב, איר ניטאָ שטענדיק אין די אָנהייב. און מיר וועט זען אַ וויזשאַוואַל פון דעם ווידער. און דעמאָלט אַמאָל מיר ניטאָ געטאן, אַמאָל מיר ווע ינסערטאַד די נייַ נאָדע, מיר ווילן צו צוריקקומען אונדזער טייַטל צו די נייַ קאָפּ פון אַ לינגקט רשימה, וואָס זינט מיר רע ינסערטינג אין די אָנהייב, וועט אַקטשאַוואַלי זיין אַ טייַטל צו די נאָדע מיר נאָר Created. זאל ס וויזשוואַלייז דעם, ווייַל איך טראַכטן עס וועט העלפן. אַזוי דאָ ס אונדזער רשימה, עס באשטייט פון פיר יסודות, אַ נאָדע מיט 15, וואָס ווייזט צו אַ נאָדע מיט 9, וואָס ווייזט צו אַ נאָדע מיט 13, וואָס ווייזט צו אַ נאָדע מיט 10, וואָס האט די נאַל טייַטל ווי זייַן ווייַטער טייַטל אַזוי אַז ס די סוף פון די רשימה. אַזוי מיר ווילן צו טאָן אַ נייַ נאָדע מיט די ווערט 12 אין די אָנהייב פון דעם רשימה, וואָס טוט מיר טאָן? נו, ערשטער מיר מאַללאָק פּלאַץ פֿאַר די נאָדע, און דעמאָלט מיר שטעלן 12 אין עס. אַזוי איצט מיר ווע ריטשט אַ באַשלוס פונט, רעכט? מיר האָבן אַ פּאָר פון פּוינטערז אַז מיר קען באַוועגן, וואָס איינער זאָל מיר באַוועגן ערשטער? זאָל מיר מאַכן 12 פונט צו די נייַ קאָפּ פון די ליסט-- אָדער אַנטשולדיקן מיר, זאָל מיר מאַכן 12 פונט צו די אַלט קאָפּ פון דער רשימה? אָדער זאָל מיר זאָגן אַז די רשימה איצט הייבט בייַ 12. עס ס אַ דיסטינגקשאַן עס, און מיר וועט קוקן אין וואָס כאַפּאַנז מיט ביידע אין אַ רגע. אבער דעם לידז צו אַ גרויס טעמע פֿאַר סיידבאַר, וואָס איז אַז איינער פון די טריקקיעסט זאכן מיט לינגקט רשימות איז צו צולייגן די פּוינטערז אין די ריכטיק סדר. אויב איר מאַך זאכן אויס פון סדר, איר קענען סוף אַרויף אַקסאַדענאַלי אָרפאַנינג די מנוחה פון די רשימה. און דאָ ס אַ בייַשפּיל פון וואָס. אַזוי לאָזן ס גיין מיט די געדאַנק אָפ-- נו, מיר ווע נאָר Created 12. מיר וויסן 12 איז געגאנגען צו זיין די נייַ קאָפּ פון דער רשימה, און אַזוי וואָס טאָן ניט מיר נאָר מאַך די רשימה טייַטל צו פונט עס. גוט, אַזוי אַז ס גוט. אַזוי איצט ווו טוט 12 ווייַטער פונט? איך מיינען, וויזשוואַלי מיר קענען זען אַז עס וועט פונט צו 15, ווי יומאַנז עס ס טאַקע קלאָר ווי דער טאָג צו אונדז. ווי טוט די קאָמפּיוטער וויסן? מיר טאָן ניט האָבן עפּעס פּוינטינג צו 15 ענימאָר, רעכט? מיר ווע פאַרפאַלן קיין פיייקייַט צו אָפּשיקן צו 15. מיר קענען נישט זאָגן נייַ פייַל ווייַטער יקוואַלז עפּעס, עס ס גאָרנישט דאָרט. אין פאַקט, מיר ווע אָרפאַנעד די מנוחה פון דער רשימה דורך טאן אַזוי, מיר ווע אַקסאַדענאַלי צעבראכן די קייט. און מיר אַוואַדע טאָן ניט וועלן צו טאָן אַז. אַזוי לאָזן ס גיין צוריק און פּרובירן דעם ווידער. אפֿשר די רעכט זאַך צו טאָן איז צו שטעלן 12 ס ווייַטער טייַטל צו דער אַלט קאָפּ פון די רשימה ערשטער, דעמאָלט מיר קענען באַוועגן די רשימה איבער. און אין פאַקט, אַז איז די ריכטיק סדר אַז מיר דאַרפֿן צו נאָכפאָלגן ווען מיר ניטאָ ארבעטן מיט יינציקווייַז לינגקט רשימה. מיר שטענדיק ווילן צו פאַרבינדן די נייַ עלעמענט אין דער רשימה, איידער מיר נעמען אַז מין פון וויכטיק שריט פון טשאַנגינג ווו דער קאָפּ פון די לינגקט רשימה איז. ווידער, אַז ס אַזאַ אַ פונדאַמענטאַל זאַך, מיר טאָן ניט ווילן צו פאַרלירן שפּור פון אים. אַזוי מיר ווילן צו מאַכן זיכער אַז אַלץ איז טשיינד צוזאַמען, איידער מיר מאַך אַז טייַטל. און אַזוי דעם וואָלט זיין די ריכטיק סדר, וואָס איז צו פאַרבינדן 12 צו די רשימה, דעריבער זאָגן אַז דער רשימה סטאַרץ אַ 12. אויב מיר האט דער רשימה סטאַרץ בייַ 12 און דעמאָלט פּרובירן צו פאַרבינדן 12 צו די רשימה, מיר ווע שוין געזען וואָס כאַפּאַנז. מיר פאַרלירן די רשימה דורך גרייַז. גוט, אַזוי איינער מער זאַך צו רעדן וועגן. וואָס אויב מיר ווילן צו באַקומען באַפרייַען פון אַ גאנצע לינגקט רשימה אין אַמאָל? ווידער, מיר ניטאָ מאַללאָסינג אַלע דעם אָרט, און אַזוי מיר דאַרפֿן צו פּאָטער עס ווען מיר ניטאָ געטאן. אַזוי איצט מיר ווילן צו ויסמעקן די גאנצע לינגקט רשימה. נו, וואָס טוט מיר ווילן צו טאָן? אויב מיר ווע ריטשט די נאַל טייַטל, מיר ווילן צו האַלטן, אַנדערש, נאָר ויסמעקן די מנוחה פון דער רשימה און דעמאָלט פּאָטער מיר. ויסמעקן די מנוחה פון דער רשימה, און דעמאָלט פּאָטער דעם קראַנט נאָדע. וואָס טוט אַז געזונט ווי, וואָס טעכניק האָבן מיר גערעדט וועגן ביז אַהער טוט אַז געזונט ווי? דיליט יעדער יינער אַנדערש, דעמאָלט קומען צוריק און ויסמעקן מיר. אַז ס רעקורסיאָן, מיר ווע געמאכט די פּראָבלעם אַ ביסל קלענערער, מיר ניטאָ זאגן ויסמעקן יעדער יינער אַנדערש, דעמאָלט איר קענען ויסמעקן מיר. און ווייַטער אַראָפּ די וועג, אַז נאָדע וועט זאָגן, ויסמעקן יעדער יינער אַנדערש. אָבער יווענטשאַוואַלי מיר וועט באַקומען צו דעם פונט ווו די רשימה איז נאַל, און אַז ס אונדזער באַזע פאַל. אַזוי לאָזן ס נעמען אַ קוק אין דעם, און ווי דעם זאל אַרבעט. אַזוי דאָ ס אונדזער רשימה, עס ס די זעלבע רשימה מיר האבן נאָר גערעדט וועגן, און עס ס די טריט. עס ס אַ פּלאַץ פון טעקסט דאָ, אָבער אַלעווייַ די וויזשוואַלאַזיישאַן וועט העלפן. אַזוי מיר האַווע-- און איך אויך פּולד אַרויף אונדזער אָנלייגן ראָמען געמעל פון אונדזער ווידעא אויף רופן סטאַקס, און אַלעווייַ אַלע פון ​​דעם צוזאַמען וועט ווייַזן איר וואָס ס געגאנגען אויף. אַזוי דאָ ס אונדזער פּסעודאָקאָדע קאָד. אויב מיר דערגרייכן אַ נאַל טייַטל, האַלטן, אַנדערש, ויסמעקן די מנוחה פון דער רשימה, דעמאָלט פּאָטער דעם קראַנט נאָדע. אַזוי רעכט איצט, ליסט-- די טייַטל אַז מיר ניטאָ פּאַסינג אין צו צעשטערן ווייזט צו 12. 12 איז ניט אַ נאַל טייַטל, אַזוי מיר ניטאָ געגאנגען צו ויסמעקן די מנוחה פון די רשימה. וואָס איז דיליטינג די מנוחה פון אונדז ינוואַלווד? נו, עס מיטל געמאכט אַ רוף צו צעשטערן, אַזוי צו זאָגן אַז 15 איז דער אָנהייב פון די מנוחה פון די רשימה מיר ווילן צו צעשטערן. און אַזוי די רופן צו צעשטערן 12 איז מין פון אויף האַלטן. עס ס פאַרפרוירן עס, ווארטן פֿאַר די רוף צו צעשטערן 15, צו ענדיקן זייַן אַרבעט. נו, 15 איז ניט אַ נאַל טייַטל, און אַזוי עס ס געגאנגען צו זאָגן, אַלע רעכט, געזונט, ויסמעקן די מנוחה פון די רשימה. די מנוחה פון די רשימה סטאַרץ אין 9, און אַזוי מיר וועט נאָר וואַרטן ביז איר אויסמעקן אַלע אַז שטאָפּן, דעמאָלט קומען צוריק און ויסמעקן מיר. נו 9 ס 'געגאנגען צו זאָגן, נו, איך בין נישט אַ נאַל טייַטל, אַזוי ויסמעקן די מנוחה דער רשימה פון דאָ. און אַזוי פּרובירן און צעשטערן 13. 13 זאגט, איך בין ניט נאַל טייַטל, זעלבע זאַך, עס פּאַסיז די באַק. 10 איז ניט נאַל טייַטל, 10 כּולל אַ נאַל טייַטל, אָבער 10 איז ניט זיך אַ נאַל טייַטל רעכט איצט, און אַזוי עס פּאַסיז די באַק אויך. און איצט רשימה פּוינץ דאָרט, עס טאַקע וואָלט פונט צו סאָמע-- אויב איך האט מער פּלאַץ אין די בילד, עס וואָלט פונט צו עטלעכע ראַנדאָם פּלאַץ אַז מיר טאָן ניט וויסן וואָס עס איז. עס ס די נאַל טייַטל כאָטש, די רשימה איז ממש איצט שטעלן עס ס וואַלועס נאַל. עס ס פּוינטינג רעכט ין אַז רויט קעסטל. מיר ריטשט אַ נאַל טייַטל, אַזוי מיר קענען האַלטן, און מיר ניטאָ געטאן. און אַזוי אַז לילאַ ראַם איז נאָוו-- אין די שפּיץ פון סטאַקק-- אַז ס די אַקטיוו ראַם, אָבער עס ס געטאן. אויב מיר ווע ריטשט אַ נאַל טייַטל, האַלטן. מיר טאָן ניט טאָן עפּעס, מיר קענען ניט פּאָטער אַ נאַל טייַטל, מיר האבן ניט מאַללאָק קיין פּלאַץ, און אַזוי מיר ניטאָ געטאן. אַזוי אַז פֿונקציע ראַם איז חרובֿ, און מיר רעסומע-- מיר קלייַבן אַרויף ווו מיר לינקס אַוועק מיט די ווייַטער העכסטן איינער, וואָס איז דעם טונקל בלוי ראַם דאָ. אַזוי מיר קלייַבן אַרויף רעכט ווו מיר לינקס אַוועק. מיר אויסגעמעקט די איבעריקע רשימה שוין, אַזוי איצט מיר ניטאָ געגאנגען צו פּאָטער דעם קראַנט נאָודז. אַזוי איצט מיר קענען פּאָטער דעם נאָדע, און איצט מיר ווע ריטשט די סוף פון די פֿונקציע. און אַזוי אַז פֿונקציע ראַם איז חרובֿ, און מיר קלייַבן אַרויף אין די ליכט בלוי איינער. אזוי עס סייַס-- איך ווע שוין דאָנע-- דיליטינג די מנוחה פון דער רשימה, אַזוי פּאָטער די קראַנט נאָדע. און איצט די געל ראַם איז צוריק אויף שפּיץ פון דעם אָנלייגן. און אַזוי ווי איר זען, מיר ניטאָ איצט דיסטרויינג די רשימה פון רעכט צו לינקס. וואָס וואָלט האָבן געשען, כאָטש, אויב מיר האבן געטאן דאס די אומרעכט וועג? פּונקט ווי ווען מיר פּרובירן צו לייגן אַן עלעמענט. אויב מיר מעסט אַרויף די קייט, אויב מיר האבן נישט פאַרבינדן די פּוינטערז אין די ריכטיק סדר, אויב מיר נאָר פרעעד דער ערשטער עלעמענט, אויב מיר נאָר פרעעד די קאָפּ פון דער רשימה, איצט מיר האָבן קיין וועג צו אָפּשיקן צו די מנוחה פון די רשימה. און אַזוי מיר וואָלט האָבן אָרפאַנעד אַלץ, מיר וואָלט האָבן געהאט וואָס ס גערופֿן אַ זכּרון רינען. אויב איר צוריקרופן פון אונדזער ווידעא אויף דינאַמיש זכּרון אַלאַקיישאַן, אַז ס ניט זייער גוט זאַך. אַזוי ווי איך געזאגט, עס זענען עטלעכע אַפּעריישאַנז וואָס מיר דאַרפֿן צו נוצן צו ווערק מיט לינגקט רשימה Effectively. און איר זאלט ​​האָבן באמערקט איך איבערגעהיפּערט איינער, דעלעטינג אַ איין עלעמענט פון אַ לינגקט רשימה. די סיבה איך האט אַז איז עס ס אַקטשאַוואַלי מין פון טריקי צו טראַכטן וועגן ווי צו אויסמעקן אַ איין עלעמענט פון אַ יינציקווייַז לינגקט רשימה. מיר דאַרפֿן צו קענען צו האָפּקען איבער עפּעס אין די רשימה, וואָס מיטל מיר באַקומען צו אַ פּאָינט-- מיר ווילן צו ויסמעקן דעם נאָדע-- אבער אין סדר צו מאַכן עס אַזוי מיר דו זאלסט נישט פאַרלירן קיין אינפֿאָרמאַציע, מיר דאַרפֿן צו פאַרבינדן דעם נאָדע איבער דאָ, דאָ. אַזוי איך מיסטאָמע האט אַז פאַלש פון אַ וויזשאַוואַל פּערספּעקטיוו. אזוי מיר ניטאָ אין די אָנהייב פון אונדזער רשימה, מיר ניטאָ פּראַסידינג דורך, מיר ווילן צו ויסמעקן דעם נאָדע. אויב מיר נאָר ויסמעקן עס, מיר ווע געווען בראָקען די קייט. דעם נאָדע רעכט דאָ רעפערס צו אַלץ אַנדערש, עס כּולל די קייט פון דאָ אויף אויס. אַזוי וואָס מיר דאַרפֿן צו טאָן אַקטשאַוואַלי נאָך מיר באַקומען צו דעם פונט, איז מיר דאַרפֿן צו שריט צוריק איינער, און פאַרבינדן דעם נאָדע איבער צו דעם נאָדע, אַזוי מיר קענען דעריבער אויסמעקן די איין אין די מיטל. אבער יינציקווייַז לינגקט רשימות טאָן ניט צושטעלן אונדז אַ וועג צו גיין קאַפּויער. אַזוי מיר דאַרפֿן צו אָדער האַלטן צוויי פּוינטערז, און מאַך זיי סאָרט פון אַוועק שריט, איין הינטער די אנדערע ווי מיר גיין, אָדער באַקומען צו אַ פונט און דעמאָלט שיקן דעם אנדערן טייַטל דורך. און ווי איר קענען זען, עס קענען באַקומען אַ ביסל מעסי. צומ גליק, מיר האָבן אן אנדער וועג צו האַלטן אַז, ווען מיר רעדן וועגן דאַבלי לינגקט רשימות. איך בין דאַג לויד, דאָס איז קס50.