1 00:00:00,000 --> 00:00:08,250 2 00:00:08,250 --> 00:00:12,680 >> JASON HIRSCHHORN: Willkommen jeder auf das Kapitel Sieben. 3 00:00:12,680 --> 00:00:15,040 Wir sind in der Woche sieben des Kurses. 4 00:00:15,040 --> 00:00:18,440 Und am kommenden Donnerstag Halloween ist also bin ich 5 00:00:18,440 --> 00:00:21,420 wie ein Kürbis gekleidet. 6 00:00:21,420 --> 00:00:23,460 Ich konnte nicht bücken und legte auf meine Schuhe, damit ist, warum ich bin 7 00:00:23,460 --> 00:00:25,660 nur das Tragen von Socken. 8 00:00:25,660 --> 00:00:29,220 Ich bin auch nicht alles unter das Tragen dies, so kann ich es nicht aus, wenn es 9 00:00:29,220 --> 00:00:29,950 ablenken zu Ihnen. 10 00:00:29,950 --> 00:00:31,860 Ich entschuldige mich im Voraus dafür. 11 00:00:31,860 --> 00:00:33,170 Sie brauchen nicht, sich vorzustellen, , was los ist. 12 00:00:33,170 --> 00:00:34,240 Ich trage Boxershorts. 13 00:00:34,240 --> 00:00:36,170 Es ist also alles gut. 14 00:00:36,170 --> 00:00:41,120 >> Ich habe eine längere Geschichte darüber, warum ich bin gekleidet wie ein Kürbis, aber ich werde 15 00:00:41,120 --> 00:00:45,110 sparen, dass für die später in diesem Abschnitt weil ich will, um loszulegen. 16 00:00:45,110 --> 00:00:47,720 Wir haben eine Menge spannende Dinge , über diese Woche. 17 00:00:47,720 --> 00:00:51,810 Die meisten von ihnen beziehen sich direkt auf diese Woche Problem Satz, Rechtschreibfehler. 18 00:00:51,810 --> 00:00:54,680 Wir werden über verknüpft werden gehen Listen und Hash-Tabellen 19 00:00:54,680 --> 00:00:57,160 für den gesamten Abschnitt. 20 00:00:57,160 --> 00:01:02,490 Ich habe diese Liste jede Woche eine Liste der Ressourcen für Sie, um Ihnen zu helfen 21 00:01:02,490 --> 00:01:04,120 das Material auf diesem Kurs. 22 00:01:04,120 --> 00:01:07,600 Wenn bei einem Verlust oder der Suche nach einigen Weitere Informationen lesen Sie in einem 23 00:01:07,600 --> 00:01:09,930 diese Ressourcen. 24 00:01:09,930 --> 00:01:14,530 >> Auch hier ist pset6 Rechtschreibfehler, dieser Woche pset. 25 00:01:14,530 --> 00:01:17,690 Und es fordert Sie auch, und ich Sie ermutigen, auf eine andere verwenden 26 00:01:17,690 --> 00:01:20,320 Ressourcen, die speziell für dieses pset. 27 00:01:20,320 --> 00:01:23,390 Insbesondere die drei habe ich auf dem Bildschirm aufgelistet - 28 00:01:23,390 --> 00:01:27,160 gdb, die wir waren mit vertrauten und mit für eine Weile jetzt, 29 00:01:27,160 --> 00:01:29,270 werde diese Woche sehr hilfreich sein. 30 00:01:29,270 --> 00:01:30,190 Also habe ich, dass hier oben. 31 00:01:30,190 --> 00:01:32,910 Aber wenn Sie mit C arbeiten, Sie sollten immer mit gdb werden, um 32 00:01:32,910 --> 00:01:34,430 Debuggen von Programmen. 33 00:01:34,430 --> 00:01:36,660 Diese Woche auch valgrind. 34 00:01:36,660 --> 00:01:38,535 Weiß jemand, was valgrind tut? 35 00:01:38,535 --> 00:01:42,184 36 00:01:42,184 --> 00:01:43,890 >> ZIELGRUPPE: Es prüft, ob Speicherlecks? 37 00:01:43,890 --> 00:01:45,950 >> JASON HIRSCHHORN: Valgrind Prüfungen für Speicherlecks. 38 00:01:45,950 --> 00:01:49,970 Also, wenn Sie etwas in Ihrem malloc Programm können Sie für Speicher fragen. 39 00:01:49,970 --> 00:01:52,920 Am Ende des Programms, haben Sie auf alles, was Sie haben frei zu schreiben 40 00:01:52,920 --> 00:01:54,800 malloced, um den Speicher zurück zu geben. 41 00:01:54,800 --> 00:01:58,420 Wenn Sie nicht schreiben, kostenlos am Ende nicht und Ihr Programm kommt zu dem Schluss, 42 00:01:58,420 --> 00:02:00,000 alles wird automatisch befreit werden. 43 00:02:00,000 --> 00:02:02,340 Und für kleine Programme, ist es nicht so große Sache. 44 00:02:02,340 --> 00:02:05,250 Aber wenn Sie schreiben eine längere Lauf sind Programm, das nicht beendet hat, 45 00:02:05,250 --> 00:02:09,180 notwendig, in ein paar Minuten oder paar Sekunden, dann Speicherlecks 46 00:02:09,180 --> 00:02:10,710 kann eine große Sache werden. 47 00:02:10,710 --> 00:02:14,940 >> Also für pset6 ist die Erwartung, dass Sie Null Speicherlecks haben mit 48 00:02:14,940 --> 00:02:15,910 Ihr Programm. 49 00:02:15,910 --> 00:02:18,690 Um Speicherlecks zu überprüfen, führen valgrind und es wird Ihnen ein paar schöne geben 50 00:02:18,690 --> 00:02:21,190 Ausgangs dass Sie wissen, ob oder nicht, alles war frei. 51 00:02:21,190 --> 00:02:23,940 Wir werden mit später üben heute, hoffentlich. 52 00:02:23,940 --> 00:02:25,790 >> Schließlich wird der Befehl diff. 53 00:02:25,790 --> 00:02:28,900 Sie verwendet es so etwas wie in pset5 mit dem Blick-Tool. 54 00:02:28,900 --> 00:02:30,780 Sie erlaubt nach innen zu schauen. 55 00:02:30,780 --> 00:02:33,400 Sie auch diff auch pro das Problem eingestellt spec. 56 00:02:33,400 --> 00:02:35,950 Aber konnten Sie zwei Dateien vergleichen. 57 00:02:35,950 --> 00:02:39,180 Sie konnten die Bitmap-Datei und vergleichen info Header einer Personal-Lösung und 58 00:02:39,180 --> 00:02:42,200 Ihre Lösung in pset5 wenn Sie entschied sich, es zu benutzen. 59 00:02:42,200 --> 00:02:44,030 Diff werden Sie damit tun, als gut. 60 00:02:44,030 --> 00:02:48,620 Sie können die richtige Antwort für vergleichen dieser Woche Problem zu Ihrer Antwort gesetzt 61 00:02:48,620 --> 00:02:52,210 und sehen, ob es nach oben oder Linien zu sehen Sind die Fehler. 62 00:02:52,210 --> 00:02:55,870 >> Das sind also drei gute Tools, die sollten Sie für diese Woche zu verwenden, und 63 00:02:55,870 --> 00:02:58,130 auf jeden Fall Ihr Programm überprüfen Mit diesen drei Werkzeuge 64 00:02:58,130 --> 00:03:00,520 bevor es in. 65 00:03:00,520 --> 00:03:04,650 Auch hier, wie ich jede Woche erwähnt, beides - wenn ihr Feedback für mich 66 00:03:04,650 --> 00:03:06,470 positiv und konstruktiv - 67 00:03:06,470 --> 00:03:09,930 fühlen Sie sich frei, um auf die Website leiten an der Unterseite des Schiebe 68 00:03:09,930 --> 00:03:11,270 und Eingabe es dort. 69 00:03:11,270 --> 00:03:13,440 Ich schätze jede und alle Rückmeldungen. 70 00:03:13,440 --> 00:03:17,360 Und wenn du mich bestimmte Dinge zu geben, dass Ich tun kann, zu verbessern oder zu, dass ich 71 00:03:17,360 --> 00:03:21,350 geht es gut, dass Sie mich zu mögen weiter, nehme ich das zu Herzen und 72 00:03:21,350 --> 00:03:24,040 versuchen wirklich schwer zu hören auf Ihr Feedback. 73 00:03:24,040 --> 00:03:27,720 Ich kann nicht versprechen, ich werde tun, alles, obwohl, wie das Tragen ein 74 00:03:27,720 --> 00:03:30,700 Kürbis-Kostüm jede Woche. 75 00:03:30,700 --> 00:03:34,020 >> So werden wir den Großteil verbringen Abschnitt, wie ich bereits erwähnt, sprechen über 76 00:03:34,020 --> 00:03:37,240 verkettete Listen und Hash-Tabellen, die wird direkt auf die sein 77 00:03:37,240 --> 00:03:38,780 Problem in dieser Woche eingestellt. 78 00:03:38,780 --> 00:03:42,580 Verknüpfte Listen wir über relativ gehen schnell, denn wir haben ein gutes Stück verbracht 79 00:03:42,580 --> 00:03:44,930 der Zeit gehen über sie im Schnitt. 80 00:03:44,930 --> 00:03:48,680 Und so werden wir direkt in das zu bekommen Codierung Probleme für verkettete Listen. 81 00:03:48,680 --> 00:03:52,740 Und dann am Ende werden wir darüber zu sprechen Hash-Tabellen und wie sie diese anwenden 82 00:03:52,740 --> 00:03:55,280 Woche Problem eingestellt. 83 00:03:55,280 --> 00:03:57,560 >> Sie haben diesen Code zuvor gesehen. 84 00:03:57,560 --> 00:04:02,730 Dies ist eine Struktur, und es wird definiert, Neues ein Knoten genannt. 85 00:04:02,730 --> 00:04:10,660 Und in einem Knoten gibt es eine ganze hier und da ein Zeiger auf 86 00:04:10,660 --> 00:04:11,830 ein anderer Knoten. 87 00:04:11,830 --> 00:04:12,790 Wir haben das gesehen. 88 00:04:12,790 --> 00:04:14,830 Dies wurde kommt für ein paar Wochen. 89 00:04:14,830 --> 00:04:18,680 Es kombiniert Zeiger, die wir waren Arbeit mit, und Strukturen, die es erlauben 90 00:04:18,680 --> 00:04:22,079 uns auf zwei unterschiedliche verbinden Dinge in einem Datentyp. 91 00:04:22,079 --> 00:04:24,830 92 00:04:24,830 --> 00:04:26,490 >> Es ist viel los auf dem Bildschirm. 93 00:04:26,490 --> 00:04:30,220 Aber all das sollte relativ sein Sie vertraut mit. 94 00:04:30,220 --> 00:04:33,810 In der ersten Zeile, die wir erklären einen neuen Knoten. 95 00:04:33,810 --> 00:04:41,650 Und dann in diesem neuen Knoten, habe ich die ganze Zahl in diesem Knoten zu eins. 96 00:04:41,650 --> 00:04:44,950 Wir sehen in der nächsten Zeile ich mache ein printf Befehl, aber ich habe ausgegraut 97 00:04:44,950 --> 00:04:48,080 der Befehl printf, weil das wirklich wichtiger Teil ist diese Linie hier - 98 00:04:48,080 --> 00:04:50,020 new_node.n. 99 00:04:50,020 --> 00:04:51,270 Was ist der Punkt das? 100 00:04:51,270 --> 00:04:53,810 101 00:04:53,810 --> 00:04:57,240 >> ZIELGRUPPE: an den Knoten gehen und Beurteilung der n-Wert für sie. 102 00:04:57,240 --> 00:04:58,370 >> JASON HIRSCHHORN: Das ist genau richtig. 103 00:04:58,370 --> 00:05:03,300 Punkt bedeutet den Zugang des n Teil dieser neuen Knoten. 104 00:05:03,300 --> 00:05:05,690 Das nächste Zeile macht was? 105 00:05:05,690 --> 00:05:16,140 106 00:05:16,140 --> 00:05:17,050 Michael. 107 00:05:17,050 --> 00:05:21,910 >> ZIELGRUPPE: Es wird einen weiteren Knoten dass an den neuen Knotenpunkt. 108 00:05:21,910 --> 00:05:24,870 >> JASON HIRSCHHORN: Also es funktioniert nicht erstellen Sie einen neuen Knoten. 109 00:05:24,870 --> 00:05:26,120 Es schafft ein was? 110 00:05:26,120 --> 00:05:28,300 111 00:05:28,300 --> 00:05:29,300 >> ZIELGRUPPE: Ein Zeiger. 112 00:05:29,300 --> 00:05:33,460 >> JASON HIRSCHHORN: Ein Zeiger auf einen Knoten, wie von diesem Knoten * gekennzeichneten hier. 113 00:05:33,460 --> 00:05:34,800 So schafft einen Zeiger auf einen Knoten. 114 00:05:34,800 --> 00:05:37,490 Und die Knoten wird es zeigen zu, Michael? 115 00:05:37,490 --> 00:05:38,440 >> ZIELGRUPPE: Neuer Knoten? 116 00:05:38,440 --> 00:05:39,240 >> JASON HIRSCHHORN: Neuer Knoten. 117 00:05:39,240 --> 00:05:43,020 Und es ist dort zeigen, weil wir haben gegeben es die Adresse des neuen Knotens. 118 00:05:43,020 --> 00:05:45,820 Und jetzt in dieser Linie sehen wir zwei Arten von 119 00:05:45,820 --> 00:05:46,910 elbe ausdrückt. 120 00:05:46,910 --> 00:05:49,650 Und ich wollte darauf hinweisen, wie diese Zwei Dinge sind gleich. 121 00:05:49,650 --> 00:05:54,740 In der ersten Zeile, die wir dereferenzieren der Zeiger. 122 00:05:54,740 --> 00:05:55,830 So gehen wir in den Knoten. 123 00:05:55,830 --> 00:05:56,830 Das ist, was dieser Stern bedeutet. 124 00:05:56,830 --> 00:05:57,930 Wir haben gesehen, dass, bevor mit Zeigern. 125 00:05:57,930 --> 00:05:59,280 Gehen Sie zu diesem Knoten. 126 00:05:59,280 --> 00:06:00,370 Das ist in Klammern. 127 00:06:00,370 --> 00:06:04,610 Und dann über den Punkt-Operator zugreifen die n Element dieses Knotens. 128 00:06:04,610 --> 00:06:08,430 >> Also das ist, nehmen Sie die Syntax wir hier und jetzt sah 129 00:06:08,430 --> 00:06:09,670 Sie es mit einem Zeiger. 130 00:06:09,670 --> 00:06:13,730 Natürlich wird es etwas beschäftigt, wenn Sie schreiben diese Klammern - 131 00:06:13,730 --> 00:06:14,940 dass Sterne und Punkt. 132 00:06:14,940 --> 00:06:16,220 Es wird ein wenig beschäftigt. 133 00:06:16,220 --> 00:06:18,500 So haben wir einige syntaktischer Zucker. 134 00:06:18,500 --> 00:06:19,920 Und diese Linie hier - 135 00:06:19,920 --> 00:06:21,170 ptr_node-> n. 136 00:06:21,170 --> 00:06:25,400 137 00:06:25,400 --> 00:06:28,000 Das tut exakt das gleiche Ding. 138 00:06:28,000 --> 00:06:30,840 Also diese beiden Codezeilen sind Äquivalent und wird tun 139 00:06:30,840 --> 00:06:31,650 genau die gleiche Sache. 140 00:06:31,650 --> 00:06:34,210 >> Aber ich wollte darauf hinweisen, zu denen vor wir weiter gehen, so dass Sie verstehen, 141 00:06:34,210 --> 00:06:39,000 dass wirklich dieses Ding hier ist nur syntaktischer Zucker für Dereferenzierung 142 00:06:39,000 --> 00:06:44,200 der Zeiger, und dann werde die n Teil dieser Struktur. 143 00:06:44,200 --> 00:06:45,525 Haben Sie Fragen zu dieser Folie? 144 00:06:45,525 --> 00:06:53,020 145 00:06:53,020 --> 00:06:54,390 OK. 146 00:06:54,390 --> 00:06:58,510 >> So werden wir durch ein paar gehen von Operationen, die Sie tun können, auf 147 00:06:58,510 --> 00:06:59,730 verkettete Listen. 148 00:06:59,730 --> 00:07:05,770 Eine verkettete Liste, Rückruf, ist eine Reihe von Knoten, die zueinander weisen. 149 00:07:05,770 --> 00:07:12,470 Und wir in der Regel mit einem Zeiger starten Kopf genannt, in der Regel, Punkte, die 150 00:07:12,470 --> 00:07:14,040 das erste, was in der Liste. 151 00:07:14,040 --> 00:07:18,900 Also in der ersten Zeile hier, wir haben zuerst unsere ursprüngliche L. 152 00:07:18,900 --> 00:07:21,370 Also das, was Sie sich vorstellen können - das Text hier als Sie denken 153 00:07:21,370 --> 00:07:23,560 nur der Zeiger die wir gespeichert haben Punkte, die irgendwo 154 00:07:23,560 --> 00:07:24,670 auf das erste Element. 155 00:07:24,670 --> 00:07:27,500 Und in dieser verketteten Liste wir haben vier Knoten. 156 00:07:27,500 --> 00:07:29,530 Jeder Knoten ist ein großes Feld. 157 00:07:29,530 --> 00:07:33,430 Im größeren Feld innerhalb der großen Feld der ganzzahlige Teil. 158 00:07:33,430 --> 00:07:37,400 Und dann haben wir eine Zeigerteil. 159 00:07:37,400 --> 00:07:39,630 >> Diese Boxen sind nicht gezeichnet Maßstab, weil, wie groß ist 160 00:07:39,630 --> 00:07:42,320 eine ganze Zahl in Bytes? 161 00:07:42,320 --> 00:07:43,290 Wie groß ist jetzt? 162 00:07:43,290 --> 00:07:43,710 Four. 163 00:07:43,710 --> 00:07:45,470 Und wie groß ist ein Zeiger? 164 00:07:45,470 --> 00:07:45,940 Four. 165 00:07:45,940 --> 00:07:48,180 Also wirklich, wenn wir zu zeichnen waren dies, um beide Boxen zu skalieren 166 00:07:48,180 --> 00:07:49,690 würde die gleiche Größe haben. 167 00:07:49,690 --> 00:07:52,870 In diesem Fall einfügen möchten wir etwas in den verketteten Liste. 168 00:07:52,870 --> 00:07:57,190 So kann man hier unten sehen wir Einsetzen Wir durchqueren fünf durch die 169 00:07:57,190 --> 00:08:01,310 verknüpften Liste finden, wo fünf geht, und setzen Sie sie. 170 00:08:01,310 --> 00:08:03,560 >> Lassen Sie uns brechen, dass die nach unten und gehen ein wenig langsamer. 171 00:08:03,560 --> 00:08:05,510 Ich werde in den Vorstand verweisen. 172 00:08:05,510 --> 00:08:09,930 So haben wir unsere fünf Knoten, die wir in mallocs erstellt haben. 173 00:08:09,930 --> 00:08:11,190 Warum ist jeder lachen? 174 00:08:11,190 --> 00:08:12,130 Nur ein Scherz. 175 00:08:12,130 --> 00:08:13,310 OK. 176 00:08:13,310 --> 00:08:14,820 Also haben wir fünf malloced. 177 00:08:14,820 --> 00:08:16,310 Wir haben diesen Knoten erstellt woanders. 178 00:08:16,310 --> 00:08:17,740 Wir haben es bereit zu gehen. 179 00:08:17,740 --> 00:08:20,130 Wir starten an der Vorderseite des unsere Liste mit zwei. 180 00:08:20,130 --> 00:08:22,380 Und wir einfügen wollen in einer sortierten Mode. 181 00:08:22,380 --> 00:08:27,550 >> Also, wenn wir sehen, zwei und wir setzen wollen in fünf, was tun wir, wenn wir sehen, 182 00:08:27,550 --> 00:08:28,800 etwas weniger als bei uns? 183 00:08:28,800 --> 00:08:31,850 184 00:08:31,850 --> 00:08:33,520 Was? 185 00:08:33,520 --> 00:08:36,750 Wir wollen in diese einfügen fünf verketteten Liste, halten sie sortiert. 186 00:08:36,750 --> 00:08:37,520 Wir sehen die Nummer zwei. 187 00:08:37,520 --> 00:08:38,769 Also, was tun wir? 188 00:08:38,769 --> 00:08:39,179 Marcus? 189 00:08:39,179 --> 00:08:40,679 >> ZIELGRUPPE: Rufen Sie den Zeiger zu dem nächsten Knoten. 190 00:08:40,679 --> 00:08:42,530 >> JASON HIRSCHHORN: Und warum tun gehen wir in die nächste? 191 00:08:42,530 --> 00:08:45,970 >> ZIELGRUPPE: Weil es die nächste Knoten in der Liste. 192 00:08:45,970 --> 00:08:48,310 Und wir wissen nur, dass andere Lage. 193 00:08:48,310 --> 00:08:50,410 >> JASON HIRSCHHORN: Und fünf ist größer als zwei, insbesondere. 194 00:08:50,410 --> 00:08:51,600 Weil wir es sortierten halten wollen. 195 00:08:51,600 --> 00:08:52,730 So fünf größer als zwei ist. 196 00:08:52,730 --> 00:08:54,460 So bewegen wir uns auf das nächste. 197 00:08:54,460 --> 00:08:55,240 Und jetzt kommen wir vier. 198 00:08:55,240 --> 00:08:56,490 Und was passiert, wenn wir vier zu erreichen? 199 00:08:56,490 --> 00:08:58,920 200 00:08:58,920 --> 00:09:00,310 >> Fünf größer als vier ist. 201 00:09:00,310 --> 00:09:01,460 So können wir weitermachen. 202 00:09:01,460 --> 00:09:03,110 Und jetzt sind wir um sechs. 203 00:09:03,110 --> 00:09:04,360 Und was machen wir an sechs sehen? 204 00:09:04,360 --> 00:09:08,672 205 00:09:08,672 --> 00:09:09,608 Ja, Carlos? 206 00:09:09,608 --> 00:09:10,544 >> ZIELGRUPPE: Sechs größer als fünf ist. 207 00:09:10,544 --> 00:09:11,480 >> JASON HIRSCHHORN: Sechs ist größer als fünf ist. 208 00:09:11,480 --> 00:09:13,660 Also das ist, wo wir wollen einfügen fünf. 209 00:09:13,660 --> 00:09:17,320 Doch bedenken Sie, dass, wenn wir nur einen Zeiger hier - 210 00:09:17,320 --> 00:09:19,840 das ist unser extra Zeiger, ist Fahren Sie durch die Liste. 211 00:09:19,840 --> 00:09:21,860 Und wir sind zu sechs zeigt. 212 00:09:21,860 --> 00:09:25,010 Wir haben den Überblick über das, was verloren kommt vor sechs. 213 00:09:25,010 --> 00:09:29,130 Also, wenn wir etwas einfügen möchten Diese Liste halten es sortiert, wir 214 00:09:29,130 --> 00:09:31,630 wahrscheinlich brauchen, wie viele Zeiger? 215 00:09:31,630 --> 00:09:32,280 >> ZIELGRUPPE: Zwei. 216 00:09:32,280 --> 00:09:32,920 >> JASON Hirschhorn: Zwei. 217 00:09:32,920 --> 00:09:35,720 Einer, den Überblick über die aktuell zu halten eins und eins, um zu verfolgen 218 00:09:35,720 --> 00:09:37,050 die vorherige. 219 00:09:37,050 --> 00:09:38,450 Dies ist nur eine einfach verkettete Liste. 220 00:09:38,450 --> 00:09:39,670 Es geht nur eine Richtung. 221 00:09:39,670 --> 00:09:43,220 Wenn wir eine doppelt verknüpfte Liste, wo alles war auf die Sache zeigen 222 00:09:43,220 --> 00:09:46,240 nach ihm und der Sache, bevor es dann würden wir nicht brauchen, um das zu tun. 223 00:09:46,240 --> 00:09:49,350 Aber in diesem Fall wollen wir nicht verlieren verfolgen, was vor uns im Falle kam 224 00:09:49,350 --> 00:09:53,350 wir brauchen, um fünf irgendwo einfügen in der Mitte. 225 00:09:53,350 --> 00:09:55,610 Sagen wir, wir waren neun Einfügen. 226 00:09:55,610 --> 00:09:57,260 Was würde passieren, wenn bekamen wir zu acht? 227 00:09:57,260 --> 00:10:01,860 228 00:10:01,860 --> 00:10:04,880 >> ZIELGRUPPE: Sie würden zu haben, bekommen, dass Nullpunkt. 229 00:10:04,880 --> 00:10:07,820 Anstatt Nullpunkt müss um ein Element hinzufügen und dann haben 230 00:10:07,820 --> 00:10:09,216 es neun verweisen. 231 00:10:09,216 --> 00:10:09,700 >> JASON Hirschorn: Genau. 232 00:10:09,700 --> 00:10:10,600 So bekommen wir acht. 233 00:10:10,600 --> 00:10:13,140 Wir erreichen das Ende der Liste, weil dies zeigt auf null. 234 00:10:13,140 --> 00:10:16,330 Und jetzt, anstatt es zu zeigen null haben wir es zu unserem neuen Knoten zeigen. 235 00:10:16,330 --> 00:10:19,870 Und wir setzen Sie den Mauszeiger in In unserem neuen Knoten auf null. 236 00:10:19,870 --> 00:10:21,445 Hat jemand irgendwelche Fragen haben, zum Einfügen? 237 00:10:21,445 --> 00:10:25,620 238 00:10:25,620 --> 00:10:28,100 Was, wenn ich kümmere mich nicht um , die Liste sortiert? 239 00:10:28,100 --> 00:10:31,701 240 00:10:31,701 --> 00:10:34,350 >> ZIELGRUPPE: Halten Sie es an die Anfang oder das Ende. 241 00:10:34,350 --> 00:10:35,510 >> JASON Hirschorn: Halten Sie es an der Beginn oder das Ende. 242 00:10:35,510 --> 00:10:37,276 Welche sollen wir tun? 243 00:10:37,276 --> 00:10:38,770 Bobby? 244 00:10:38,770 --> 00:10:41,020 Warum das Ende? 245 00:10:41,020 --> 00:10:43,250 >> ZIELGRUPPE: Weil der Anfang ist bereits gefüllt. 246 00:10:43,250 --> 00:10:43,575 >> JASON Hirschorn: OK. 247 00:10:43,575 --> 00:10:44,360 Der Anfang ist bereits gefüllt. 248 00:10:44,360 --> 00:10:46,090 Wer will gegen Bobby streiten. 249 00:10:46,090 --> 00:10:47,290 Marcus. 250 00:10:47,290 --> 00:10:48,910 >> ZIELGRUPPE: Nun möchten Sie wahrscheinlich kleben Sie es am Anfang, weil 251 00:10:48,910 --> 00:10:50,140 ansonsten, wenn du es am das Ende Sie müssten 252 00:10:50,140 --> 00:10:51,835 durchqueren die gesamte Liste. 253 00:10:51,835 --> 00:10:52,990 >> JASON Hirschorn: Genau. 254 00:10:52,990 --> 00:10:57,970 Also, wenn wir über Laufzeit denken, die Laufzeit des Einsetzens am Ende 255 00:10:57,970 --> 00:11:00,110 n würde sein, die Größe davon. 256 00:11:00,110 --> 00:11:03,080 Was ist die große O-Laufzeit des Einsetzens am Anfang? 257 00:11:03,080 --> 00:11:04,170 Constant Zeit. 258 00:11:04,170 --> 00:11:07,075 Also, wenn Sie nicht über das Halten kümmern etwas sortiert, viel besser, nur 259 00:11:07,075 --> 00:11:08,420 legen am Anfang dieser Liste. 260 00:11:08,420 --> 00:11:10,320 Und daß in konstanter Zeit durchgeführt werden. 261 00:11:10,320 --> 00:11:13,900 262 00:11:13,900 --> 00:11:14,690 >> OK. 263 00:11:14,690 --> 00:11:18,870 Weiter Betrieb zu finden, die andere - wir dies als Such formuliert habe. 264 00:11:18,870 --> 00:11:22,470 Aber wir werden schauen durch die verketteten Liste für ein Objekt. 265 00:11:22,470 --> 00:11:26,000 Ihr habt Code für gesehen suchen, bevor in der Vorlesung. 266 00:11:26,000 --> 00:11:29,490 Aber wir haben irgendwie nur tat es mit einzufügen, oder zumindest das Einfügen 267 00:11:29,490 --> 00:11:30,580 etwas sortiert. 268 00:11:30,580 --> 00:11:36,350 Sie schauen durch, gehen Knoten für Knoten, bis Sie die Nummer, die Sie finden 269 00:11:36,350 --> 00:11:37,780 suche. 270 00:11:37,780 --> 00:11:39,670 Was passiert, wenn Sie zu erreichen das Ende der Liste? 271 00:11:39,670 --> 00:11:43,020 Sagen wir, ich bin für neun und ich erreichen das Ende der Liste. 272 00:11:43,020 --> 00:11:44,270 Was machen wir? 273 00:11:44,270 --> 00:11:47,147 274 00:11:47,147 --> 00:11:48,110 >> ZIELGRUPPE: Zurück falsch? 275 00:11:48,110 --> 00:11:48,690 >> JASON Hirschorn: Zurück falsch. 276 00:11:48,690 --> 00:11:49,960 Wir fanden es nicht. 277 00:11:49,960 --> 00:11:52,010 Wenn Sie das Ende der Liste zu erreichen und Sie hat die Nummer, du bist nicht zu finden 278 00:11:52,010 --> 00:11:54,170 sucht, es ist nicht dort. 279 00:11:54,170 --> 00:11:55,420 Haben Sie Fragen zu finden? 280 00:11:55,420 --> 00:11:59,530 281 00:11:59,530 --> 00:12:04,615 Wenn dies eine sortierte Liste, was wäre anders für unsere Suche? 282 00:12:04,615 --> 00:12:07,370 283 00:12:07,370 --> 00:12:08,103 Ja. 284 00:12:08,103 --> 00:12:10,600 >> ZIELGRUPPE: Es wäre der erste Wert finden das ist größer als der 285 00:12:10,600 --> 00:12:12,390 Sie suchen und dann wieder falsch. 286 00:12:12,390 --> 00:12:13,190 >> JASON Hirschorn: Genau. 287 00:12:13,190 --> 00:12:17,310 Also, wenn es eine sortierte Liste, wenn wir bekommen etwas, das größer ist als das, was 288 00:12:17,310 --> 00:12:20,180 wir suchen, haben wir nicht brauchen fahren Sie bis zum Ende der Liste. 289 00:12:20,180 --> 00:12:24,060 Wir können an diesem Punkt return false weil wir nicht gehen, um es zu finden. 290 00:12:24,060 --> 00:12:27,340 Die Frage ist nun, über die wir gesprochen haben halten verkettete Listen sortiert, 291 00:12:27,340 --> 00:12:28,180 halten sie unsortiert. 292 00:12:28,180 --> 00:12:30,050 Das wird etwas sein, du bist wahrscheinlich zu denken zu müssen 293 00:12:30,050 --> 00:12:34,240 Problem bei der Codierung eingestellt, wenn Sie fünf wählen Sie eine Hash-Tabelle mit separater 294 00:12:34,240 --> 00:12:36,360 Verkettung Ansatz, der wir werden darüber später reden. 295 00:12:36,360 --> 00:12:41,400 >> Aber ist es das wert, um die Liste zu halten sortiert und dann in der Lage, vielleicht haben 296 00:12:41,400 --> 00:12:42,310 schneller Suchanfragen? 297 00:12:42,310 --> 00:12:47,220 Oder ist es besser, schnell einfügen etwas in konstanter Laufzeit, aber dann 298 00:12:47,220 --> 00:12:48,430 haben mehr zu suchen? 299 00:12:48,430 --> 00:12:52,250 Das ist ein Kompromiss Recht gibt, die Sie erhalten, zu entscheiden, was ist besser geeignet 300 00:12:52,250 --> 00:12:53,590 für Ihr spezielles Problem. 301 00:12:53,590 --> 00:12:56,680 Und es ist nicht unbedingt ein absolut richtige Antwort. 302 00:12:56,680 --> 00:12:59,520 Aber es ist sicherlich eine Entscheidung, die Sie bekommen zu machen, und wahrscheinlich gut zu verteidigen 303 00:12:59,520 --> 00:13:05,270 dass in, sagen wir, ein oder zwei Kommentar, warum Sie einen über den anderen gewählt haben. 304 00:13:05,270 --> 00:13:06,490 >> Schließlich löschen. 305 00:13:06,490 --> 00:13:08,100 Wir haben gesehen, zu löschen. 306 00:13:08,100 --> 00:13:09,180 Es ist ähnlich wie die Suche. 307 00:13:09,180 --> 00:13:11,020 Wir schauen für das Element. 308 00:13:11,020 --> 00:13:12,390 Sagen wir, wir versuchen zu löschen, sechs. 309 00:13:12,390 --> 00:13:14,450 So finden wir hier sechs. 310 00:13:14,450 --> 00:13:18,860 Die Sache, die wir haben, um sicherzustellen, dass wir machen zu tun ist, dass alles, was auf den Hinweis 311 00:13:18,860 --> 00:13:21,220 sechs - wie wir sehen, in Schritt zwei hier unten - 312 00:13:21,220 --> 00:13:26,500 was auch immer zu sechs Bedürfnisse auf den Hinweis ist überspringen sechs und jetzt geändert werden 313 00:13:26,500 --> 00:13:28,160 was auch immer sechs zeigen wird. 314 00:13:28,160 --> 00:13:31,410 Wir wollen nicht immer den Rest der Waisen unserer Liste durch das Vergessen zu setzen, dass 315 00:13:31,410 --> 00:13:32,960 vorherige Zeiger. 316 00:13:32,960 --> 00:13:35,960 Und dann manchmal, je auf dem Programm, werden sie einfach 317 00:13:35,960 --> 00:13:37,380 diesen Knoten vollständig zu löschen. 318 00:13:37,380 --> 00:13:40,135 Manchmal werde zurückkehren möchten, dass Sie der Wert, der in diesem Knoten ist. 319 00:13:40,135 --> 00:13:42,490 Also das ist, wie das Löschen funktioniert. 320 00:13:42,490 --> 00:13:44,610 Sie haben Fragen zu löschen? 321 00:13:44,610 --> 00:13:51,280 322 00:13:51,280 --> 00:13:53,850 >> ZIELGRUPPE: Also, wenn Sie gehen, um zu löschen es würde Sie einfach frei, weil 323 00:13:53,850 --> 00:13:55,655 vermutlich wurde es malloced? 324 00:13:55,655 --> 00:13:57,976 >> JASON Hirschorn: Wenn Sie sich befreien wollen etwas, das genau richtig, und Sie ist 325 00:13:57,976 --> 00:13:58,540 malloced es. 326 00:13:58,540 --> 00:14:00,410 Sagen wir, wir, diesen Wert zurückkehren wollte. 327 00:14:00,410 --> 00:14:04,010 Wir könnten zurück sechs und dann frei dieser Knoten und Anruf ist kostenlos auf sie. 328 00:14:04,010 --> 00:14:06,180 Oder würden wir wahrscheinlich frei zuerst anrufen und dann wieder sechs. 329 00:14:06,180 --> 00:14:11,210 330 00:14:11,210 --> 00:14:11,580 >> OK. 331 00:14:11,580 --> 00:14:14,010 Also machen wir weiter zu praktizieren Codierung. 332 00:14:14,010 --> 00:14:16,090 Wir werden drei Funktionen zu codieren. 333 00:14:16,090 --> 00:14:18,260 Die erste heißt insert_node. 334 00:14:18,260 --> 00:14:22,170 Sie haben also Code, den ich per E-Mail Sie und Wenn Sie beobachten diese später 335 00:14:22,170 --> 00:14:28,020 Sie den Code in linked.c zugreifen können CS50 auf der Website. 336 00:14:28,020 --> 00:14:30,880 Aber in linked.c, es gibt einige Skeleton-Code, der bereits ist 337 00:14:30,880 --> 00:14:32,280 wurde für Sie geschrieben. 338 00:14:32,280 --> 00:14:34,560 Und dann gibt es ein paar Funktionen Sie brauchen, um zu schreiben. 339 00:14:34,560 --> 00:14:36,380 >> Zuerst sind wir zu gehen insert_node schreiben. 340 00:14:36,380 --> 00:14:39,800 Und was tut insert_node heißt fügt eine ganze Zahl. 341 00:14:39,800 --> 00:14:42,440 Und Sie geben dem ganzen Zahl sind in einer verketteten Liste. 342 00:14:42,440 --> 00:14:45,470 Und vor allem, Sie müssen , um die Liste sortiert halten 343 00:14:45,470 --> 00:14:47,650 vom kleinsten zum größten. 344 00:14:47,650 --> 00:14:51,360 Auch können Sie nicht wollen, Duplikate einfügen. 345 00:14:51,360 --> 00:14:54,600 Schließlich, wie Sie sehen insert_node gibt einen bool. 346 00:14:54,600 --> 00:14:57,140 Also man eigentlich damit der Benutzer weiß ob der Einsatz war oder nicht, 347 00:14:57,140 --> 00:15:00,800 durch Rücksendung wahr oder falsch ist erfolgreich. 348 00:15:00,800 --> 00:15:02,580 Am Ende des Programms - 349 00:15:02,580 --> 00:15:05,750 und für diese Phase brauchen Sie nicht sich um nichts kümmern zu befreien. 350 00:15:05,750 --> 00:15:11,790 Also alles, was Sie tun, ist, die einen Integer und Einfügen in eine Liste. 351 00:15:11,790 --> 00:15:13,890 >> Das ist, was ich frage Sie jetzt noch tun. 352 00:15:13,890 --> 00:15:17,620 Auch in der linked.c, die Sie alle haben, ist das Skelett-Code. 353 00:15:17,620 --> 00:15:20,980 Und Sie sollten auf den Grund sehen die Probe Funktionsdeklaration. 354 00:15:20,980 --> 00:15:27,390 Doch bevor er in Codierung es in C, ich sehr empfehlen Ihnen, gehen 355 00:15:27,390 --> 00:15:29,330 durch die Schritte, die wir schon seit Üben pro Woche. 356 00:15:29,330 --> 00:15:31,100 Wir haben schon durchgemacht ein Bild davon. 357 00:15:31,100 --> 00:15:33,380 So sollten Sie ein gewisses Verständnis haben wie das funktioniert. 358 00:15:33,380 --> 00:15:36,590 Aber ich möchte Sie ermutigen zu schreiben einige Pseudocode vor dem Tauchen in. 359 00:15:36,590 --> 00:15:38,640 Und wir gehen über Pseudocode als Gruppe. 360 00:15:38,640 --> 00:15:41,470 Und dann, wenn Sie geschrieben haben, Ihre Pseudocode, und wenn wir geschrieben haben, unsere 361 00:15:41,470 --> 00:15:45,850 Pseudocode als Gruppe, können Sie gehen in Codierung in C 362 00:15:45,850 --> 00:15:49,980 >> Wie ein Heads-up, das insert_node Funktion ist wahrscheinlich der schwierigste von 363 00:15:49,980 --> 00:15:53,550 die drei werden wir schreiben, weil ich hinzugefügt einige zusätzliche Einschränkungen 364 00:15:53,550 --> 00:15:57,190 Ihre Programmierung, insbesondere die du gehst nicht zu einem einfügen 365 00:15:57,190 --> 00:15:59,880 Duplikate und dass die Liste sollte sortierten bleiben. 366 00:15:59,880 --> 00:16:02,660 Das ist also eine nicht-triviale Programm dass Sie zu codieren. 367 00:16:02,660 --> 00:16:06,470 Und warum nimmst du nicht fünf vor sieben Minuten, nur um auf die Arbeit zu bekommen 368 00:16:06,470 --> 00:16:07,640 Pseudocode und der Code. 369 00:16:07,640 --> 00:16:09,460 Und dann werden wir beginnen gehen als Gruppe. 370 00:16:09,460 --> 00:16:11,680 Auch, wenn Sie irgendwelche Fragen haben, nur heben Sie Ihre Hand, und ich werde kommen um. 371 00:16:11,680 --> 00:16:15,258 372 00:16:15,258 --> 00:16:16,508 . 373 00:16:16,508 --> 00:18:28,370 374 00:18:28,370 --> 00:18:30,120 >> Wir tun dies in der Regel auch - 375 00:18:30,120 --> 00:18:32,070 oder ich weiß nicht explizit sagen mit Menschen zu arbeiten. 376 00:18:32,070 --> 00:18:36,500 Aber offensichtlich habe ich sehr empfehlen Ihnen, Wenn Sie Fragen haben, die fragen, 377 00:18:36,500 --> 00:18:39,840 Nachbar neben Ihnen sitzt oder sogar mit jemandem arbeiten 378 00:18:39,840 --> 00:18:40,510 sonst, wenn Sie wollen. 379 00:18:40,510 --> 00:18:42,600 Dies muss nicht ein Individuum zu sein Stumm Aktivität. 380 00:18:42,600 --> 00:20:11,770 381 00:20:11,770 --> 00:20:16,330 >> Lassen Sie uns mit dem Schreiben beginnen einige Pseudocode auf dem Board. 382 00:20:16,330 --> 00:20:19,395 Wer kann mir die erste Zeile geben Pseudocode für dieses Programm? 383 00:20:19,395 --> 00:20:22,240 384 00:20:22,240 --> 00:20:23,640 Für diese Funktion nicht - insert_node. 385 00:20:23,640 --> 00:20:29,960 386 00:20:29,960 --> 00:20:31,830 Alden? 387 00:20:31,830 --> 00:20:36,560 >> ZIELGRUPPE: Also das erste, was ich tat, war erstellen Sie einen neuen Zeiger auf die Knoten und ich 388 00:20:36,560 --> 00:20:41,320 initialisiert wird der gleiche Zeige Sache, die Liste verweist. 389 00:20:41,320 --> 00:20:41,550 >> JASON Hirschorn: OK. 390 00:20:41,550 --> 00:20:45,190 So erstellen Sie einen neuen Zeiger sind die Liste nicht in den Knoten. 391 00:20:45,190 --> 00:20:45,420 >> ZIELGRUPPE: Richtig. 392 00:20:45,420 --> 00:20:46,150 Ja. 393 00:20:46,150 --> 00:20:46,540 >> JASON Hirschorn: OK. 394 00:20:46,540 --> 00:20:48,221 Und dann, was wollen wir tun? 395 00:20:48,221 --> 00:20:49,163 Was ist danach? 396 00:20:49,163 --> 00:20:50,105 Was ist mit dem Knoten? 397 00:20:50,105 --> 00:20:51,050 Wir haben nicht einen Knoten. 398 00:20:51,050 --> 00:20:52,300 Wir müssen nur einen Wert. 399 00:20:52,300 --> 00:20:55,918 400 00:20:55,918 --> 00:20:58,890 Wenn wir einen Knoten einfügen wollen, was wir tun müssen, bevor wir können sogar tun 401 00:20:58,890 --> 00:20:59,980 denke über Einlegen? 402 00:20:59,980 --> 00:21:00,820 >> ZIELGRUPPE: Oh, sorry. 403 00:21:00,820 --> 00:21:02,160 Wir müssen, um Platz für einen Knoten malloc. 404 00:21:02,160 --> 00:21:02,455 >> JASON Hirschorn: Excellent. 405 00:21:02,455 --> 00:21:03,210 Lassen Sie uns - 406 00:21:03,210 --> 00:21:04,628 OK. 407 00:21:04,628 --> 00:21:06,065 Nicht erreichen können, dass hoch. 408 00:21:06,065 --> 00:21:08,939 409 00:21:08,939 --> 00:21:09,897 OK. 410 00:21:09,897 --> 00:21:13,236 Wir werden nach unten gehen und dann wir sind mit zwei Spalten. 411 00:21:13,236 --> 00:21:13,732 Ich kann nicht gehen, dass - 412 00:21:13,732 --> 00:21:14,982 OK. 413 00:21:14,982 --> 00:21:23,660 414 00:21:23,660 --> 00:21:25,130 Erstellen Sie einen neuen Knoten. 415 00:21:25,130 --> 00:21:29,380 Sie können einen anderen Zeiger zu erstellen zur Liste oder können Sie einfach Liste, wie sie ist. 416 00:21:29,380 --> 00:21:30,720 Sie nicht wirklich brauchen, um das zu tun. 417 00:21:30,720 --> 00:21:31,750 >> So schaffen wir einen neuen Knoten. 418 00:21:31,750 --> 00:21:32,010 Große. 419 00:21:32,010 --> 00:21:32,840 Das ist, was wir zuerst tun. 420 00:21:32,840 --> 00:21:34,870 Was kommt als nächstes? 421 00:21:34,870 --> 00:21:35,080 >> ZIELGRUPPE: Warten. 422 00:21:35,080 --> 00:21:38,330 Sollten wir einen neuen Knoten jetzt oder sollten wir warten, um sicherzustellen, dass 423 00:21:38,330 --> 00:21:42,260 es gibt keine Duplikate des Knotens auf der Liste, bevor wir es schaffen? 424 00:21:42,260 --> 00:21:43,100 >> JASON Hirschorn: Gute Frage. 425 00:21:43,100 --> 00:21:47,770 Halten wir das für später, weil die Mehrheit der Zeit werden wir die Schaffung 426 00:21:47,770 --> 00:21:48,220 ein neuer Knoten. 427 00:21:48,220 --> 00:21:49,110 Also werden wir das hier zu halten. 428 00:21:49,110 --> 00:21:51,006 Aber das ist eine gute Frage. 429 00:21:51,006 --> 00:21:53,250 Wenn wir es schaffen und wir finden ein Duplikat, was sollte 430 00:21:53,250 --> 00:21:54,490 wir vor der Rückkehr tun? 431 00:21:54,490 --> 00:21:55,190 >> ZIELGRUPPE: Befreien sie. 432 00:21:55,190 --> 00:21:55,470 >> JASON Hirschorn: Ja. 433 00:21:55,470 --> 00:21:56,500 Wahrscheinlich befreien sie. 434 00:21:56,500 --> 00:21:56,760 OK. 435 00:21:56,760 --> 00:21:59,850 Was machen wir, nachdem wir tun erstellen Sie einen neuen Knoten? 436 00:21:59,850 --> 00:22:02,260 Annie? 437 00:22:02,260 --> 00:22:04,780 >> Gemeinde: Wir haben das Anzahl in den Knoten? 438 00:22:04,780 --> 00:22:05,140 >> JASON Hirschorn: Genau. 439 00:22:05,140 --> 00:22:07,190 Wir setzen die Zahl - wir malloc Raum. 440 00:22:07,190 --> 00:22:08,160 Ich werde dabei belassen alle als eine Zeile. 441 00:22:08,160 --> 00:22:08,720 Aber Sie haben Recht. 442 00:22:08,720 --> 00:22:10,305 Wir malloc Leerzeichen und dann wir setzen die Zahl in. 443 00:22:10,305 --> 00:22:12,585 Wir können sogar den Zeiger gesetzt Teil davon auf null. 444 00:22:12,585 --> 00:22:13,720 Das ist genau richtig. 445 00:22:13,720 --> 00:22:17,400 Und was ist dann danach? 446 00:22:17,400 --> 00:22:18,490 Wir zeichnete dieses Bild auf dem Brett. 447 00:22:18,490 --> 00:22:21,190 Also, was tun wir? 448 00:22:21,190 --> 00:22:22,680 >> ZIELGRUPPE: Wir gehen durch die Liste. 449 00:22:22,680 --> 00:22:23,930 >> JASON Hirschorn: Gehen Sie durch die Liste. 450 00:22:23,930 --> 00:22:30,620 451 00:22:30,620 --> 00:22:31,100 OK. 452 00:22:31,100 --> 00:22:34,280 Und was machen wir prüfen in jedem Knoten. 453 00:22:34,280 --> 00:22:35,955 Kurt, was machen wir überprüfen für jeden Knoten? 454 00:22:35,955 --> 00:22:41,640 >> ZIELGRUPPE: Schauen Sie, ob der n-Wert von dass der Knoten größer ist als der Wert n ist 455 00:22:41,640 --> 00:22:43,070 der Knoten. 456 00:22:43,070 --> 00:22:43,340 >> JASON Hirschorn: OK. 457 00:22:43,340 --> 00:22:44,280 Ich werde tun, - 458 00:22:44,280 --> 00:22:45,855 ja, OK. 459 00:22:45,855 --> 00:22:48,160 So ist es n - 460 00:22:48,160 --> 00:22:59,040 Ich werde sagen, wenn Wert größer ist als dieser Knoten, dann was machen wir? 461 00:22:59,040 --> 00:23:07,290 >> ZIELGRUPPE: Nun, dann fügen wir die Sache richtig davor. 462 00:23:07,290 --> 00:23:07,970 >> JASON Hirschorn: OK. 463 00:23:07,970 --> 00:23:09,410 So dass, wenn er größer als dieser ist, dann wollen wir einfügen. 464 00:23:09,410 --> 00:23:14,010 Aber wir wollen es richtig eingeben möchten weil wir auch sein müsste 465 00:23:14,010 --> 00:23:16,070 Verfolgung, dann, von dem, was vorher war. 466 00:23:16,070 --> 00:23:22,690 So legen Sie vor. 467 00:23:22,690 --> 00:23:25,120 Also haben wir wohl etwas verpasst früher. 468 00:23:25,120 --> 00:23:27,770 Wir müssen wahrscheinlich werden halten verfolgen, was los ist. 469 00:23:27,770 --> 00:23:28,460 Aber wir werden es wieder zu bekommen. 470 00:23:28,460 --> 00:23:30,160 Also, was Wert ist kleiner als? 471 00:23:30,160 --> 00:23:38,030 472 00:23:38,030 --> 00:23:39,710 Kurt, was tun wir, wenn Wert kleiner als? 473 00:23:39,710 --> 00:23:43,000 >> ZIELGRUPPE: Dann einfach weiter es sei denn, es ist die letzte. 474 00:23:43,000 --> 00:23:43,550 >> JASON Hirschhorn: Ich mag diese. 475 00:23:43,550 --> 00:23:44,800 So gehen Sie zum nächsten Knoten. 476 00:23:44,800 --> 00:23:47,410 477 00:23:47,410 --> 00:23:48,930 Es sei denn, es ist die letzte - 478 00:23:48,930 --> 00:23:51,100 Wir sind wahrscheinlich, dass für die Überprüfung im Sinne einer Bedingung. 479 00:23:51,100 --> 00:23:54,870 Aber ja, nächsten Knoten. 480 00:23:54,870 --> 00:23:58,680 Und das ist immer zu niedrig, so dass wir hier über zu bewegen. 481 00:23:58,680 --> 00:24:02,030 Aber wenn - 482 00:24:02,030 --> 00:24:03,280 kann jeder sehen das? 483 00:24:03,280 --> 00:24:07,230 484 00:24:07,230 --> 00:24:11,610 Wenn wir gleich sind, was sollen wir tun? 485 00:24:11,610 --> 00:24:15,740 Wenn der Wert versuchen wir einfügen ist gleich Wert dieses Knotens? 486 00:24:15,740 --> 00:24:16,320 Ja? 487 00:24:16,320 --> 00:24:18,400 >> ZIELGRUPPE: [unverständlich]. 488 00:24:18,400 --> 00:24:18,850 >> JASON Hirschorn: Ja. 489 00:24:18,850 --> 00:24:19,290 Angesichts dieser - 490 00:24:19,290 --> 00:24:20,090 Marcus ist richtig. 491 00:24:20,090 --> 00:24:21,330 Wir könnten vielleicht getan haben etwas anderes. 492 00:24:21,330 --> 00:24:25,360 Aber da wir sie geschaffen haben, ist hier wir sollten zu befreien und dann zurückkehren. 493 00:24:25,360 --> 00:24:26,774 Oh Junge. 494 00:24:26,774 --> 00:24:30,080 Ist das besser? 495 00:24:30,080 --> 00:24:31,850 Wie ist das? 496 00:24:31,850 --> 00:24:33,100 OK. 497 00:24:33,100 --> 00:24:35,360 498 00:24:35,360 --> 00:24:37,640 Kostenlose und dann, was zu tun wir zurückzukehren, [unverständlich]? 499 00:24:37,640 --> 00:24:41,330 500 00:24:41,330 --> 00:24:44,110 OK. 501 00:24:44,110 --> 00:24:45,360 Sind wir etwas fehlt? 502 00:24:45,360 --> 00:24:53,500 503 00:24:53,500 --> 00:24:59,650 Also, wo sind wir den Überblick des Standes der Knoten? 504 00:24:59,650 --> 00:25:02,370 >> ZIELGRUPPE: Ich denke, es gehen würde nach einen neuen Knoten. 505 00:25:02,370 --> 00:25:02,600 >> JASON Hirschorn: OK. 506 00:25:02,600 --> 00:25:03,940 Also am Anfang werden wir wahrscheinlich - 507 00:25:03,940 --> 00:25:07,175 ja, können wir einen Zeiger auf eine neue erstellen Knoten, wie eine vorherige Knotenzeiger und 508 00:25:07,175 --> 00:25:09,600 eine aktuelle Knoten-Zeiger. 509 00:25:09,600 --> 00:25:12,640 Lassen Sie uns also, dass hier einfügen. 510 00:25:12,640 --> 00:25:15,610 511 00:25:15,610 --> 00:25:26,900 Neues aktuellen und früheren Zeiger auf die Knoten. 512 00:25:26,900 --> 00:25:28,955 Aber wenn wir diese Zeiger einstellen? 513 00:25:28,955 --> 00:25:30,205 Wo tun wir das in dem Code? 514 00:25:30,205 --> 00:25:33,830 515 00:25:33,830 --> 00:25:34,160 Jeff? 516 00:25:34,160 --> 00:25:35,170 >> ZIELGRUPPE: - Wert Bedingungen? 517 00:25:35,170 --> 00:25:36,420 >> JASON Hirschorn: Welche ein im Besonderen? 518 00:25:36,420 --> 00:25:39,862 519 00:25:39,862 --> 00:25:40,720 >> ZIELGRUPPE: Ich bin nur verwirrt. 520 00:25:40,720 --> 00:25:44,200 Wenn der Wert größer ist als dieser Knoten, heißt das nicht, dass Sie gehen wollen 521 00:25:44,200 --> 00:25:45,320 zu dem nächsten Knoten? 522 00:25:45,320 --> 00:25:49,515 >> JASON HIRSCHHORN: Also wenn unsere Wert größer als der Wert dieses Knotens. 523 00:25:49,515 --> 00:25:52,130 >> ZIELGRUPPE: Ja, dann würden Sie wollen weiter auf der ganzen Linie, oder? 524 00:25:52,130 --> 00:25:52,590 >> JASON HIRSCHHORN: Richtig. 525 00:25:52,590 --> 00:25:53,840 Also haben wir es hier nicht einfügen. 526 00:25:53,840 --> 00:25:58,430 527 00:25:58,430 --> 00:26:03,240 Wenn weniger als diese Knoten, dann gehen wir zum nächsten Knoten - oder dann werden wir 528 00:26:03,240 --> 00:26:03,835 vor einfügen. 529 00:26:03,835 --> 00:26:05,966 >> ZIELGRUPPE: Warten Sie, was das ist Knoten und die ist Wert? 530 00:26:05,966 --> 00:26:08,510 531 00:26:08,510 --> 00:26:09,280 >> JASON HIRSCHHORN: Gute Frage. 532 00:26:09,280 --> 00:26:13,260 Wert je dieser Funktionsdefinition ist das, was uns gegeben. 533 00:26:13,260 --> 00:26:16,910 So Wert ist die Anzahl uns gegeben. 534 00:26:16,910 --> 00:26:21,120 So dass, wenn der Wert kleiner als dieser ist Knoten, brauchen wir Zeit, um einzufügen. 535 00:26:21,120 --> 00:26:24,575 Wenn der Wert größer ist als dieser Knoten, gehen wir in den nächsten Knoten. 536 00:26:24,575 --> 00:26:26,790 Und zurück auf die ursprüngliche Frage, obwohl, wo - 537 00:26:26,790 --> 00:26:29,060 >> ZIELGRUPPE: Wenn Wert größer ist als dieser Knoten. 538 00:26:29,060 --> 00:26:30,310 >> JASON HIRSCHHORN: Und so was tun wir hier? 539 00:26:30,310 --> 00:26:36,790 540 00:26:36,790 --> 00:26:38,160 Süße. 541 00:26:38,160 --> 00:26:38,860 Das ist richtig. 542 00:26:38,860 --> 00:26:41,370 Ich werde einfach schreiben Update Zeiger. 543 00:26:41,370 --> 00:26:44,010 Aber ja, mit der aktuellen Sie würde zu aktualisieren 544 00:26:44,010 --> 00:26:46,080 Punkt zum nächsten. 545 00:26:46,080 --> 00:26:47,330 Alles andere uns fehlt? 546 00:26:47,330 --> 00:26:52,710 547 00:26:52,710 --> 00:26:54,940 Also werde ich das hier schreibe Code in gedit. 548 00:26:54,940 --> 00:26:58,375 Und während ich dies tun, können Sie eine haben kann, paar Minuten auf den Code arbeiten 549 00:26:58,375 --> 00:28:19,240 dies in C. 550 00:28:19,240 --> 00:28:20,940 >> So habe ich den Pseudocode-Eingang. 551 00:28:20,940 --> 00:28:22,940 Ein kurzer Hinweis, bevor wir loslegen. 552 00:28:22,940 --> 00:28:25,560 Wir können möglicherweise nicht vollständig sein beenden diese in allen 553 00:28:25,560 --> 00:28:27,300 drei dieser Funktionen. 554 00:28:27,300 --> 00:28:30,630 Es ist richtig, Lösungen zu dass ich an euch eine E-Mail aus 555 00:28:30,630 --> 00:28:33,730 nach Abschnitt, und es wird auf CS50.net veröffentlicht. 556 00:28:33,730 --> 00:28:35,640 Also ich weiß nicht Sie ermutigen schau auf den Abschnitten. 557 00:28:35,640 --> 00:28:40,550 Ich ermutige Sie, diese auf versuchen Sie Ihr zu besitzen, und dann mit dem die Praxis 558 00:28:40,550 --> 00:28:41,760 Probleme, Ihre Antworten zu überprüfen. 559 00:28:41,760 --> 00:28:47,070 Diese wurden alle entwickelt, um eng betreffen und sich an das, was 560 00:28:47,070 --> 00:28:48,400 Sie haben sich auf das Problem Satz zu tun. 561 00:28:48,400 --> 00:28:53,820 Also habe ich Sie ermutigen, dies zu üben auf eigene Faust und dann mit dem Code 562 00:28:53,820 --> 00:28:54,660 überprüfen Sie Ihre Antworten. 563 00:28:54,660 --> 00:28:57,060 Weil ich will auf dem Weg zu hacken Tabellen zu einem bestimmten Zeitpunkt in der Sektion. 564 00:28:57,060 --> 00:28:58,150 So könnten wir nicht über allem. 565 00:28:58,150 --> 00:28:59,960 Aber wir werden jetzt so viel wir können. 566 00:28:59,960 --> 00:29:00,370 >> OK. 567 00:29:00,370 --> 00:29:01,960 Lassen Sie uns beginnen. 568 00:29:01,960 --> 00:29:04,770 Asam, wie schaffen wir einen neuen Knoten? 569 00:29:04,770 --> 00:29:06,810 >> ZIELGRUPPE: Sie konstruieren *. 570 00:29:06,810 --> 00:29:09,640 >> JASON HIRSCHHORN: Also wir haben, dass hier oben. 571 00:29:09,640 --> 00:29:10,040 Oh, sorry. 572 00:29:10,040 --> 00:29:13,530 Sie sagten struct *. 573 00:29:13,530 --> 00:29:17,260 >> ZIELGRUPPE: Und dann [? Art?] Knoten-oder c-Knoten. 574 00:29:17,260 --> 00:29:17,780 >> JASON HIRSCHHORN: OK. 575 00:29:17,780 --> 00:29:19,740 Ich werde es nennen new_node so können wir im Einklang bleiben. 576 00:29:19,740 --> 00:29:22,646 577 00:29:22,646 --> 00:29:33,180 >> ZIELGRUPPE: Und Sie setzen wollen, dass den Kopf, den ersten Knoten. 578 00:29:33,180 --> 00:29:33,580 >> JASON HIRSCHHORN: OK. 579 00:29:33,580 --> 00:29:37,290 So, jetzt diese zeigt auf - so dass diese noch nicht einen neuen Knoten erstellt. 580 00:29:37,290 --> 00:29:41,380 Dies ist nur die Zeige ersten Knoten in der Liste. 581 00:29:41,380 --> 00:29:42,630 Wie erstelle ich einen neuen Knoten? 582 00:29:42,630 --> 00:29:45,490 583 00:29:45,490 --> 00:29:48,070 Wenn ich Platz für einen neuen Knoten erstellen. 584 00:29:48,070 --> 00:29:49,230 Malloc. 585 00:29:49,230 --> 00:29:51,710 Und wie groß? 586 00:29:51,710 --> 00:30:00,390 >> ZIELGRUPPE: Die Größe der Struktur. 587 00:30:00,390 --> 00:30:01,150 >> JASON HIRSCHHORN: Die Größe der Struktur. 588 00:30:01,150 --> 00:30:02,400 Und was die Struktur genannt? 589 00:30:02,400 --> 00:30:09,670 590 00:30:09,670 --> 00:30:09,840 >> ZIELGRUPPE: Knoten? 591 00:30:09,840 --> 00:30:11,640 >> JASON HIRSCHHORN: Knoten. 592 00:30:11,640 --> 00:30:17,640 So malloc (sizeof (Knoten)); gibt uns Raum. 593 00:30:17,640 --> 00:30:19,740 Und ist diese Linie - 594 00:30:19,740 --> 00:30:21,740 eine Sache falsch ist auf dieser Linie. 595 00:30:21,740 --> 00:30:24,430 New_node ist ein Zeiger auf eine Struktur? 596 00:30:24,430 --> 00:30:25,650 Das ist ein generischer Name. 597 00:30:25,650 --> 00:30:26,520 Was ist das - 598 00:30:26,520 --> 00:30:27,450 Knoten, genau. 599 00:30:27,450 --> 00:30:29,340 Es ist ein Knoten *. 600 00:30:29,340 --> 00:30:33,010 Und was machen wir nach rechts zu tun malloc wir etwas, Asan? 601 00:30:33,010 --> 00:30:34,476 Was ist das erste, was wir tun? 602 00:30:34,476 --> 00:30:38,850 603 00:30:38,850 --> 00:30:40,320 Was, wenn es nicht funktioniert? 604 00:30:40,320 --> 00:30:42,430 >> ZIELGRUPPE: Oh, prüfen, ob es zeigt auf den Knoten? 605 00:30:42,430 --> 00:30:43,310 >> JASON HIRSCHHORN: Genau. 606 00:30:43,310 --> 00:30:46,750 Also, wenn Sie new_node gleich equals null, was tun wir? 607 00:30:46,750 --> 00:30:51,650 608 00:30:51,650 --> 00:30:54,820 Dies gibt einen bool, diese Funktion. 609 00:30:54,820 --> 00:30:57,760 Genau. 610 00:30:57,760 --> 00:30:58,450 Sieht gut aus. 611 00:30:58,450 --> 00:30:59,680 Alles, was es hinzufügen? 612 00:30:59,680 --> 00:31:00,670 Wir werden die Dinge am Ende hinzufügen. 613 00:31:00,670 --> 00:31:03,160 Aber so weit, dass sieht gut aus. 614 00:31:03,160 --> 00:31:06,170 Neues aktuellen und früheren Zeiger. 615 00:31:06,170 --> 00:31:08,650 Michael, wie kann ich dies tun? 616 00:31:08,650 --> 00:31:12,810 >> ZIELGRUPPE: Sie müssten um einen Knoten zu machen *. 617 00:31:12,810 --> 00:31:21,800 618 00:31:21,800 --> 00:31:25,502 Man müsste man nicht machen für new_node aber für die 619 00:31:25,502 --> 00:31:26,905 Knoten haben wir bereits. 620 00:31:26,905 --> 00:31:27,230 >> JASON HIRSCHHORN: OK. 621 00:31:27,230 --> 00:31:29,255 So der aktuelle Knoten sind wir auf. 622 00:31:29,255 --> 00:31:30,505 Ich werde diese curr anrufen. 623 00:31:30,505 --> 00:31:39,650 624 00:31:39,650 --> 00:31:39,770 Gut. 625 00:31:39,770 --> 00:31:41,620 Wir haben beschlossen, die wir behalten wollen zwei, weil wir wissen müssen 626 00:31:41,620 --> 00:31:42,870 was vor ihm. 627 00:31:42,870 --> 00:31:45,770 628 00:31:45,770 --> 00:31:47,020 Was bekommen sie initialisiert? 629 00:31:47,020 --> 00:31:49,874 630 00:31:49,874 --> 00:31:54,180 >> ZIELGRUPPE: Ihr Wert in unserer Liste. 631 00:31:54,180 --> 00:31:58,090 >> JASON HIRSCHHORN: Also, was ist der erste, was auf unserer Liste? 632 00:31:58,090 --> 00:32:04,050 Oder wie können wir wissen, wo die Anfang unserer Liste ist? 633 00:32:04,050 --> 00:32:08,015 >> ZIELGRUPPE: Ist es nicht übergeben in die Funktion? 634 00:32:08,015 --> 00:32:08,466 >> JASON HIRSCHHORN: Richtig. 635 00:32:08,466 --> 00:32:09,716 Es wurde hier weitergeleitet. 636 00:32:09,716 --> 00:32:15,910 637 00:32:15,910 --> 00:32:18,980 Also, wenn es in die Funktion übergeben, die Anfang der Liste, was sollen wir 638 00:32:18,980 --> 00:32:21,270 Strom gleich gesetzt? 639 00:32:21,270 --> 00:32:22,110 >> ZIELGRUPPE: Liste. 640 00:32:22,110 --> 00:32:22,900 >> JASON HIRSCHHORN: Liste. 641 00:32:22,900 --> 00:32:24,090 Das ist genau richtig. 642 00:32:24,090 --> 00:32:26,290 Jetzt die Adresse hat der Anfang unserer Liste. 643 00:32:26,290 --> 00:32:28,450 Und was ist mit vorherigen? 644 00:32:28,450 --> 00:32:31,920 >> ZIELGRUPPE: Liste minus eins? 645 00:32:31,920 --> 00:32:32,690 >> JASON HIRSCHHORN: Es gibt nichts vor ihr. 646 00:32:32,690 --> 00:32:34,580 Also, was können wir tun, um nichts zu bedeuten? 647 00:32:34,580 --> 00:32:35,050 >> ZIELGRUPPE: Null. 648 00:32:35,050 --> 00:32:35,450 >> JASON HIRSCHHORN: Ja. 649 00:32:35,450 --> 00:32:37,950 Das klingt wie eine gute Idee. 650 00:32:37,950 --> 00:32:38,360 Perfect. 651 00:32:38,360 --> 00:32:39,630 Danke. 652 00:32:39,630 --> 00:32:42,850 Gehen Sie durch die Liste. 653 00:32:42,850 --> 00:32:45,490 Konstantin, wie lange werden wir um durch die Liste zu gehen? 654 00:32:45,490 --> 00:32:49,010 >> ZIELGRUPPE: bis wir null. 655 00:32:49,010 --> 00:32:49,390 >> JASON HIRSCHHORN: OK. 656 00:32:49,390 --> 00:32:50,430 Also, wenn, während, for-Schleife. 657 00:32:50,430 --> 00:32:52,200 Was machen wir? 658 00:32:52,200 --> 00:32:53,320 >> ZIELGRUPPE: Vielleicht eine for-Schleife? 659 00:32:53,320 --> 00:32:53,910 >> JASON HIRSCHHORN: Wir tun eine for-Schleife. 660 00:32:53,910 --> 00:32:55,870 OK. 661 00:32:55,870 --> 00:33:02,465 >> ZIELGRUPPE: Und wir sagen, für - 662 00:33:02,465 --> 00:33:09,764 663 00:33:09,764 --> 00:33:13,390 bis der aktuelle Zeiger nicht gleich null. 664 00:33:13,390 --> 00:33:19,160 >> JASON HIRSCHHORN: Also, wenn wir wissen, dass die Zustand, wie können wir schreiben eine Schleife 665 00:33:19,160 --> 00:33:21,740 Basis weg von diesem Zustand. 666 00:33:21,740 --> 00:33:24,380 Welche Art von einer Schleife sollten wir verwenden? 667 00:33:24,380 --> 00:33:25,260 >> ZIELGRUPPE: Während. 668 00:33:25,260 --> 00:33:25,590 >> JASON HIRSCHHORN: Ja. 669 00:33:25,590 --> 00:33:27,130 Das macht mehr Sinn, auf der Basis ab von dem, was Sie gesagt haben. 670 00:33:27,130 --> 00:33:29,430 Wenn wir wollen, nur um in die wir gehen, es würde weiß nur, dass die Sache, wäre es 671 00:33:29,430 --> 00:33:31,680 Sinn, eine while-Schleife zu tun. 672 00:33:31,680 --> 00:33:39,880 Während aktuelle ist nicht gleich null, wenn der Wert weniger als dieses Knotens. 673 00:33:39,880 --> 00:33:41,650 Akshar, gib mir diese Zeile. 674 00:33:41,650 --> 00:33:48,810 675 00:33:48,810 --> 00:33:56,955 >> ZIELGRUPPE: Wenn Strom> n n kleiner als der Wert. 676 00:33:56,955 --> 00:34:00,170 677 00:34:00,170 --> 00:34:03,260 Oder umgekehrt, dass. 678 00:34:03,260 --> 00:34:06,140 Schalter, der Halterung. 679 00:34:06,140 --> 00:34:06,620 >> JASON HIRSCHHORN: Es tut uns leid. 680 00:34:06,620 --> 00:34:08,760 >> ZIELGRUPPE: Ändern Sie die Halterung. 681 00:34:08,760 --> 00:34:10,914 >> JASON HIRSCHHORN: Also, wenn es größer als der Wert. 682 00:34:10,914 --> 00:34:18,719 683 00:34:18,719 --> 00:34:22,120 Denn das ist verwirrend mit der Kommentar oben, werde ich das tun. 684 00:34:22,120 --> 00:34:22,480 Aber ja. 685 00:34:22,480 --> 00:34:25,125 Wenn unser Wert kleiner als das ist Knoten, was tun wir? 686 00:34:25,125 --> 00:34:25,540 Oh. 687 00:34:25,540 --> 00:34:26,710 Ich habe es hier richtig. 688 00:34:26,710 --> 00:34:27,960 Legen Sie vor. 689 00:34:27,960 --> 00:34:32,080 690 00:34:32,080 --> 00:34:32,370 OK. 691 00:34:32,370 --> 00:34:33,933 Wie tun wir das? 692 00:34:33,933 --> 00:34:34,900 >> ZIELGRUPPE: Ist es immer noch zu mir? 693 00:34:34,900 --> 00:34:36,150 >> JASON HIRSCHHORN: Ja. 694 00:34:36,150 --> 00:34:38,520 695 00:34:38,520 --> 00:34:39,770 >> ZIELGRUPPE: Sie - 696 00:34:39,770 --> 00:34:42,909 697 00:34:42,909 --> 00:34:44,159 new_node-> next. 698 00:34:44,159 --> 00:34:46,770 699 00:34:46,770 --> 00:34:50,163 >> JASON HIRSCHHORN: Also, was ist dass würde gleich? 700 00:34:50,163 --> 00:34:52,070 >> ZIELGRUPPE: Es ist die Gleichstrom gehen. 701 00:34:52,070 --> 00:34:53,889 >> JASON HIRSCHHORN: Genau. 702 00:34:53,889 --> 00:34:55,730 Und so ist die andere - 703 00:34:55,730 --> 00:34:56,730 was wir sonst noch brauchen, um zu aktualisieren? 704 00:34:56,730 --> 00:34:59,982 >> ZIELGRUPPE: Prüfen Sie, ob Vergangenheit gleich null. 705 00:34:59,982 --> 00:35:01,870 >> JASON HIRSCHHORN: Wenn prev - 706 00:35:01,870 --> 00:35:03,730 Wenn prev gleich null. 707 00:35:03,730 --> 00:35:05,990 >> PUBLIKUM: Das bedeutet, es wird bis der Kopf zu werden. 708 00:35:05,990 --> 00:35:06,780 >> JASON HIRSCHHORN: Das Mittel es ist der Kopf geworden. 709 00:35:06,780 --> 00:35:07,620 Also, was tun wir? 710 00:35:07,620 --> 00:35:12,510 >> ZIELGRUPPE: Wir tun new_node Kopf entspricht. 711 00:35:12,510 --> 00:35:16,690 >> JASON HIRSCHHORN: Kopf new_node entspricht. 712 00:35:16,690 --> 00:35:20,540 Und warum hier aus fahren, nicht aufgelistet? 713 00:35:20,540 --> 00:35:24,940 >> ZIELGRUPPE: Weil Kopf ist ein weltweit Variable, die der Ausgangspunkt ist. 714 00:35:24,940 --> 00:35:26,190 >> JASON HIRSCHHORN: Süße. 715 00:35:26,190 --> 00:35:33,750 716 00:35:33,750 --> 00:35:34,170 OK. 717 00:35:34,170 --> 00:35:36,150 Und - 718 00:35:36,150 --> 00:35:53,796 >> ZIELGRUPPE: Dann können Sie sonst noch prev-> gleich neben new_node. 719 00:35:53,796 --> 00:35:55,080 Und dann true zurück. 720 00:35:55,080 --> 00:35:59,560 721 00:35:59,560 --> 00:36:02,700 >> JASON HIRSCHHORN: Wo setzen wir new_node Ende? 722 00:36:02,700 --> 00:36:04,850 >> ZIELGRUPPE: Ich würde - 723 00:36:04,850 --> 00:36:06,180 Ich, dass an den Start. 724 00:36:06,180 --> 00:36:07,430 >> JASON HIRSCHHORN: Also welche Linie? 725 00:36:07,430 --> 00:36:10,000 726 00:36:10,000 --> 00:36:12,598 >> ZIELGRUPPE: Nach der if-Anweisung prüft, ob es bekannt. 727 00:36:12,598 --> 00:36:13,057 >> JASON HIRSCHHORN: Gleich hier? 728 00:36:13,057 --> 00:36:18,335 >> ZIELGRUPPE: Ich würde tun new_node-> n Wert entspricht. 729 00:36:18,335 --> 00:36:19,585 >> JASON HIRSCHHORN: Klingt gut. 730 00:36:19,585 --> 00:36:21,740 731 00:36:21,740 --> 00:36:25,090 Wahrscheinlich macht es Sinn - wir nicht müssen wissen, welche Liste sind wir auf 732 00:36:25,090 --> 00:36:26,280 weil wir nur den Umgang mit einer Liste. 733 00:36:26,280 --> 00:36:29,560 Also eine bessere Funktion Erklärung für das ist einfach nur loszuwerden, diese 734 00:36:29,560 --> 00:36:34,360 und ganz einfach einfügen ein Wert in den Kopf. 735 00:36:34,360 --> 00:36:35,930 Wir brauchen nicht einmal zu wissen, Liste, welche wir in. 736 00:36:35,930 --> 00:36:39,140 Aber ich werde es jetzt zu halten und dann ändern Sie es auf die Aktualisierung 737 00:36:39,140 --> 00:36:42,590 Die Folien und Code. 738 00:36:42,590 --> 00:36:44,980 Also das sieht gut aus für heute. 739 00:36:44,980 --> 00:36:46,560 Wenn der Wert -, die diese Linie tun kann? 740 00:36:46,560 --> 00:36:47,810 Wenn - 741 00:36:47,810 --> 00:36:52,240 742 00:36:52,240 --> 00:36:53,840 was tun wir hier, Noah. 743 00:36:53,840 --> 00:36:57,890 744 00:36:57,890 --> 00:37:07,100 >> ZIELGRUPPE: Wenn Wert größer ist als curr-> n - 745 00:37:07,100 --> 00:37:16,830 746 00:37:16,830 --> 00:37:18,240 >> JASON HIRSCHHORN: Wie gehen wir zum nächsten Knoten? 747 00:37:18,240 --> 00:37:27,760 748 00:37:27,760 --> 00:37:30,530 >> ZIELGRUPPE: Curr-> n gleich new_node. 749 00:37:30,530 --> 00:37:37,630 750 00:37:37,630 --> 00:37:39,195 >> JASON HIRSCHHORN: Also n welcher Teil der Struktur? 751 00:37:39,195 --> 00:37:43,065 752 00:37:43,065 --> 00:37:46,020 Die ganze Zahl ist. 753 00:37:46,020 --> 00:37:50,420 Und new_node ist ein Zeiger zu einem Knoten. 754 00:37:50,420 --> 00:37:51,880 Also, welche Teil der curr sollten wir aktualisieren? 755 00:37:51,880 --> 00:38:03,900 756 00:38:03,900 --> 00:38:05,400 N Wenn nicht, was ist dann der andere Teil? 757 00:38:05,400 --> 00:38:21,680 758 00:38:21,680 --> 00:38:22,810 Noah, was ist der andere Teil. 759 00:38:22,810 --> 00:38:23,570 >> ZIELGRUPPE: Oh, das nächste. 760 00:38:23,570 --> 00:38:25,645 >> JASON HIRSCHHORN: Next, genau. 761 00:38:25,645 --> 00:38:26,410 Genau. 762 00:38:26,410 --> 00:38:28,770 Als nächstes ist der richtige. 763 00:38:28,770 --> 00:38:31,540 Und was wir sonst noch brauchen zu aktualisieren, Noah? 764 00:38:31,540 --> 00:38:32,840 >> ZIELGRUPPE: Die Zeiger. 765 00:38:32,840 --> 00:38:34,840 >> JASON HIRSCHHORN: Also wir aktualisiert Strom. 766 00:38:34,840 --> 00:38:36,090 >> ZIELGRUPPE: Vorschau-> next. 767 00:38:36,090 --> 00:38:48,160 768 00:38:48,160 --> 00:38:49,410 >> JASON HIRSCHHORN: Ja. 769 00:38:49,410 --> 00:38:57,465 770 00:38:57,465 --> 00:38:58,370 OK, wir unterbrechen. 771 00:38:58,370 --> 00:39:02,200 Wer kann uns hier helfen? 772 00:39:02,200 --> 00:39:03,385 Manu, was sollen wir tun? 773 00:39:03,385 --> 00:39:05,615 >> ZIELGRUPPE: Du musst gesetzt sie gleich curr-> next. 774 00:39:05,615 --> 00:39:09,110 775 00:39:09,110 --> 00:39:11,630 Aber wissen, dass vor der vorherigen Zeile. 776 00:39:11,630 --> 00:39:12,880 >> JASON HIRSCHHORN: OK. 777 00:39:12,880 --> 00:39:16,590 778 00:39:16,590 --> 00:39:18,260 Sonst noch was? 779 00:39:18,260 --> 00:39:19,170 Akshar. 780 00:39:19,170 --> 00:39:22,680 >> ZIELGRUPPE: Ich glaube nicht, dass Sie soll curr-> next ändern. 781 00:39:22,680 --> 00:39:29,270 Ich denke, man soll curr Gleichen erleben curr-> neben an den nächsten Knoten zu gehen. 782 00:39:29,270 --> 00:39:30,500 >> JASON HIRSCHHORN: Also sorry, wo? 783 00:39:30,500 --> 00:39:32,680 Auf welcher Linie? 784 00:39:32,680 --> 00:39:33,420 Diese Linie? 785 00:39:33,420 --> 00:39:33,750 >> ZIELGRUPPE: Ja. 786 00:39:33,750 --> 00:39:35,745 Machen curr gleich curr-> next. 787 00:39:35,745 --> 00:39:39,690 788 00:39:39,690 --> 00:39:43,360 >> JASON HIRSCHHORN: Also das ist richtig denn Strom ist ein 789 00:39:43,360 --> 00:39:45,220 Zeiger auf einen Knoten. 790 00:39:45,220 --> 00:39:48,550 Und wir wollen, dass es mit dem nächsten Punkt Knoten, was immer noch 791 00:39:48,550 --> 00:39:49,930 wies auf. 792 00:39:49,930 --> 00:39:54,410 Curr selbst hat eine nächste. 793 00:39:54,410 --> 00:39:58,620 Aber wenn wir curr.next aktualisieren wir würde die Aktualisierung des eigentlichen Noten 794 00:39:58,620 --> 00:40:01,430 selbst nicht, wo diese Zeiger deutete. 795 00:40:01,430 --> 00:40:02,680 Was ist mit dieser Linie, aber. 796 00:40:02,680 --> 00:40:05,160 797 00:40:05,160 --> 00:40:07,330 Avi? 798 00:40:07,330 --> 00:40:09,590 >> ZIELGRUPPE: Vorschau-> next gleich akt. 799 00:40:09,590 --> 00:40:12,500 800 00:40:12,500 --> 00:40:19,440 >> JASON HIRSCHHORN: Also wieder zurück, wenn ein Zeiger auf einen Knoten, der nächste ist prev-> das 801 00:40:19,440 --> 00:40:23,020 Ist Zeiger im Knoten. 802 00:40:23,020 --> 00:40:27,190 Also das wäre eine Aktualisierung Zeiger in einem Knoten zu akt. 803 00:40:27,190 --> 00:40:28,570 Wir wollen nicht zu aktualisieren ein Zeiger in einem Knoten. 804 00:40:28,570 --> 00:40:30,570 Wir wollen die Aktualisierung von früheren. 805 00:40:30,570 --> 00:40:31,850 Also, wie machen wir das? 806 00:40:31,850 --> 00:40:34,250 >> ZIELGRUPPE: Es wäre nur prev werden. 807 00:40:34,250 --> 00:40:34,565 >> JASON HIRSCHHORN: Richtig. 808 00:40:34,565 --> 00:40:35,560 Prev ist ein Zeiger zu einem Knoten. 809 00:40:35,560 --> 00:40:38,750 Jetzt werden wir ändern, dass es ein neue Zeiger auf einen Knoten. 810 00:40:38,750 --> 00:40:40,830 OK wir uns nach unten. 811 00:40:40,830 --> 00:40:41,940 Schließlich kann diese letzte Bedingung. 812 00:40:41,940 --> 00:40:44,896 Jeff, was tun wir hier? 813 00:40:44,896 --> 00:40:47,515 >> ZIELGRUPPE: Wenn Wert gleich curr-> n. 814 00:40:47,515 --> 00:40:51,030 815 00:40:51,030 --> 00:40:51,300 >> JASON HIRSCHHORN: Es tut uns leid. 816 00:40:51,300 --> 00:40:52,372 Ach du meine Güte. 817 00:40:52,372 --> 00:40:54,330 Was? 818 00:40:54,330 --> 00:40:55,580 Value == curr-> n. 819 00:40:55,580 --> 00:41:01,050 820 00:41:01,050 --> 00:41:02,300 Was machen wir? 821 00:41:02,300 --> 00:41:04,760 822 00:41:04,760 --> 00:41:10,950 >> ZIELGRUPPE: Sie würden unsere new_node befreien, und dann würden Sie false zurück. 823 00:41:10,950 --> 00:41:21,410 824 00:41:21,410 --> 00:41:23,460 >> JASON HIRSCHHORN: Das ist, was wir bisher geschrieben. 825 00:41:23,460 --> 00:41:25,710 Hat jemand etwas haben hinzuzufügen, bevor wir? 826 00:41:25,710 --> 00:41:35,460 827 00:41:35,460 --> 00:41:35,710 OK. 828 00:41:35,710 --> 00:41:36,960 Versuchen wir es. 829 00:41:36,960 --> 00:41:44,180 830 00:41:44,180 --> 00:41:46,110 Die Kontrolle kann das Ende erreichen eines nicht-Leerfunktion. 831 00:41:46,110 --> 00:41:48,310 Avi, was ist los? 832 00:41:48,310 --> 00:41:51,380 >> ZIELGRUPPE: Sind Sie eigentlich Rückkehr setzen wahr außerhalb der while-Schleife? 833 00:41:51,380 --> 00:41:53,900 834 00:41:53,900 --> 00:41:54,400 >> JASON HIRSCHHORN: Ich weiß es nicht. 835 00:41:54,400 --> 00:41:54,780 Willst du mich auf? 836 00:41:54,780 --> 00:41:55,520 >> ZIELGRUPPE: Macht nichts. 837 00:41:55,520 --> 00:41:56,350 Nein. 838 00:41:56,350 --> 00:41:57,180 >> JASON HIRSCHHORN: Akshar? 839 00:41:57,180 --> 00:41:59,460 >> ZIELGRUPPE: Ich denke, Sie bedeutete return false setzen am Ende 840 00:41:59,460 --> 00:42:02,230 der while-Schleife. 841 00:42:02,230 --> 00:42:03,270 >> JASON HIRSCHHORN: Also, wo Sie wollen, dass es gehen? 842 00:42:03,270 --> 00:42:05,270 >> ZIELGRUPPE: Wie außerhalb der while-Schleife. 843 00:42:05,270 --> 00:42:08,800 Also, wenn Sie die while-Schleife verlassen, dass Mittel dass Sie das Ende erreicht haben, und 844 00:42:08,800 --> 00:42:09,980 nichts passiert ist. 845 00:42:09,980 --> 00:42:10,410 >> JASON HIRSCHHORN: OK. 846 00:42:10,410 --> 00:42:12,340 Also, was tun wir hier? 847 00:42:12,340 --> 00:42:13,702 >> ZIELGRUPPE: Sie return false auch dort. 848 00:42:13,702 --> 00:42:15,040 >> JASON HIRSCHHORN: Oh, wir tun es in beiden Orten? 849 00:42:15,040 --> 00:42:15,650 >> ZIELGRUPPE: Ja. 850 00:42:15,650 --> 00:42:16,900 >> JASON HIRSCHHORN: OK. 851 00:42:16,900 --> 00:42:24,840 852 00:42:24,840 --> 00:42:26,160 Sollen wir gehen? 853 00:42:26,160 --> 00:42:26,980 Ach du meine Güte. 854 00:42:26,980 --> 00:42:27,290 Es tut mir leid. 855 00:42:27,290 --> 00:42:28,480 Ich entschuldige mich für den Bildschirm. 856 00:42:28,480 --> 00:42:30,530 Es ist eine Art ausgeflippt auf uns. 857 00:42:30,530 --> 00:42:31,520 So wählen Sie eine Option. 858 00:42:31,520 --> 00:42:35,260 Zero, per Code, beendet das Programm. 859 00:42:35,260 --> 00:42:36,700 Man legt etwas. 860 00:42:36,700 --> 00:42:37,990 Lassen Sie uns legen Sie drei. 861 00:42:37,990 --> 00:42:42,900 862 00:42:42,900 --> 00:42:45,380 Das Insert war nicht erfolgreich. 863 00:42:45,380 --> 00:42:46,500 Ich werde zum ausdrucken. 864 00:42:46,500 --> 00:42:48,050 Ich habe nichts. 865 00:42:48,050 --> 00:42:48,450 OK. 866 00:42:48,450 --> 00:42:50,250 Vielleicht war das nur ein Zufall. 867 00:42:50,250 --> 00:42:52,810 Legen Sie ein. 868 00:42:52,810 --> 00:42:55,770 Nicht erfolgreich. 869 00:42:55,770 --> 00:42:57,470 OK. 870 00:42:57,470 --> 00:43:02,400 Lassen Sie uns wirklich schnell durch GDB laufen zu prüfen, was los ist. 871 00:43:02,400 --> 00:43:06,055 >> Angemeldet gdb. / Der Name des Programm bringt uns in GDB. 872 00:43:06,055 --> 00:43:07,610 Ist das viel zu handhaben? 873 00:43:07,610 --> 00:43:08,560 Die blinkende? 874 00:43:08,560 --> 00:43:10,400 Wahrscheinlich. 875 00:43:10,400 --> 00:43:12,760 Schließen Sie die Augen und nehmen Sie sich etwas tief atmet, wenn Sie müde 876 00:43:12,760 --> 00:43:13,580 es zu betrachten. 877 00:43:13,580 --> 00:43:14,200 Ich bin in der GDB. 878 00:43:14,200 --> 00:43:15,830 Was ist das erste, was ich tun in GDB? 879 00:43:15,830 --> 00:43:17,050 Wir müssen herausfinden, was ist denn hier los. 880 00:43:17,050 --> 00:43:17,310 Mal sehen. 881 00:43:17,310 --> 00:43:21,650 Wir haben sechs Minuten, um Figur heraus, was los ist. 882 00:43:21,650 --> 00:43:22,900 Brechen Haupt. 883 00:43:22,900 --> 00:43:25,950 884 00:43:25,950 --> 00:43:28,130 Und was kann ich tun? 885 00:43:28,130 --> 00:43:29,180 Carlos? 886 00:43:29,180 --> 00:43:31,060 Führen. 887 00:43:31,060 --> 00:43:32,250 OK. 888 00:43:32,250 --> 00:43:34,160 Wählen wir eine Option. 889 00:43:34,160 --> 00:43:36,330 Und was bedeutet N tun? 890 00:43:36,330 --> 00:43:38,480 Weiter. 891 00:43:38,480 --> 00:43:38,950 Ja. 892 00:43:38,950 --> 00:43:39,740 >> ZIELGRUPPE: Hast du nicht erwähnen - 893 00:43:39,740 --> 00:43:45,230 hast du nicht gesagt, dass der Kopf, es war zu Beginn auf null initialisiert. 894 00:43:45,230 --> 00:43:47,140 Aber ich dachte, Sie sagten, das war OK. 895 00:43:47,140 --> 00:43:50,040 896 00:43:50,040 --> 00:43:52,640 >> JASON HIRSCHHORN: Lass uns gehen - lassen Sie uns in GDB, und dann werden wir wieder zurück. 897 00:43:52,640 --> 00:43:54,910 Aber es klingt wie Sie bereits einige Ideen, was los ist. 898 00:43:54,910 --> 00:43:58,340 Deshalb wollen wir etwas einfügen. 899 00:43:58,340 --> 00:43:59,390 OK. 900 00:43:59,390 --> 00:44:00,150 Wir haben einfügen. 901 00:44:00,150 --> 00:44:00,770 Bitte geben Sie eine int. 902 00:44:00,770 --> 00:44:01,990 Wir werden drei einfügen. 903 00:44:01,990 --> 00:44:03,000 Und dann bin ich auf dieser Linie. 904 00:44:03,000 --> 00:44:07,030 Wie gehe ich mit dem Debuggen beginnen der Einsatz bekannte Funktion? 905 00:44:07,030 --> 00:44:08,280 Ach du meine Güte. 906 00:44:08,280 --> 00:44:10,990 907 00:44:10,990 --> 00:44:12,240 Das ist eine Menge. 908 00:44:12,240 --> 00:44:14,372 909 00:44:14,372 --> 00:44:16,445 Ist das ausgeflippt viel? 910 00:44:16,445 --> 00:44:19,696 911 00:44:19,696 --> 00:44:21,680 >> ZIELGRUPPE: Oh, es starb. 912 00:44:21,680 --> 00:44:22,930 >> JASON HIRSCHHORN: Ich habe zog es heraus. 913 00:44:22,930 --> 00:44:27,364 914 00:44:27,364 --> 00:44:28,310 OK. 915 00:44:28,310 --> 00:44:29,560 >> ZIELGRUPPE: Vielleicht ist es die andere Ende des Drahtes ist. 916 00:44:29,560 --> 00:44:37,000 917 00:44:37,000 --> 00:44:39,470 >> JASON HIRSCHHORN: Wow. 918 00:44:39,470 --> 00:44:42,330 Also unter dem Strich - 919 00:44:42,330 --> 00:44:43,470 was hast du gesagt? 920 00:44:43,470 --> 00:44:46,040 >> ZIELGRUPPE: Ich sagte, die Ironie der technischen Schwierigkeiten in dieser Klasse. 921 00:44:46,040 --> 00:44:46,410 >> JASON HIRSCHHORN: Ich weiß. 922 00:44:46,410 --> 00:44:48,660 Wenn ich nur die Kontrolle über diesen Teil. 923 00:44:48,660 --> 00:44:49,910 [Unverständlich] 924 00:44:49,910 --> 00:44:54,430 925 00:44:54,430 --> 00:44:55,400 Das klingt großartig. 926 00:44:55,400 --> 00:44:58,680 Warum gehst du nicht anfangen, über Jungs das, was wir falsch gemacht haben könnte, 927 00:44:58,680 --> 00:45:01,140 und wir werden wieder in 90 Sekunden sein. 928 00:45:01,140 --> 00:46:18,160 929 00:46:18,160 --> 00:46:23,010 >> Avica, werde ich Sie fragen, wie es weiter gehen innerhalb insert_node es zu debuggen. 930 00:46:23,010 --> 00:46:28,940 931 00:46:28,940 --> 00:46:31,460 Also das ist, wo wir uns das letzte aufgehört hat. 932 00:46:31,460 --> 00:46:35,110 Wie kann ich in insert_node gehen, Avica, zu prüfen, was ist los? 933 00:46:35,110 --> 00:46:36,360 Welche GDB-Befehl? 934 00:46:36,360 --> 00:46:41,050 935 00:46:41,050 --> 00:46:42,390 Pause würde mich nicht im Inneren. 936 00:46:42,390 --> 00:46:46,200 937 00:46:46,200 --> 00:46:47,130 Hat Marquise wissen? 938 00:46:47,130 --> 00:46:48,240 >> PUBLIKUM: Was? 939 00:46:48,240 --> 00:46:51,780 >> JASON HIRSCHHORN: Was GDB Befehl Ich nutzen, um innerhalb dieser Funktion gehen? 940 00:46:51,780 --> 00:46:52,070 >> ZIELGRUPPE: Step? 941 00:46:52,070 --> 00:46:55,140 >> JASON HIRSCHHORN: über Schritt S. Das nimmt mich hinein. 942 00:46:55,140 --> 00:46:55,476 OK. 943 00:46:55,476 --> 00:46:58,040 New_node mallocing etwas Platz. 944 00:46:58,040 --> 00:46:59,120 Das alles sieht aus wie sein Gehen. 945 00:46:59,120 --> 00:47:00,370 Betrachten wir new_node. 946 00:47:00,370 --> 00:47:03,270 947 00:47:03,270 --> 00:47:05,410 Es habe einige Speicheradresse. 948 00:47:05,410 --> 00:47:07,440 Lassen Sie uns - 949 00:47:07,440 --> 00:47:08,500 das ist alles richtig. 950 00:47:08,500 --> 00:47:12,220 Also alles scheint hier werden ordnungsgemäß. 951 00:47:12,220 --> 00:47:14,530 >> PUBLIKUM: Was ist der Unterschied zwischen P und Display? 952 00:47:14,530 --> 00:47:16,160 >> JASON HIRSCHHORN: P steht für den Druck. 953 00:47:16,160 --> 00:47:19,310 Und so Sie fragen, was ist der Unterschied zwischen das und das? 954 00:47:19,310 --> 00:47:22,330 In diesem Fall nichts. 955 00:47:22,330 --> 00:47:26,960 Aber im Allgemeinen gibt es einige Unterschiede. 956 00:47:26,960 --> 00:47:28,220 Und Sie sollten in der GDB-Handbuch nachschlagen. 957 00:47:28,220 --> 00:47:29,560 Aber in diesem Fall nichts. 958 00:47:29,560 --> 00:47:31,460 Wir neigen dazu, drucken zu können, obwohl, weil wir nicht viel mehr tun müssen, als 959 00:47:31,460 --> 00:47:33,960 drucken Sie einen einzelnen Wert. 960 00:47:33,960 --> 00:47:34,640 >> OK. 961 00:47:34,640 --> 00:47:40,300 So sind wir auf der Linie 80 von unseren Code, Einstellung Knoten * curr gleich Liste. 962 00:47:40,300 --> 00:47:42,500 Lassen Sie uns ausdrucken akt. 963 00:47:42,500 --> 00:47:45,260 964 00:47:45,260 --> 00:47:46,840 Sie ist gleich-Liste. 965 00:47:46,840 --> 00:47:48,850 Süße. 966 00:47:48,850 --> 00:47:49,340 Warten. 967 00:47:49,340 --> 00:47:50,590 Es ist gleich etwas. 968 00:47:50,590 --> 00:47:53,680 969 00:47:53,680 --> 00:47:56,190 Das scheint nicht richtig. 970 00:47:56,190 --> 00:47:56,840 Dort gehen wir. 971 00:47:56,840 --> 00:47:59,470 Es ist, weil in GDB, rechts, wenn es ist die Linie, die Sie an ihm sind 972 00:47:59,470 --> 00:48:00,330 noch nicht ausgeführt. 973 00:48:00,330 --> 00:48:03,100 Sie wollen also tatsächlich eingeben müssen neben die Linie ausführen 974 00:48:03,100 --> 00:48:05,230 bevor man seine Ergebnisse. 975 00:48:05,230 --> 00:48:06,680 So, hier sind wir. 976 00:48:06,680 --> 00:48:09,490 Wir haben gerade diese Zeile ausgeführt, vorherige gleich null. 977 00:48:09,490 --> 00:48:13,590 Also noch einmal, wenn wir drucken früheren wir werden nichts sehen seltsam. 978 00:48:13,590 --> 00:48:18,680 Aber wenn wir tatsächlich auszuführen, dass Linie, dann werden wir sehen, 979 00:48:18,680 --> 00:48:20,380 dass diese Linie gearbeitet. 980 00:48:20,380 --> 00:48:21,060 >> So haben wir akt. 981 00:48:21,060 --> 00:48:23,180 Die sind beide gut. 982 00:48:23,180 --> 00:48:24,010 Right? 983 00:48:24,010 --> 00:48:28,130 Jetzt werden wir auf dieser Linie sind hier richtig. 984 00:48:28,130 --> 00:48:29,310 Während curr nicht gleich null. 985 00:48:29,310 --> 00:48:31,110 Nun, was macht curr gleich? 986 00:48:31,110 --> 00:48:32,450 Wir haben gerade sah es null erreicht. 987 00:48:32,450 --> 00:48:33,210 Wir druckte es aus. 988 00:48:33,210 --> 00:48:35,110 Ich werde es wieder heraus zu drucken. 989 00:48:35,110 --> 00:48:36,720 So ist die while-Schleife werde ausführen? 990 00:48:36,720 --> 00:48:37,270 >> ZIELGRUPPE: Nein 991 00:48:37,270 --> 00:48:39,790 >> JASON HIRSCHHORN: Also, wenn ich getippt Zeile sehen Sie, sprangen wir den ganzen Weg 992 00:48:39,790 --> 00:48:41,390 bis auf den Boden, return false. 993 00:48:41,390 --> 00:48:44,520 Und dann werden wir return false und gehen Sie zurück zu unserem Programm und 994 00:48:44,520 --> 00:48:48,020 schließlich ausdrucken, wie wir sahen, das Insert war nicht erfolgreich. 995 00:48:48,020 --> 00:48:51,010 Also, jemand irgendwelche Ideen, was haben wir tun müssen, um dieses Problem beheben? 996 00:48:51,010 --> 00:48:54,200 997 00:48:54,200 --> 00:48:57,570 Ich werde warten, bis ich sehe, ein paar Hände nach oben. 998 00:48:57,570 --> 00:48:58,830 Wir haben nicht diese auszuführen. 999 00:48:58,830 --> 00:49:01,660 Denken Sie daran, dies war der erste was wir taten. 1000 00:49:01,660 --> 00:49:02,430 Ich werde nicht um ein paar zu tun. 1001 00:49:02,430 --> 00:49:03,670 Ich werde ein paar zu tun. 1002 00:49:03,670 --> 00:49:04,830 Weil ein Paar bedeutet zwei. 1003 00:49:04,830 --> 00:49:07,620 Ich werde für mehr als zwei warten. 1004 00:49:07,620 --> 00:49:10,690 >> Die erste Insertion, curr, Standardmäßig ist gleich null. 1005 00:49:10,690 --> 00:49:14,050 Und nur diese Schleife führt wenn curr ist nicht null. 1006 00:49:14,050 --> 00:49:18,740 Also, wie kann ich um dieses? 1007 00:49:18,740 --> 00:49:19,990 Ich sehe drei Händen. 1008 00:49:19,990 --> 00:49:28,490 1009 00:49:28,490 --> 00:49:29,780 Ich werde für mehr als drei warten. 1010 00:49:29,780 --> 00:49:33,460 1011 00:49:33,460 --> 00:49:35,940 Marcus, was denken Sie? 1012 00:49:35,940 --> 00:49:37,730 >> ZIELGRUPPE: Nun, wenn Sie es brauchen mehr als einmal auszuführen, müssen Sie nur 1013 00:49:37,730 --> 00:49:39,948 ändern Sie es in einer do-while-Schleife. 1014 00:49:39,948 --> 00:49:41,250 >> JASON HIRSCHHORN: OK. 1015 00:49:41,250 --> 00:49:44,240 Will, dass unser Problem zu lösen, wenn? 1016 00:49:44,240 --> 00:49:47,750 >> ZIELGRUPPE: In diesem Fall nicht, weil der die Tatsache, dass die Liste leer ist. 1017 00:49:47,750 --> 00:49:52,150 Also dann haben Sie wahrscheinlich nur brauchen, um hinzuzufügen eine Erklärung, dass, wenn die Schleife beendet 1018 00:49:52,150 --> 00:49:55,312 dann müssen Sie am Ende der sein die Liste, an welcher Stelle Sie 1019 00:49:55,312 --> 00:49:56,562 kann nur einzuschieben. 1020 00:49:56,562 --> 00:49:58,920 1021 00:49:58,920 --> 00:49:59,680 >> JASON HIRSCHHORN: Ich mag diese. 1022 00:49:59,680 --> 00:50:00,500 Das macht Sinn. 1023 00:50:00,500 --> 00:50:03,390 Wenn die Schleife beendet - 1024 00:50:03,390 --> 00:50:04,800 denn es wird hier false zurück. 1025 00:50:04,800 --> 00:50:08,220 Also, wenn die Schleife beendet, dann sind wir bei das Ende der Liste, oder vielleicht die 1026 00:50:08,220 --> 00:50:10,690 Beginn einer Liste, wenn es nichts in es, was das gleiche wie das Ende. 1027 00:50:10,690 --> 00:50:12,770 So, jetzt einfügen möchten wir hier etwas. 1028 00:50:12,770 --> 00:50:17,380 Und wie funktioniert der Code aussehen, Marcus? 1029 00:50:17,380 --> 00:50:21,600 >> ZIELGRUPPE: Wenn Sie bereits den Knoten bekam malloced, die Sie gerade sagen konnte 1030 00:50:21,600 --> 00:50:25,400 new_node-> ist gleich null, weil neben sie muss am Ende sein. 1031 00:50:25,400 --> 00:50:27,510 Oder new_node-> next gleich null. 1032 00:50:27,510 --> 00:50:27,765 >> JASON HIRSCHHORN: OK. 1033 00:50:27,765 --> 00:50:28,190 Entschuldigung. 1034 00:50:28,190 --> 00:50:35,760 New_node-> next gleich null denn wir sind am Ende. 1035 00:50:35,760 --> 00:50:36,460 Das bedeutet nicht, es in. 1036 00:50:36,460 --> 00:50:37,710 Wie setzen wir es in der Liste? 1037 00:50:37,710 --> 00:50:46,130 1038 00:50:46,130 --> 00:50:46,460 Richtig. 1039 00:50:46,460 --> 00:50:47,750 Das ist nur er gleich. 1040 00:50:47,750 --> 00:50:50,940 Nein, wie tun wir eigentlich legen Sie sie in der Liste? 1041 00:50:50,940 --> 00:50:54,170 Was ist mit dem Zeige Ende der Liste? 1042 00:50:54,170 --> 00:50:56,090 >> ZIELGRUPPE: Head. 1043 00:50:56,090 --> 00:50:57,566 >> JASON HIRSCHHORN: Es tut uns leid? 1044 00:50:57,566 --> 00:50:59,440 >> ZIELGRUPPE: Kopf wird zeigen an das Ende der Liste. 1045 00:50:59,440 --> 00:51:01,480 >> JASON HIRSCHHORN: Wenn es nichts in die Liste wird der Kopf auf die Zeige 1046 00:51:01,480 --> 00:51:04,170 Ende der Liste. 1047 00:51:04,170 --> 00:51:06,920 Damit werde für die Arbeit ersten Anzeige. 1048 00:51:06,920 --> 00:51:09,810 Was ist, wenn es ein paar Dinge in der Liste? 1049 00:51:09,810 --> 00:51:12,470 Als wir wollen nicht gesetzt Kopf gleich new_node. 1050 00:51:12,470 --> 00:51:13,790 Was wollen wir dort? 1051 00:51:13,790 --> 00:51:15,610 Ja? 1052 00:51:15,610 --> 00:51:16,860 Wahrscheinlich vorherigen. 1053 00:51:16,860 --> 00:51:23,560 1054 00:51:23,560 --> 00:51:24,810 Wird das funktionieren? 1055 00:51:24,810 --> 00:51:28,950 1056 00:51:28,950 --> 00:51:33,050 Daran erinnern, dass die bisherigen ist nur einen Zeiger zu einem Knoten. 1057 00:51:33,050 --> 00:51:34,770 Und vorherige ist eine lokale Variable. 1058 00:51:34,770 --> 00:51:38,080 So wird diese Linie eine lokale Variable, vorherige gleich oder 1059 00:51:38,080 --> 00:51:39,380 , die auf diesem neuen Knoten. 1060 00:51:39,380 --> 00:51:41,500 Das wird nicht tatsächlich legte es in unserer Liste, wenn. 1061 00:51:41,500 --> 00:51:44,330 Wie setzen wir es in unserer Liste? 1062 00:51:44,330 --> 00:51:45,620 Akchar? 1063 00:51:45,620 --> 00:51:46,870 >> ZIELGRUPPE: Ich glaube, Sie tun Strom-> next. 1064 00:51:46,870 --> 00:51:50,186 1065 00:51:50,186 --> 00:51:52,550 >> JASON HIRSCHHORN: OK. 1066 00:51:52,550 --> 00:51:54,010 curr-> next. 1067 00:51:54,010 --> 00:51:58,768 Also noch einmal, der einzige Grund, warum wir unten sind hier ist, was macht Strom gleich? 1068 00:51:58,768 --> 00:51:59,760 >> ZIELGRUPPE: Gleich null. 1069 00:51:59,760 --> 00:52:01,790 >> JASON HIRSCHHORN: Und so was passiert, wenn wir tun, null-> next? 1070 00:52:01,790 --> 00:52:02,810 Was wir jetzt bekommen? 1071 00:52:02,810 --> 00:52:04,060 Wir werden einen Segmentation Fault zu bekommen. 1072 00:52:04,060 --> 00:52:06,600 1073 00:52:06,600 --> 00:52:08,880 >> ZIELGRUPPE: Do curr gleich null. 1074 00:52:08,880 --> 00:52:10,760 >> JASON HIRSCHHORN: Das ist die gleiche Sache wie zurück, obwohl, weil es 1075 00:52:10,760 --> 00:52:12,820 eine lokale Variable wir die Einstellung gleich diesem neuen Knoten. 1076 00:52:12,820 --> 00:52:16,680 1077 00:52:16,680 --> 00:52:20,920 Gehen wir zurück zu unserem Bild Einsetzen etwas. 1078 00:52:20,920 --> 00:52:25,500 Sagen wir, wir sind am Ende einfügen der Liste, so finden Sie hier. 1079 00:52:25,500 --> 00:52:30,010 Wir haben eine aktuelle Zeiger, ist zeigt auf null und einem vorherigen Punkt 1080 00:52:30,010 --> 00:52:32,800 das ist bis 8 zeigt. 1081 00:52:32,800 --> 00:52:35,330 So was brauchen wir, um zu aktualisieren, Avi? 1082 00:52:35,330 --> 00:52:36,680 >> ZIELGRUPPE: Zurück-> next? 1083 00:52:36,680 --> 00:52:41,980 >> JASON HIRSCHHORN: Zurück-> next ist das, was wir aktualisieren möchten, weil das 1084 00:52:41,980 --> 00:52:44,960 tatsächlich legen Sie sie an das Ende der Liste. 1085 00:52:44,960 --> 00:52:47,220 Wir haben immer noch ein Fehler, obwohl, dass wir gehen den Weg laufen. 1086 00:52:47,220 --> 00:52:50,090 Was ist das für Fehler? 1087 00:52:50,090 --> 00:52:50,790 Ja? 1088 00:52:50,790 --> 00:52:53,860 >> ZIELGRUPPE: Es wird zurückkehren falsch in diesem Fall? 1089 00:52:53,860 --> 00:52:56,380 >> JASON HIRSCHHORN: Oh, das ist werde return false. 1090 00:52:56,380 --> 00:52:57,430 Aber es gibt einen anderen Bug. 1091 00:52:57,430 --> 00:52:58,930 Also werden wir brauchen, um in return true setzen. 1092 00:52:58,930 --> 00:53:01,370 >> ZIELGRUPPE: Hat vorherigen noch gleich null an der Spitze der Liste? 1093 00:53:01,370 --> 00:53:03,645 >> JASON HIRSCHHORN: Also vorherigen Stand gleich null am Anfang. 1094 00:53:03,645 --> 00:53:07,480 1095 00:53:07,480 --> 00:53:10,440 Wie können wir also über das zu bekommen? 1096 00:53:10,440 --> 00:53:10,950 Ja? 1097 00:53:10,950 --> 00:53:15,280 >> ZIELGRUPPE: Ich glaube, Sie tun können, einen Scheck bevor die while-Schleife, um zu sehen, ob es 1098 00:53:15,280 --> 00:53:16,610 eine leere Liste. 1099 00:53:16,610 --> 00:53:17,000 >> JASON HIRSCHHORN: OK. 1100 00:53:17,000 --> 00:53:17,710 Also lassen Sie uns hier. 1101 00:53:17,710 --> 00:53:18,530 Eine Überprüfung durch. 1102 00:53:18,530 --> 00:53:19,380 Wenn - 1103 00:53:19,380 --> 00:53:20,770 >> ZIELGRUPPE: Also, wenn Kopf gleich ist gleich null. 1104 00:53:20,770 --> 00:53:24,300 1105 00:53:24,300 --> 00:53:26,320 >> JASON HIRSCHHORN: Wenn Kopf gleich ist gleich null - 1106 00:53:26,320 --> 00:53:27,790 das wird uns sagen, ob es eine leere Liste. 1107 00:53:27,790 --> 00:53:31,090 >> ZIELGRUPPE: Und dann haben Sie tun Kopf gleich neu. 1108 00:53:31,090 --> 00:53:34,740 >> JASON HIRSCHHORN: Kopf gleich new_node? 1109 00:53:34,740 --> 00:53:35,730 Und was müssen wir tun? 1110 00:53:35,730 --> 00:53:37,020 >> ZIELGRUPPE: Und dann true zurück. 1111 00:53:37,020 --> 00:53:37,535 >> JASON HIRSCHHORN: Nicht ganz. 1112 00:53:37,535 --> 00:53:38,785 Wir sind einen Schritt fehlt. 1113 00:53:38,785 --> 00:53:41,590 1114 00:53:41,590 --> 00:53:43,710 >> ZIELGRUPPE: New_node nächsten hat zu Punkt null. 1115 00:53:43,710 --> 00:53:44,570 >> JASON HIRSCHHORN: Genau, Alden. 1116 00:53:44,570 --> 00:53:46,600 Und dann können wir true zurück. 1117 00:53:46,600 --> 00:53:47,560 OK. 1118 00:53:47,560 --> 00:53:51,630 Aber es ist immer noch eine gute Idee, Dinge zu tun am Ende der Liste, oder? 1119 00:53:51,630 --> 00:53:51,950 Gut. 1120 00:53:51,950 --> 00:53:54,450 Wir könnten eigentlich noch zu bekommen an das Ende der Liste. 1121 00:53:54,450 --> 00:53:57,870 So ist dieser Code in Ordnung, wenn wir die bist Ende der Liste und es gibt einige 1122 00:53:57,870 --> 00:53:59,120 Dinge in der Liste? 1123 00:53:59,120 --> 00:54:01,830 1124 00:54:01,830 --> 00:54:02,040 Right? 1125 00:54:02,040 --> 00:54:03,540 Denn wir haben immer noch Marcus Idee. 1126 00:54:03,540 --> 00:54:06,870 Wir könnten diese Schleife zu verlassen, weil wir sind am Ende der Liste. 1127 00:54:06,870 --> 00:54:09,308 So wissen wir immer noch wollen, dass diese Code hier unten? 1128 00:54:09,308 --> 00:54:10,520 >> ZIELGRUPPE: Ja. 1129 00:54:10,520 --> 00:54:11,000 >> JASON HIRSCHHORN: Ja. 1130 00:54:11,000 --> 00:54:14,190 Und was brauchen wir, um dies zu ändern? 1131 00:54:14,190 --> 00:54:15,440 Wahr. 1132 00:54:15,440 --> 00:54:19,580 1133 00:54:19,580 --> 00:54:21,640 Klingt das gut an alle, so weit? 1134 00:54:21,640 --> 00:54:22,420 Jedes haben alle - 1135 00:54:22,420 --> 00:54:23,480 Avi, hast du etwas hinzufügen? 1136 00:54:23,480 --> 00:54:23,920 >> ZIELGRUPPE: Nein 1137 00:54:23,920 --> 00:54:25,276 >> JASON HIRSCHHORN: OK. 1138 00:54:25,276 --> 00:54:27,010 Also haben wir ein paar Änderungen vorgenommen. 1139 00:54:27,010 --> 00:54:29,540 Wir haben diese Prüfung, bevor wir ging für eine leere Liste. 1140 00:54:29,540 --> 00:54:31,790 Also haben wir uns um eine leere Liste genommen. 1141 00:54:31,790 --> 00:54:35,500 Und hier haben wir darauf geachtet Einfügen was am Ende der Liste. 1142 00:54:35,500 --> 00:54:38,930 So wie es scheint, dieser while-Schleife Nahme um Dinge dazwischen, 1143 00:54:38,930 --> 00:54:41,920 irgendwo in der Liste, wenn es sind die Dinge in der Liste. 1144 00:54:41,920 --> 00:54:42,280 >> OK. 1145 00:54:42,280 --> 00:54:44,310 Lassen Sie uns dieses Programm laufen wieder. 1146 00:54:44,310 --> 00:54:50,170 1147 00:54:50,170 --> 00:54:50,755 Nicht erfolgreich. 1148 00:54:50,755 --> 00:54:52,190 >> ZIELGRUPPE: Sie hat es nicht geschafft. 1149 00:54:52,190 --> 00:54:53,940 >> JASON HIRSCHHORN: Oh, Ich habe es nicht geschafft. 1150 00:54:53,940 --> 00:54:56,250 Guter Punkt, Michael. 1151 00:54:56,250 --> 00:54:57,500 Fügen wir ein Make verknüpft. 1152 00:54:57,500 --> 00:55:01,590 1153 00:55:01,590 --> 00:55:04,830 Linie 87 gibt es einen Fehler. 1154 00:55:04,830 --> 00:55:05,420 Linie 87. 1155 00:55:05,420 --> 00:55:06,600 Alden, war dies die Linie, die Sie mir gegeben haben. 1156 00:55:06,600 --> 00:55:08,962 Was ist los? 1157 00:55:08,962 --> 00:55:10,710 >> ZIELGRUPPE: Es muss auf null gesetzt. 1158 00:55:10,710 --> 00:55:11,000 >> JASON HIRSCHHORN: Excellent. 1159 00:55:11,000 --> 00:55:11,630 Genau richtig. 1160 00:55:11,630 --> 00:55:13,290 Es sollte null sein. 1161 00:55:13,290 --> 00:55:15,210 Lassen Sie uns wieder. 1162 00:55:15,210 --> 00:55:17,220 Übersetzen. 1163 00:55:17,220 --> 00:55:17,890 OK. 1164 00:55:17,890 --> 00:55:19,400 Lassen Sie uns legen Sie drei. 1165 00:55:19,400 --> 00:55:20,570 Der Einsatz war erfolgreich. 1166 00:55:20,570 --> 00:55:21,660 Lassen Sie ausdrucken. 1167 00:55:21,660 --> 00:55:23,590 Oh, wenn wir überprüfen konnten. 1168 00:55:23,590 --> 00:55:25,500 Aber wir nicht getan haben, die drucken noch Funktion. 1169 00:55:25,500 --> 00:55:27,840 Lassen Sie uns noch etwas anderes geben. 1170 00:55:27,840 --> 00:55:29,090 Was sollen wir geben? 1171 00:55:29,090 --> 00:55:31,120 1172 00:55:31,120 --> 00:55:31,940 >> ZIELGRUPPE: Sieben. 1173 00:55:31,940 --> 00:55:33,340 >> JASON HIRSCHHORN: Sieben? 1174 00:55:33,340 --> 00:55:34,590 >> ZIELGRUPPE: Ja. 1175 00:55:34,590 --> 00:55:38,680 1176 00:55:38,680 --> 00:55:39,780 >> JASON HIRSCHHORN: Wir haben ein Segment Schuld. 1177 00:55:39,780 --> 00:55:43,760 Also haben wir, aber wir deutlich kann nicht zwei. 1178 00:55:43,760 --> 00:55:45,690 Es ist 05.07 Uhr. 1179 00:55:45,690 --> 00:55:48,370 So konnten wir dieses debuggen für drei Minuten. 1180 00:55:48,370 --> 00:55:51,240 Aber ich werde uns hier verlassen und fahren Sie mit Hash-Tabellen. 1181 00:55:51,240 --> 00:55:54,290 Aber nochmals, die Antworten zu diesem Code Ich werde es dir ein bisschen E-Mail. 1182 00:55:54,290 --> 00:55:55,440 Wir sind sehr nahe daran. 1183 00:55:55,440 --> 00:55:58,300 Ich sehr empfehlen Ihnen, herauszufinden, was ist denn hier los und zu beheben. 1184 00:55:58,300 --> 00:56:02,400 Also werde ich Sie diesen Code als E-Mail gut plus die Lösung - 1185 00:56:02,400 --> 00:56:03,670 wahrscheinlich die Lösung später. 1186 00:56:03,670 --> 00:56:05,110 Zuerst dieser Code. 1187 00:56:05,110 --> 00:56:08,290 >> Das andere, was ich will, bevor wir tun Ziel ist, wir haben nichts befreit. 1188 00:56:08,290 --> 00:56:10,370 So möchte ich Ihnen zeigen, was valgrind aussieht. 1189 00:56:10,370 --> 00:56:14,310 Wenn wir laufen valgrind Grenzen auf dem Programm. / verknüpft. 1190 00:56:14,310 --> 00:56:22,540 Auch nach dieser Folie wir valgrind sollte mit irgendeiner Art von laufen 1191 00:56:22,540 --> 00:56:26,410 Möglichkeit, in diesem Fall - Dichtheitsprüfung = voll. 1192 00:56:26,410 --> 00:56:27,660 Also schreiben wir valgrind - Dichtheitsprüfung = voll. 1193 00:56:27,660 --> 00:56:31,910 1194 00:56:31,910 --> 00:56:35,080 So wird dies valgrind laufen auf dem Programm. 1195 00:56:35,080 --> 00:56:37,000 Und jetzt das Programm tatsächlich ausgeführt wird. 1196 00:56:37,000 --> 00:56:40,190 So werden wir es wie laufen vor, legte etwas in. 1197 00:56:40,190 --> 00:56:40,830 Ich werde in drei setzen. 1198 00:56:40,830 --> 00:56:41,790 Das funktioniert. 1199 00:56:41,790 --> 00:56:43,202 Ich werde nicht versuchen, an etwas zu setzen sonst, weil wir zu gehen 1200 00:56:43,202 --> 00:56:44,710 einen Segmentation in diesem Fall falsch. 1201 00:56:44,710 --> 00:56:46,700 Also ich werde einfach zu beenden. 1202 00:56:46,700 --> 00:56:50,160 >> Und jetzt bist du hier unten zu sehen Leck-und Heap-Zusammenfassung. 1203 00:56:50,160 --> 00:56:52,310 Das sind die guten Dinge, die Sie überprüfen möchten. 1204 00:56:52,310 --> 00:56:56,780 So die Zusammenfassung Haufen - sie sagt, im Einsatz an der Ausfahrt - acht Bytes in einem Block. 1205 00:56:56,780 --> 00:56:58,370 Daß ein Block ist Knoten wir malloced. 1206 00:56:58,370 --> 00:57:02,230 Michael, Sie haben gesagt, bevor ein Knoten acht Bisse, weil es die ganze Zahl hat 1207 00:57:02,230 --> 00:57:02,680 und der Zeiger. 1208 00:57:02,680 --> 00:57:04,550 Also das ist unser Knoten. 1209 00:57:04,550 --> 00:57:08,170 Und dann heißt es wir verwendet malloc sieben Mal und wir befreit 1210 00:57:08,170 --> 00:57:08,940 etwas sechsmal. 1211 00:57:08,940 --> 00:57:13,680 Aber wir haben nie als frei bezeichnet, so habe ich keine Ahnung, was das spricht. 1212 00:57:13,680 --> 00:57:18,490 >> Aber es genügt zu sagen, dass, wenn Sie Ihre Programm läuft, malloc aufgerufen wird 1213 00:57:18,490 --> 00:57:20,330 in einigen anderen Orten, die wir brauchen Sie nicht zu befürchten. 1214 00:57:20,330 --> 00:57:22,460 So wurde malloc wahrscheinlich genannt an einigen Stellen. 1215 00:57:22,460 --> 00:57:24,480 Wir brauchen keine Sorgen zu machen, wo. 1216 00:57:24,480 --> 00:57:26,240 Aber das ist uns wirklich. 1217 00:57:26,240 --> 00:57:27,380 Diese erste Linie sind wir. 1218 00:57:27,380 --> 00:57:28,320 Wir verließen diesen Block. 1219 00:57:28,320 --> 00:57:30,330 Und Sie sehen, dass hier kann im Leck Zusammenfassung. 1220 00:57:30,330 --> 00:57:31,950 Noch erreichbar - 1221 00:57:31,950 --> 00:57:32,930 acht Bytes in einem Block. 1222 00:57:32,930 --> 00:57:34,100 Das bedeutet, dass der Speicher - 1223 00:57:34,100 --> 00:57:35,730 wir, dass der Speicher durchgesickert. 1224 00:57:35,730 --> 00:57:37,570 Definitiv verloren - 1225 00:57:37,570 --> 00:57:38,770 etwas für immer verloren. 1226 00:57:38,770 --> 00:57:40,590 Im Allgemeinen werden Sie nicht sehen, nichts da. 1227 00:57:40,590 --> 00:57:44,780 Noch ist in der Regel erreichbar, wo Sie werden Dinge sehen, wo Sie wollen 1228 00:57:44,780 --> 00:57:48,900 zu schauen, um zu sehen, welche Code sollten Sie befreit haben, aber Sie vergessen haben, zu befreien. 1229 00:57:48,900 --> 00:57:53,170 >> Und dann, wenn dies nicht der Fall ist, wenn wir das alles kostenlos, 1230 00:57:53,170 --> 00:57:54,360 wir können das überprüfen. 1231 00:57:54,360 --> 00:57:57,330 Lassen Sie das Programm laufen nur nicht setzen in nichts. 1232 00:57:57,330 --> 00:57:59,800 Sie werden hier unten im Einsatz an der Ausfahrt sehen - 1233 00:57:59,800 --> 00:58:01,310 Null-Bytes in Null-Blöcke. 1234 00:58:01,310 --> 00:58:06,310 Das heißt, wir hatten nichts mehr Wenn dieses Programm verlassen. 1235 00:58:06,310 --> 00:58:12,090 Also, bevor Sie in pset6, führen valgrind und stellen Sie sicher, dass Sie nicht haben, 1236 00:58:12,090 --> 00:58:15,310 keine Speicherlecks in Ihrem Programm. 1237 00:58:15,310 --> 00:58:17,910 Wenn Sie alle Fragen mit valgrind haben, fühlen Sie sich frei zu erreichen. 1238 00:58:17,910 --> 00:58:18,700 Aber das ist, wie Sie es verwenden. 1239 00:58:18,700 --> 00:58:20,890 Sehr einfach - sehen, wenn Sie haben im Einsatz bei der Ausfahrt - 1240 00:58:20,890 --> 00:58:22,270 alle Bytes in allen Blöcken. 1241 00:58:22,270 --> 00:58:27,890 1242 00:58:27,890 --> 00:58:29,580 >> So waren wir auf Einsatz Knoten arbeiten. 1243 00:58:29,580 --> 00:58:33,840 Ich hatte zwei andere Funktionen hier - drucken Knoten und Knoten frei. 1244 00:58:33,840 --> 00:58:37,780 Auch diese Funktionen sind gut sein, damit Sie üben 1245 00:58:37,780 --> 00:58:40,990 denn sie werden Ihnen nicht nur helfen, diese Probe Übungen, aber auch 1246 00:58:40,990 --> 00:58:42,180 auf das Problem eingestellt. 1247 00:58:42,180 --> 00:58:44,230 Sie bilden auf ziemlich genau die Dinge Sie gehen in die zu tun zu haben sind 1248 00:58:44,230 --> 00:58:45,010 Problem eingestellt. 1249 00:58:45,010 --> 00:58:47,640 Aber ich möchte sicherstellen, dass berühren wir auf alles. 1250 00:58:47,640 --> 00:58:50,400 Und Hash-Tabellen sind auch entscheidend für was wir in diesem Abschnitt tun 1251 00:58:50,400 --> 00:58:51,980 Woche - oder in dem Problem-Set. 1252 00:58:51,980 --> 00:58:55,200 >> So werden wir, um den Abschnitt zu beenden Gespräch über Hash-Tabellen. 1253 00:58:55,200 --> 00:58:58,140 Wenn Sie bemerken, ich machte ein wenig Hash-Tabelle. 1254 00:58:58,140 --> 00:59:00,020 Das ist nicht das, was wir reden über, jedoch. 1255 00:59:00,020 --> 00:59:03,540 Wir freuen uns über einen anderen sprechen Art von Hash-Tabellen. 1256 00:59:03,540 --> 00:59:07,300 Und im Kern in einer Hashtabelle ist nichts weiter als ein 1257 00:59:07,300 --> 00:59:08,860 Array plus eine Hash-Funktion. 1258 00:59:08,860 --> 00:59:11,150 Wir werden für ein bisschen einfach nur reden sicherzustellen, dass jeder versteht, was für ein 1259 00:59:11,150 --> 00:59:12,110 Hash-Funktion ist. 1260 00:59:12,110 --> 00:59:15,420 Und ich sage Ihnen jetzt, dass es nicht mehr als zwei Dinge - 1261 00:59:15,420 --> 00:59:18,590 ein Array und eine Hash-Funktion. 1262 00:59:18,590 --> 00:59:20,716 Und hier sind die Schritte durch die diese betreibt. 1263 00:59:20,716 --> 00:59:31,560 1264 00:59:31,560 --> 00:59:32,810 >> Da ist unser Angebot. 1265 00:59:32,810 --> 00:59:38,460 1266 00:59:38,460 --> 00:59:39,460 Es ist unsere Aufgabe. 1267 00:59:39,460 --> 00:59:43,180 Insbesondere Hash-Funktionen müssen tun, ein paar Dinge mit diesem. 1268 00:59:43,180 --> 00:59:45,040 Ich werde speziell sprechen über dieses Problem eingestellt. 1269 00:59:45,040 --> 00:59:46,450 Es ist wahrscheinlich zu nehmen in einer Zeichenkette. 1270 00:59:46,450 --> 00:59:50,570 1271 00:59:50,570 --> 00:59:51,770 Und was es geht zurück? 1272 00:59:51,770 --> 00:59:52,640 Welche Datentyp? 1273 00:59:52,640 --> 00:59:54,260 Alden? 1274 00:59:54,260 --> 00:59:55,760 Ihre Hash-Funktion zurück? 1275 00:59:55,760 --> 00:59:58,760 Eine ganze Zahl. 1276 00:59:58,760 --> 01:00:01,700 Also das ist, was der Hash Tabelle besteht aus - 1277 01:00:01,700 --> 01:00:05,430 eine Tabelle, in der Form von Array und eine Hash-Funktion. 1278 01:00:05,430 --> 01:00:06,010 Wie funktioniert es? 1279 01:00:06,010 --> 01:00:07,300 Es arbeitet in drei Schritten. 1280 01:00:07,300 --> 01:00:08,740 Wir geben ihm einen Schlüssel. 1281 01:00:08,740 --> 01:00:11,470 In diesem Fall werden wir ihm einen String. 1282 01:00:11,470 --> 01:00:18,140 Wir nennen die Hash-Funktion pro Schritt ein auf den Schlüssel und wir bekommen einen Wert. 1283 01:00:18,140 --> 01:00:20,310 >> Genauer gesagt, werden wir sagen, wir bekommen eine ganze Zahl. 1284 01:00:20,310 --> 01:00:25,630 Die ganze Zahl ist, gibt es sehr spezielle Grenzen, was die ganze Zahl sein kann. 1285 01:00:25,630 --> 01:00:28,880 In diesem Beispiel unsere Anordnung eine Größe von drei. 1286 01:00:28,880 --> 01:00:32,330 Also, welche Nummern können, dass ganze Zahl sein. 1287 01:00:32,330 --> 01:00:35,970 Was ist der Bereich der gültigen Werte für dass ganze Zahl, die Rückkehr Typ dieser 1288 01:00:35,970 --> 01:00:37,220 Hash-Funktion? 1289 01:00:37,220 --> 01:00:40,440 1290 01:00:40,440 --> 01:00:42,110 Zero, eins und zwei. 1291 01:00:42,110 --> 01:00:46,060 Der Punkt, der die Hash-Funktion ist, herauszufinden, den Platz in der Reihe 1292 01:00:46,060 --> 01:00:47,790 wo unser Schlüssel geht. 1293 01:00:47,790 --> 01:00:51,290 Es gibt nur drei mögliche Orte hier - 1294 01:00:51,290 --> 01:00:52,130 null, eins oder zwei. 1295 01:00:52,130 --> 01:00:55,360 Also diese Funktion bessere Rendite null, eins oder zwei. 1296 01:00:55,360 --> 01:00:58,740 Einige gültig indice in diesem Array. 1297 01:00:58,740 --> 01:01:02,770 >> Und dann je nachdem, wo es zurückkehrt, Sie können es sehen, offenen Array 1298 01:01:02,770 --> 01:01:03,730 umklammern den Wert. 1299 01:01:03,730 --> 01:01:05,800 Das ist, wo wir den Schlüssel. 1300 01:01:05,800 --> 01:01:11,280 So werfen wir in den Kürbis, wir raus Null. 1301 01:01:11,280 --> 01:01:15,540 Bei Array Bügel 0, setzen wir Kürbis. 1302 01:01:15,540 --> 01:01:21,070 Wir werfen in Katzen, bekommen wir aus einem. 1303 01:01:21,070 --> 01:01:24,110 Wir haben eine Katze an. 1304 01:01:24,110 --> 01:01:25,480 Wir stellen in Spinne. 1305 01:01:25,480 --> 01:01:26,710 Wir steigen aus beiden. 1306 01:01:26,710 --> 01:01:30,200 Wir stellen Spinne in der Halterung zwei Array. 1307 01:01:30,200 --> 01:01:32,300 Es wäre so schön, wenn es funktionierte so. 1308 01:01:32,300 --> 01:01:35,570 Aber leider, wie wir sehen werden, es ist ein bisschen komplizierter. 1309 01:01:35,570 --> 01:01:37,570 >> Bevor wir dort ankommen, Fragen über diese Grund 1310 01:01:37,570 --> 01:01:38,820 Set-up von einer Hash-Tabelle? 1311 01:01:38,820 --> 01:01:49,050 1312 01:01:49,050 --> 01:01:51,940 Dies ist ein Bild von genau was wir zog auf dem Brett. 1313 01:01:51,940 --> 01:01:55,420 Da wir aber zog es auf dem Brett, ich werde mich nicht in sie weiter zu gehen. 1314 01:01:55,420 --> 01:02:00,430 Im Wesentlichen Tasten, der magische Black Box - oder in diesem Fall, blaugrün-Box - einer 1315 01:02:00,430 --> 01:02:02,410 Hash-Funktion stellt sie in Eimern. 1316 01:02:02,410 --> 01:02:04,690 Und in diesem Beispiel sind wir nicht setzen den Namen. 1317 01:02:04,690 --> 01:02:07,880 Wir setzen die zugehörige Telefon Anzahl von Namen in den Eimer. 1318 01:02:07,880 --> 01:02:10,430 Aber man konnte sehr gut nur setzen Sie den Namen in den Eimer. 1319 01:02:10,430 --> 01:02:12,950 >> Dies ist nur ein Bild von dem, was wir zeichneten auf dem Brett. 1320 01:02:12,950 --> 01:02:14,460 Wir haben potenzielle Fallstricke, wenn. 1321 01:02:14,460 --> 01:02:17,470 Und es gibt vor allem zwei gleitet, dass ich gehen will über. 1322 01:02:17,470 --> 01:02:20,230 Der erste ist zu eine Hash-Funktion. 1323 01:02:20,230 --> 01:02:22,620 Also stellte ich die Frage, was macht eine gute Hash-Funktion? 1324 01:02:22,620 --> 01:02:24,220 Ich gebe zwei Antworten. 1325 01:02:24,220 --> 01:02:26,630 Die erste ist, dass es deterministisch. 1326 01:02:26,630 --> 01:02:29,660 Im Rahmen von Hash-Funktionen, was bedeutet das? 1327 01:02:29,660 --> 01:02:37,840 1328 01:02:37,840 --> 01:02:39,282 Ja? 1329 01:02:39,282 --> 01:02:42,850 >> Zielgruppe: IT kann die finden Index in konstanter Zeit? 1330 01:02:42,850 --> 01:02:43,810 >> JASON HIRSCHHORN: Das ist nicht, was es bedeutet. 1331 01:02:43,810 --> 01:02:44,725 Aber das ist ein guter Tipp. 1332 01:02:44,725 --> 01:02:46,100 Jeder andere haben eine Vermutung zu dem, was das bedeutet? 1333 01:02:46,100 --> 01:02:47,780 Dass eine gute Hash-Funktion deterministisch ist? 1334 01:02:47,780 --> 01:02:48,280 Annie? 1335 01:02:48,280 --> 01:02:51,680 >> PUBLIKUM: Das kann nur ein Schlüssel abgebildet werden an einen Ort in der Hash-Tabelle. 1336 01:02:51,680 --> 01:02:53,070 >> JASON HIRSCHHORN: Das ist genau richtig. 1337 01:02:53,070 --> 01:02:57,430 Jedes Mal, wenn Sie in Kürbis setzen, es immer Null zurück. 1338 01:02:57,430 --> 01:03:01,660 Wenn Sie in Ihrem Kürbis und Hash setzen Rückgabewert ist Null, hat aber eine 1339 01:03:01,660 --> 01:03:06,060 Wahrscheinlichkeit der Rücksendung etwas sonst größer als Null - 1340 01:03:06,060 --> 01:03:09,280 so vielleicht kann man manchmal zurück oder zwei anderen Zeiten - 1341 01:03:09,280 --> 01:03:11,100 das ist keine gute Hash-Funktion. 1342 01:03:11,100 --> 01:03:11,800 Du bist genau richtig. 1343 01:03:11,800 --> 01:03:15,680 Ihre Hash-Funktion zurückgeben sollte die elbe exakte ganze Zahl, in diesem Fall für 1344 01:03:15,680 --> 01:03:17,780 exakt das gleiche Zeichenfolge. 1345 01:03:17,780 --> 01:03:22,210 >> Vielleicht ist es genau die gleiche Ganzzahl zurück für exakt das gleiche Zeichenfolge 1346 01:03:22,210 --> 01:03:24,430 unabhängig von der Kapitalisierung. 1347 01:03:24,430 --> 01:03:27,980 Aber in diesem Fall ist es immer noch deterministische, da mehrere Dinge 1348 01:03:27,980 --> 01:03:29,350 werden auf den gleichen Wert zugeordnet. 1349 01:03:29,350 --> 01:03:30,170 Das ist in Ordnung. 1350 01:03:30,170 --> 01:03:32,615 Solange es nur eine Ausgabe für einen gegebenen Eingang. 1351 01:03:32,615 --> 01:03:35,630 1352 01:03:35,630 --> 01:03:36,350 >> OK. 1353 01:03:36,350 --> 01:03:38,340 Die zweite Sache ist, dass es kehrt gültigen Indizes. 1354 01:03:38,340 --> 01:03:40,220 Wir erzogen, dass früher. 1355 01:03:40,220 --> 01:03:41,860 Dieser Hash-Funktion - 1356 01:03:41,860 --> 01:03:43,710 oh boy - 1357 01:03:43,710 --> 01:03:46,840 eine Hash-Funktion sollte zurück gültigen Indizes. 1358 01:03:46,840 --> 01:03:47,740 So sagen - 1359 01:03:47,740 --> 01:03:48,990 wir zurück zu diesem Beispiel gehen. 1360 01:03:48,990 --> 01:03:52,580 1361 01:03:52,580 --> 01:03:57,540 Meine Hash-Funktion zählt die Buchstaben im Wort. 1362 01:03:57,540 --> 01:03:58,380 Das ist der Hash-Funktion. 1363 01:03:58,380 --> 01:03:59,740 Und wieder, dass ganze Zahl ist. 1364 01:03:59,740 --> 01:04:04,280 Also wenn ich das Wort A, ist es gehen zu einem zurück. 1365 01:04:04,280 --> 01:04:06,900 Und es geht um ein Recht hier zu setzen. 1366 01:04:06,900 --> 01:04:09,430 Was ist, wenn ich in dem Wort Fledermaus? 1367 01:04:09,430 --> 01:04:11,310 Es geht um drei zurück. 1368 01:04:11,310 --> 01:04:12,560 Wo Fledermaus gehen? 1369 01:04:12,560 --> 01:04:18,730 1370 01:04:18,730 --> 01:04:19,750 >> Es passt nicht. 1371 01:04:19,750 --> 01:04:21,000 Aber es braucht, um irgendwohin zu gehen. 1372 01:04:21,000 --> 01:04:23,340 Das ist mein Hash-Tabelle nachdem alle, und alles muss irgendwo hin. 1373 01:04:23,340 --> 01:04:24,590 Also, wo soll Fledermaus gehen? 1374 01:04:24,590 --> 01:04:28,020 1375 01:04:28,020 --> 01:04:28,710 Irgendwelche Gedanken? 1376 01:04:28,710 --> 01:04:29,450 Errät? 1377 01:04:29,450 --> 01:04:30,280 Gute Vermutungen? 1378 01:04:30,280 --> 01:04:31,220 >> ZIELGRUPPE: Null. 1379 01:04:31,220 --> 01:04:32,120 >> JASON HIRSCHHORN: Warum Null? 1380 01:04:32,120 --> 01:04:35,990 >> ZIELGRUPPE: Weil drei Modulo drei Null ist? 1381 01:04:35,990 --> 01:04:38,620 >> JASON HIRSCHHORN: Drei Modulo drei Null ist. 1382 01:04:38,620 --> 01:04:40,810 Das ist eine große Vermutung, und das ist richtig. 1383 01:04:40,810 --> 01:04:43,870 Also in diesem Fall sollte es wahrscheinlich auf Null. 1384 01:04:43,870 --> 01:04:51,080 Also ein guter Weg, um sicherzustellen, dass dieser Hash Funktion nur gültig Indizes 1385 01:04:51,080 --> 01:04:54,580 die ihr von der Größe der Tabelle modulo. 1386 01:04:54,580 --> 01:04:57,360 Wenn Sie Modulo was immer das Rendite drei, du bist immer zu bekommen 1387 01:04:57,360 --> 01:05:00,930 etwas zwischen null, eins und zwei. 1388 01:05:00,930 --> 01:05:05,160 Und wenn das immer wieder sieben, und Sie immer von drei Modulo, sind Sie 1389 01:05:05,160 --> 01:05:06,030 immer gehen, um die gleiche Sache zu bekommen. 1390 01:05:06,030 --> 01:05:09,270 >> Also es ist immer noch determinis wenn Sie Modulo. 1391 01:05:09,270 --> 01:05:11,420 Aber das wird sicherstellen, dass Sie nie etwas zu bekommen - 1392 01:05:11,420 --> 01:05:12,940 eine ungültige Industrie. 1393 01:05:12,940 --> 01:05:16,840 Im Allgemeinen, dass Modulo passieren sollte in Ihrem Hash-Funktion. 1394 01:05:16,840 --> 01:05:18,240 So brauchen Sie nicht zu kümmern. 1395 01:05:18,240 --> 01:05:20,555 Sie können nur dafür sorgen, dass Dies ist eine gültige indice. 1396 01:05:20,555 --> 01:05:23,700 1397 01:05:23,700 --> 01:05:26,700 Haben Sie Fragen zu diesem Thema potenzielle Fallstrick? 1398 01:05:26,700 --> 01:05:36,590 1399 01:05:36,590 --> 01:05:39,060 >> OK. 1400 01:05:39,060 --> 01:05:40,290 Und wir gehen. 1401 01:05:40,290 --> 01:05:42,890 Nächste potenzielle Fallstrick, und das ist die große. 1402 01:05:42,890 --> 01:05:46,880 Was passiert, wenn zwei Tasten Karte auf den gleichen Wert? 1403 01:05:46,880 --> 01:05:49,350 So gibt es zwei Möglichkeiten, dies zu umgehen. 1404 01:05:49,350 --> 01:05:53,140 1405 01:05:53,140 --> 01:05:56,020 Die erste ist linear genannt Sondieren, was ich bin 1406 01:05:56,020 --> 01:05:57,300 nicht zu übergehen. 1407 01:05:57,300 --> 01:06:01,120 Aber Sie kennen sollten, wie das funktioniert und was das ist. 1408 01:06:01,120 --> 01:06:05,610 >> Die zweite werde ich gehen über denn das ist die eine, die viele 1409 01:06:05,610 --> 01:06:08,290 Menschen werden wahrscheinlich am Ende entscheiden in ihr Problem Satz zu verwenden. 1410 01:06:08,290 --> 01:06:09,820 Natürlich müssen Sie nicht auf. 1411 01:06:09,820 --> 01:06:15,280 Aber für das Problem gesetzt, viele Menschen neigen zu wählen, um eine Hash-Tabelle erstellen 1412 01:06:15,280 --> 01:06:17,950 mit separater Verkettung zu implementieren ihr Wörterbuch. 1413 01:06:17,950 --> 01:06:21,390 So werden wir über das, was es bedeutet, zu gehen um eine Hash-Tabelle mit erstellen 1414 01:06:21,390 --> 01:06:23,890 getrennte Verkettung. 1415 01:06:23,890 --> 01:06:26,260 >> Also habe ich in Kürbis. 1416 01:06:26,260 --> 01:06:29,560 Es gibt Null zurück. 1417 01:06:29,560 --> 01:06:31,410 Und ich habe hier Kürbis. 1418 01:06:31,410 --> 01:06:35,880 1419 01:06:35,880 --> 01:06:37,930 Dann habe ich in - 1420 01:06:37,930 --> 01:06:39,922 was ist eine andere Halloween-Themen-Sache? 1421 01:06:39,922 --> 01:06:42,200 >> ZIELGRUPPE: Süßigkeit. 1422 01:06:42,200 --> 01:06:42,770 >> JASON HIRSCHHORN: Süßigkeit! 1423 01:06:42,770 --> 01:06:43,910 Das ist ein großer. 1424 01:06:43,910 --> 01:06:47,760 Ich in Süßigkeiten und Bonbons setzen gibt mir auch Null. 1425 01:06:47,760 --> 01:06:49,350 Was kann ich tun? 1426 01:06:49,350 --> 01:06:51,940 Irgendwelche Ideen? 1427 01:06:51,940 --> 01:06:53,940 Weil Sie alle Art von wissen welche getrennte Verkettung ist. 1428 01:06:53,940 --> 01:06:55,190 Also irgendwelche Ideen, was zu tun? 1429 01:06:55,190 --> 01:06:58,170 1430 01:06:58,170 --> 01:06:59,110 Ja. 1431 01:06:59,110 --> 01:07:03,810 >> ZIELGRUPPE: Setzen Sie die Zeichenfolge tatsächlich in der Hash-Tabelle. 1432 01:07:03,810 --> 01:07:08,910 >> JASON HIRSCHHORN: Also wir gehen auf zeichnen die gute Idee hier. 1433 01:07:08,910 --> 01:07:09,340 OK. 1434 01:07:09,340 --> 01:07:12,290 >> ZIELGRUPPE: Haben Sie die Hash-Tabelle [Unverständlich] 1435 01:07:12,290 --> 01:07:16,640 der Zeiger, die auf die Punkte der Beginn einer Liste. 1436 01:07:16,640 --> 01:07:20,930 Und dann haben Kürbis der erste Wert sein in dieser verknüpften Liste und Süßigkeiten sein 1437 01:07:20,930 --> 01:07:22,800 der zweite Wert in dieser verketteten Liste. 1438 01:07:22,800 --> 01:07:23,420 >> JASON HIRSCHHORN: OK. 1439 01:07:23,420 --> 01:07:24,670 Marcus, das war hervorragend. 1440 01:07:24,670 --> 01:07:26,160 Ich werde das brechen. 1441 01:07:26,160 --> 01:07:28,890 Marcus sagt nicht schreiben Kürbis. 1442 01:07:28,890 --> 01:07:30,660 Das wäre schlecht. 1443 01:07:30,660 --> 01:07:33,640 Nicht setzen Süßigkeiten woanders. 1444 01:07:33,640 --> 01:07:35,390 Wir werden sie beide auf Null setzen. 1445 01:07:35,390 --> 01:07:37,770 Aber wir werden, zu beschäftigen setzen sie auf Null 1446 01:07:37,770 --> 01:07:39,395 Erstellen einer Liste auf Null. 1447 01:07:39,395 --> 01:07:42,430 Und wir werden um eine Liste zu erstellen alles, was auf null abgebildet. 1448 01:07:42,430 --> 01:07:47,960 Und der beste Weg lernten wir erstellen eine Liste, die wachsen und schrumpfen kann 1449 01:07:47,960 --> 01:07:49,840 dynamisch nicht im ein anderes Array. 1450 01:07:49,840 --> 01:07:51,510 So dass nicht ein mehrdimensionales Array. 1451 01:07:51,510 --> 01:07:54,080 Aber nur eine verkettete Liste. 1452 01:07:54,080 --> 01:07:55,330 >> Also, was er vorgeschlagen - 1453 01:07:55,330 --> 01:07:57,950 1454 01:07:57,950 --> 01:07:59,200 Ich werde einen neuen zu bekommen - 1455 01:07:59,200 --> 01:08:15,380 1456 01:08:15,380 --> 01:08:19,689 ist ein Array mit Zeigern, ein Array von Zeigern. 1457 01:08:19,689 --> 01:08:20,580 OK. 1458 01:08:20,580 --> 01:08:24,180 Jede Idee oder Tipp, was die Art dieser Zeiger sein sollte? 1459 01:08:24,180 --> 01:08:26,290 Marcus? 1460 01:08:26,290 --> 01:08:27,250 >> ZIELGRUPPE: Zeiger auf - 1461 01:08:27,250 --> 01:08:28,609 >> JASON HIRSCHHORN: Weil Sie sagte eine verkettete Liste, so - 1462 01:08:28,609 --> 01:08:29,520 >> ZIELGRUPPE: Knoten Zeiger? 1463 01:08:29,520 --> 01:08:30,670 >> JASON HIRSCHHORN: Knoten Zeiger. 1464 01:08:30,670 --> 01:08:32,830 Wenn die Dinge in unserem verknüpft Liste sind Knoten, dann sind sie 1465 01:08:32,830 --> 01:08:34,370 sollte Knoten Zeiger sein. 1466 01:08:34,370 --> 01:08:35,939 Und was tun sie anfangs gleich? 1467 01:08:35,939 --> 01:08:36,990 >> ZIELGRUPPE: Null. 1468 01:08:36,990 --> 01:08:38,240 >> JASON HIRSCHHORN: Null. 1469 01:08:38,240 --> 01:08:44,540 1470 01:08:44,540 --> 01:08:46,080 Es gibt also unsere leeren Sache. 1471 01:08:46,080 --> 01:08:47,170 Kürbis Null zurück. 1472 01:08:47,170 --> 01:08:48,569 Was machen wir? 1473 01:08:48,569 --> 01:08:49,609 Gehe ich durch sie? 1474 01:08:49,609 --> 01:08:50,810 Eigentlich hat mir schon Marcus. 1475 01:08:50,810 --> 01:08:52,439 Jemand anders gehen mir durch sie. 1476 01:08:52,439 --> 01:08:54,760 Was wir tun, wenn wir - 1477 01:08:54,760 --> 01:08:56,609 das sieht sehr ähnlich das, was wir gerade tun. 1478 01:08:56,609 --> 01:08:57,396 Avi. 1479 01:08:57,396 --> 01:08:59,090 >> ZIELGRUPPE: Ich werde eine Vermutung zu nehmen. 1480 01:08:59,090 --> 01:09:01,250 Also, wenn Sie Süßigkeiten zu bekommen. 1481 01:09:01,250 --> 01:09:01,640 >> JASON HIRSCHHORN: Ja. 1482 01:09:01,640 --> 01:09:03,120 Nun, wir haben Kürbis. 1483 01:09:03,120 --> 01:09:03,870 Lassen Sie uns unsere erste. 1484 01:09:03,870 --> 01:09:04,324 Wir bekamen Kürbis. 1485 01:09:04,324 --> 01:09:04,779 >> ZIELGRUPPE: OK. 1486 01:09:04,779 --> 01:09:05,880 Kürbis Null zurück. 1487 01:09:05,880 --> 01:09:08,770 So setzen Sie es in diesem. 1488 01:09:08,770 --> 01:09:10,810 Oder tatsächlich, sie setzen Sie in der verketteten Liste. 1489 01:09:10,810 --> 01:09:13,550 >> JASON HIRSCHHORN: Wie wollen wir es in der verketteten Liste? 1490 01:09:13,550 --> 01:09:15,479 >> ZIELGRUPPE: Oh, das eigentliche Syntax? 1491 01:09:15,479 --> 01:09:16,240 >> JASON HIRSCHHORN: Nur zu Fuß - 1492 01:09:16,240 --> 01:09:16,740 mehr sagen. 1493 01:09:16,740 --> 01:09:19,310 Was machen wir? 1494 01:09:19,310 --> 01:09:22,100 >> ZIELGRUPPE: Sie legen Sie einfach als den ersten Knoten. 1495 01:09:22,100 --> 01:09:22,675 >> JASON HIRSCHHORN: OK. 1496 01:09:22,675 --> 01:09:29,069 So haben wir unsere Knoten, Kürbis. 1497 01:09:29,069 --> 01:09:31,560 Und jetzt, wie kann ich es einfügen? 1498 01:09:31,560 --> 01:09:34,590 1499 01:09:34,590 --> 01:09:37,090 >> ZIELGRUPPE: Sie weisen es dem Zeiger. 1500 01:09:37,090 --> 01:09:37,970 >> JASON HIRSCHHORN: Welche Zeiger? 1501 01:09:37,970 --> 01:09:39,620 >> ZIELGRUPPE: Der Zeiger auf Null. 1502 01:09:39,620 --> 01:09:41,420 >> JASON HIRSCHHORN: Also, wo macht dieser Punkt? 1503 01:09:41,420 --> 01:09:42,810 >> ZIELGRUPPE: Um jetzt null. 1504 01:09:42,810 --> 01:09:43,529 >> JASON HIRSCHHORN: Nun, es zeigt auf null. 1505 01:09:43,529 --> 01:09:44,499 Aber ich setze in Kürbis. 1506 01:09:44,499 --> 01:09:46,053 Also, wo soll es zeigen? 1507 01:09:46,053 --> 01:09:46,880 >> ZIELGRUPPE: Um Kürbis. 1508 01:09:46,880 --> 01:09:47,399 >> JASON HIRSCHHORN: Um Kürbis. 1509 01:09:47,399 --> 01:09:48,760 Genau. 1510 01:09:48,760 --> 01:09:50,010 So deutet dies auf Kürbis. 1511 01:09:50,010 --> 01:09:52,500 1512 01:09:52,500 --> 01:09:54,250 Und wo ist dieser Zeiger Kürbis in Punkt? 1513 01:09:54,250 --> 01:09:57,986 1514 01:09:57,986 --> 01:09:58,340 Zu 1515 01:09:58,340 --> 01:09:58,590 >> ZIELGRUPPE: Null. 1516 01:09:58,590 --> 01:09:59,210 >> JASON HIRSCHHORN: Um null. 1517 01:09:59,210 --> 01:10:00,460 Genau. 1518 01:10:00,460 --> 01:10:03,570 1519 01:10:03,570 --> 01:10:05,140 Also haben wir nur etwas einge sich der Liste. 1520 01:10:05,140 --> 01:10:07,210 Wir haben gerade schrieb diesen Code, um dies zu tun. 1521 01:10:07,210 --> 01:10:09,520 Fast wir haben es fast vollständig geknackt. 1522 01:10:09,520 --> 01:10:10,790 Jetzt fügen wir Süßigkeiten. 1523 01:10:10,790 --> 01:10:13,480 Unsere Süßigkeiten geht ebenfalls auf Null. 1524 01:10:13,480 --> 01:10:16,100 Also, was machen wir mit Süßigkeiten? 1525 01:10:16,100 --> 01:10:18,790 >> PUBLIKUM: Das hängt davon ab, ob nicht wir versuchen, es zu sortieren. 1526 01:10:18,790 --> 01:10:19,640 >> JASON HIRSCHHORN: Das ist genau richtig. 1527 01:10:19,640 --> 01:10:21,070 Es hängt davon ab, ob wir versuchen, es zu sortieren. 1528 01:10:21,070 --> 01:10:22,660 Nehmen wir an, wir sind nicht gehen, um es zu sortieren. 1529 01:10:22,660 --> 01:10:24,880 >> ZIELGRUPPE: Na dann, wie wir diskutiert zuvor, ist es am einfachsten, nur um es setzen 1530 01:10:24,880 --> 01:10:28,590 gleich zu Beginn so der Zeiger Null Punkte, um Süßigkeiten. 1531 01:10:28,590 --> 01:10:29,020 >> JASON HIRSCHHORN: OK. 1532 01:10:29,020 --> 01:10:29,380 Halten Sie an. 1533 01:10:29,380 --> 01:10:30,630 Lassen Sie mich Süßigkeiten schaffen hier richtig. 1534 01:10:30,630 --> 01:10:34,030 1535 01:10:34,030 --> 01:10:35,150 Also dieser Zeiger - 1536 01:10:35,150 --> 01:10:37,590 >> ZIELGRUPPE: Ja, sollte jetzt werden, um Süßigkeiten zu zeigen. 1537 01:10:37,590 --> 01:10:40,580 Dann haben Sie den Mauszeiger aus Süßigkeiten Punkt Kürbis. 1538 01:10:40,580 --> 01:10:43,140 1539 01:10:43,140 --> 01:10:44,560 >> JASON HIRSCHHORN: Wie das? 1540 01:10:44,560 --> 01:10:47,380 Und sagen, wir haben eine andere Ding auf Null Karte? 1541 01:10:47,380 --> 01:10:48,660 >> ZIELGRUPPE: Nun, man muss nur das gleiche tun? 1542 01:10:48,660 --> 01:10:50,290 >> JASON HIRSCHHORN: Tun Sie das Gleiche. 1543 01:10:50,290 --> 01:10:53,700 Also in diesem Fall, wenn wir nicht wollen, halten Sie es sortiert 1544 01:10:53,700 --> 01:10:55,270 klingt ziemlich einfach. 1545 01:10:55,270 --> 01:10:59,920 Wir nehmen den Zeiger in der indice von unseren Hash-Funktion gegeben. 1546 01:10:59,920 --> 01:11:03,830 Wir haben diesen Punkt auf unserer neuen Knoten. 1547 01:11:03,830 --> 01:11:07,830 Und dann, was es zeigt zuvor - 1548 01:11:07,830 --> 01:11:10,620 in diesem Fall null, in der zweiten Fall Kürbis - 1549 01:11:10,620 --> 01:11:15,310 , dass, was immer es ist zu zeigen zuvor, in den nächsten fügen wir 1550 01:11:15,310 --> 01:11:17,810 unsere neuen Knoten. 1551 01:11:17,810 --> 01:11:19,650 Wir sind etwas Einsetzen am Anfang. 1552 01:11:19,650 --> 01:11:22,900 In der Tat ist dies viel einfacher als versuchen, die Liste sortiert zu halten. 1553 01:11:22,900 --> 01:11:25,340 Aber noch einmal, wird sein Suchen mehr hier kompliziert. 1554 01:11:25,340 --> 01:11:28,300 Wir haben immer bis zum Ende zu gehen. 1555 01:11:28,300 --> 01:11:29,650 >> OK. 1556 01:11:29,650 --> 01:11:32,750 Haben Sie Fragen zu getrennten Verkettung? 1557 01:11:32,750 --> 01:11:34,690 Wie das funktioniert? 1558 01:11:34,690 --> 01:11:35,820 Bitte fragen sie jetzt. 1559 01:11:35,820 --> 01:11:39,260 Ich sicherstellen, dass Sie alle wollen wirklich verstehen, bevor wir den Kopf aus. 1560 01:11:39,260 --> 01:11:48,410 1561 01:11:48,410 --> 01:11:52,060 >> ZIELGRUPPE: Warum haben Sie Kürbis setzen und Süßigkeiten in die gleiche 1562 01:11:52,060 --> 01:11:54,108 Teil des Hash-Tabelle? 1563 01:11:54,108 --> 01:11:55,860 >> JASON HIRSCHHORN: Gute Frage. 1564 01:11:55,860 --> 01:11:59,140 Warum wir setzen Sie sie in der gleichen Teil des Hash-Tabelle? 1565 01:11:59,140 --> 01:12:03,200 Nun, in diesem Fall ist unsere Hash-Funktion Null zurück für beide. 1566 01:12:03,200 --> 01:12:05,310 So müssen sie bei indice Null gehen weil das ist, wo wir zu gehen 1567 01:12:05,310 --> 01:12:07,420 nach ihnen zu suchen, wenn wir jemals wollen sie schauen. 1568 01:12:07,420 --> 01:12:11,750 Wieder mit einem linearen Ansatz Sondieren wir nicht setzen würde sie beide bei Null. 1569 01:12:11,750 --> 01:12:13,900 Aber in der separaten Kettenansatz, wir werden sie beide auf Null setzen 1570 01:12:13,900 --> 01:12:16,620 und dann eine Liste aus der Null. 1571 01:12:16,620 --> 01:12:20,140 >> Und wir wollen nicht überschreiben Kürbis einfach für das, weil dann werden wir 1572 01:12:20,140 --> 01:12:21,860 davon ausgehen, dass Kürbis war nie eingesetzt. 1573 01:12:21,860 --> 01:12:25,230 Wenn wir nur immer eine Sache, in der Ort, der schlecht sein würde. 1574 01:12:25,230 --> 01:12:28,590 Dann gäbe es keine Chance von uns je - 1575 01:12:28,590 --> 01:12:31,660 wenn wir jemals eine Kopie hatte, dann haben wir würde nur zu löschen unseren Ausgangswert. 1576 01:12:31,660 --> 01:12:34,090 Also das ist, warum wir diesen Ansatz zu tun. 1577 01:12:34,090 --> 01:12:36,580 Oder, das ist, warum wir uns - aber wieder, wir entschied sich für die getrennte Verkettung Ansatz, 1578 01:12:36,580 --> 01:12:39,670 denen es viele andere Ansätze man konnte wählen. 1579 01:12:39,670 --> 01:12:41,185 Heißt das, Ihre Frage zu beantworten? 1580 01:12:41,185 --> 01:12:41,660 >> OK. 1581 01:12:41,660 --> 01:12:42,910 Carlos. 1582 01:12:42,910 --> 01:12:46,130 1583 01:12:46,130 --> 01:12:47,720 Linear Probing würde bedeuten - 1584 01:12:47,720 --> 01:12:51,913 wenn wir fanden eine Kollision bei Null, wir würde im nächsten Ort, um zu sehen, ob 1585 01:12:51,913 --> 01:12:54,310 es war offen und hat es dort. 1586 01:12:54,310 --> 01:12:57,320 Und dann schauen wir uns in der nächsten Sport-und sehen, ob das offen war und legte es dort. 1587 01:12:57,320 --> 01:12:59,780 So finden wir den nächsten verfügbaren offene Stelle und legen Sie sie dort. 1588 01:12:59,780 --> 01:13:02,580 1589 01:13:02,580 --> 01:13:03,890 Noch Fragen? 1590 01:13:03,890 --> 01:13:05,370 Ja, Avi. 1591 01:13:05,370 --> 01:13:07,490 >> ZIELGRUPPE: Als Follow-up zu, dass was halten Sie von der nächsten Stelle das? 1592 01:13:07,490 --> 01:13:10,250 In der Hash-Tabelle oder in einer verknüpften Liste. 1593 01:13:10,250 --> 01:13:12,100 >> JASON HIRSCHHORN: Für lineare Programmierung, keine verkettete Listen. 1594 01:13:12,100 --> 01:13:13,400 Der nächste Punkt auf der Hash-Tabelle. 1595 01:13:13,400 --> 01:13:13,820 >> ZIELGRUPPE: OK. 1596 01:13:13,820 --> 01:13:17,570 Also die Hash-Tabelle wäre Initialisierung der Größe - 1597 01:13:17,570 --> 01:13:19,560 wie die Anzahl der Strings Sie wurden Einfügen? 1598 01:13:19,560 --> 01:13:22,170 >> JASON HIRSCHHORN: Sie würde wollen, dass es wirklich groß. 1599 01:13:22,170 --> 01:13:23,910 Ja. 1600 01:13:23,910 --> 01:13:27,900 Hier ist ein Bild von dem, was wir zog nur auf dem Brett. 1601 01:13:27,900 --> 01:13:29,470 Auch hier haben wir eine Kollision hier richtig. 1602 01:13:29,470 --> 01:13:30,710 bei 152. 1603 01:13:30,710 --> 01:13:33,570 Und Sie werden sehen, die wir erstellt eine verkettete Liste aus der IT. 1604 01:13:33,570 --> 01:13:38,200 1605 01:13:38,200 --> 01:13:41,850 Auch die Hash-Tabelle separaten Verkettung Ansatz ist nicht die, die Sie 1606 01:13:41,850 --> 01:13:45,590 haben für Probleme eingestellt zu nehmen sechs, sondern ist eine, die eine Menge von 1607 01:13:45,590 --> 01:13:47,100 Studenten neigen dazu, zu übernehmen. 1608 01:13:47,100 --> 01:13:51,140 Also in diesem Sinne, lassen Sie uns kurz sprechen bevor wir den Kopf aus etwa sechs Problem, 1609 01:13:51,140 --> 01:13:52,160 und dann werde ich eine Geschichte mit Ihnen teilen. 1610 01:13:52,160 --> 01:13:55,120 Wir haben drei Minuten. 1611 01:13:55,120 --> 01:13:55,750 >> Problem stellte sechs. 1612 01:13:55,750 --> 01:13:57,790 Sie haben vier Funktionen - 1613 01:13:57,790 --> 01:14:02,430 Last, überprüfen Sie, Größe und Entladen. 1614 01:14:02,430 --> 01:14:03,380 Last - 1615 01:14:03,380 --> 01:14:07,120 Nun, wir haben es schon gerade jetzt über Last. 1616 01:14:07,120 --> 01:14:09,330 Wir zogen Last auf dem Brett. 1617 01:14:09,330 --> 01:14:13,230 Und wir begannen sogar Codierung eine Menge Einfügen in einer verknüpften Liste. 1618 01:14:13,230 --> 01:14:18,020 Also Last nicht viel mehr als was wir gerade tun. 1619 01:14:18,020 --> 01:14:21,070 >> Check ist, sobald Sie etwas geladen. 1620 01:14:21,070 --> 01:14:22,580 Es ist das gleiche Verfahren wie diese. 1621 01:14:22,580 --> 01:14:26,845 Die gleichen ersten beiden Teile, wo Sie werfen etwas in der Hash-Funktion 1622 01:14:26,845 --> 01:14:29,190 und erhalten seinen Wert. 1623 01:14:29,190 --> 01:14:30,700 Aber jetzt sind wir nicht einlegen. 1624 01:14:30,700 --> 01:14:33,350 Jetzt sind wir für sie suchen. 1625 01:14:33,350 --> 01:14:37,130 Ich habe Beispielcode für die Suche geschrieben etwas in einer verketteten Liste. 1626 01:14:37,130 --> 01:14:38,250 Ich ermutige Sie, dass zu üben. 1627 01:14:38,250 --> 01:14:43,000 Aber intuitiv etwas zu finden ist ziemlich ähnlich wie das Einfügen etwas. 1628 01:14:43,000 --> 01:14:46,540 In der Tat, ein Bild zu finden, zeichneten wir etwas in einer verketteten Liste, bewegen 1629 01:14:46,540 --> 01:14:48,910 durch, bis Sie am Ende bekam. 1630 01:14:48,910 --> 01:14:52,430 Und wenn du zu Ende und konnte nicht finden, dann ist es nicht da. 1631 01:14:52,430 --> 01:14:55,400 Also das ist, zu überprüfen, im Wesentlichen. 1632 01:14:55,400 --> 01:14:57,030 >> Weiter ist die Größe. 1633 01:14:57,030 --> 01:14:57,910 Lassen wir Größe. 1634 01:14:57,910 --> 01:15:00,040 Schließlich haben Sie entladen. 1635 01:15:00,040 --> 01:15:02,890 Unload ist, die wir nicht gezeichnet haben auf der Platine oder noch codiert. 1636 01:15:02,890 --> 01:15:05,990 Aber ich ermutige Sie, versuchen Sie es Codierung in unserer Stichprobe verbundenen Liste Beispiel. 1637 01:15:05,990 --> 01:15:11,440 Aber entladen intuitiv ähnlich ist kostenlos - 1638 01:15:11,440 --> 01:15:14,010 oder ich meine, ist ähnlich zu überprüfen. 1639 01:15:14,010 --> 01:15:17,350 Außer jetzt jedes Mal, du gehst durch, bist du nicht einfach zu überprüfen, 1640 01:15:17,350 --> 01:15:19,090 sehen, wenn Sie Ihren Wert dort zu haben. 1641 01:15:19,090 --> 01:15:22,490 Aber du nimmst diesen Knoten und befreit wird, im Wesentlichen. 1642 01:15:22,490 --> 01:15:23,610 Das ist, was Entladen fragt, was Sie tun. 1643 01:15:23,610 --> 01:15:24,670 Kostenlose alles, was Sie malloced habe. 1644 01:15:24,670 --> 01:15:27,480 Durch die ganze Liste, so wirst du wieder, die durch den ganzen Hash 1645 01:15:27,480 --> 01:15:27,760 Tabelle wieder. 1646 01:15:27,760 --> 01:15:29,240 Dieses Mal nicht überprüfen um zu sehen, was da ist. 1647 01:15:29,240 --> 01:15:31,080 Nur befreien, was da ist. 1648 01:15:31,080 --> 01:15:33,260 >> Und schließlich groß. 1649 01:15:33,260 --> 01:15:34,350 Größe sollten umgesetzt werden. 1650 01:15:34,350 --> 01:15:35,590 Wenn Sie nicht implementieren Größe - 1651 01:15:35,590 --> 01:15:36,250 Ich werde es so zu sagen. 1652 01:15:36,250 --> 01:15:39,740 Wenn Sie nicht genau implementieren Größe eine Zeile Code, einschließlich der 1653 01:15:39,740 --> 01:15:43,760 return-Anweisung, sind Sie Dabei Größe falsch. 1654 01:15:43,760 --> 01:15:47,170 So stellen Sie sicher, Größe, für die vollständige Design Punkte, Sie tun es in genau einem 1655 01:15:47,170 --> 01:15:49,970 Codezeile, einschließlich die return-Anweisung. 1656 01:15:49,970 --> 01:15:52,450 >> Und noch nicht packen, Akchar. 1657 01:15:52,450 --> 01:15:53,700 Eager Beaver. 1658 01:15:53,700 --> 01:15:55,820 1659 01:15:55,820 --> 01:16:01,300 Ich danke sagen wollte Jungs für das Kommen zu Abschnitt. 1660 01:16:01,300 --> 01:16:02,550 Haben Sie ein glückliches Halloween. 1661 01:16:02,550 --> 01:16:05,300 1662 01:16:05,300 --> 01:16:05,960 Das ist mein Kostüm. 1663 01:16:05,960 --> 01:16:08,850 Ich werde das Tragen dieser am Donnerstag, wenn ich dich sehe an Bürozeiten. 1664 01:16:08,850 --> 01:16:14,640 Und wenn Sie neugierig sind etwas mehr Hintergrund als zu diesem Kostüm, fühlen 1665 01:16:14,640 --> 01:16:19,135 frei, um 2011 Abschnitt für eine Geschichte auf, warum bin ich 1666 01:16:19,135 --> 01:16:20,900 Tragen Sie den Kürbis-Kostüm. 1667 01:16:20,900 --> 01:16:23,680 Und es ist eine traurige Geschichte. 1668 01:16:23,680 --> 01:16:27,050 So stellen Sie sicher, dass Sie einige Gewebe in der Nähe. 1669 01:16:27,050 --> 01:16:28,680 Aber auf das, wenn Sie welche haben Fragen werde ich bleiben, um 1670 01:16:28,680 --> 01:16:29,960 außerhalb nach Abschnitt. 1671 01:16:29,960 --> 01:16:31,510 Viel Glück auf sechs Problem eingestellt. 1672 01:16:31,510 --> 01:16:33,540 Und wie immer, wenn Sie welche haben Fragen, lassen Sie es mich wissen. 1673 01:16:33,540 --> 01:16:35,584