1 00:00:00,000 --> 00:00:08,250 2 00:00:08,250 --> 00:00:12,680 >> JASON Hirschhorn: Καλώς ήρθατε όλοι στο Τμήμα Επτά. 3 00:00:12,680 --> 00:00:15,040 Είμαστε στην εβδομάδα επτά του μαθήματος. 4 00:00:15,040 --> 00:00:18,440 Και αυτό το επερχόμενο Πέμπτη Απόκριες είναι έτσι είμαι 5 00:00:18,440 --> 00:00:21,420 ντυμένος σαν μια κολοκύθα. 6 00:00:21,420 --> 00:00:23,460 Δεν μπορώ να σκύψεις και να θέσει σε τα παπούτσια μου, έτσι ώστε να είναι ο λόγος που είμαι 7 00:00:23,460 --> 00:00:25,660 φορώντας μόνο κάλτσες. 8 00:00:25,660 --> 00:00:29,220 Είμαι, επίσης, δεν φορούσε τίποτα κάτω αυτό, οπότε δεν μπορώ να το βγάλω αν είναι 9 00:00:29,220 --> 00:00:29,950 αποσπούν την προσοχή σας. 10 00:00:29,950 --> 00:00:31,860 Ζητώ συγνώμη εκ των προτέρων γι 'αυτό. 11 00:00:31,860 --> 00:00:33,170 Δεν χρειάζεται να φανταστεί κανείς τι συμβαίνει. 12 00:00:33,170 --> 00:00:34,240 Είμαι φορώντας μπόξερ. 13 00:00:34,240 --> 00:00:36,170 Έτσι είναι όλα καλά. 14 00:00:36,170 --> 00:00:41,120 >> Έχω μια ιστορία για περισσότερο γιατί είμαι ντυμένος σαν κολοκύθα, αλλά Πάω να 15 00:00:41,120 --> 00:00:45,110 αποθηκεύσετε για αργότερα ότι σε αυτήν την ενότητα γιατί δεν θέλετε να ξεκινήσετε. 16 00:00:45,110 --> 00:00:47,720 Έχουμε πολλά συναρπαστικά πράγματα να πάει πέρα ​​από αυτή την εβδομάδα. 17 00:00:47,720 --> 00:00:51,810 Οι περισσότεροι από αυτούς σχετίζονται άμεσα με αυτό set πρόβλημα της εβδομάδας, ορθογραφικά λάθη. 18 00:00:51,810 --> 00:00:54,680 Εμείς πάμε για να πηγαίνει πέρα ​​συνδέεται λίστες και πίνακες κατακερματισμού 19 00:00:54,680 --> 00:00:57,160 για ολόκληρο το τμήμα. 20 00:00:57,160 --> 00:01:02,490 Έβαλα τη λίστα αυτή κάθε εβδομάδα, μια λίστα πόρους για να σας βοηθήσει με 21 00:01:02,490 --> 00:01:04,120 το υλικό σε αυτήν την πορεία. 22 00:01:04,120 --> 00:01:07,600 Αν σε μια απώλεια ή αν ψάχνετε για κάποιο περισσότερες πληροφορίες, ελέγξτε έξω μια από 23 00:01:07,600 --> 00:01:09,930 αυτοί οι πόροι. 24 00:01:09,930 --> 00:01:14,530 >> Και πάλι, pset6 είναι ορθογραφικά λάθη, το chipset αυτής της εβδομάδας. 25 00:01:14,530 --> 00:01:17,690 Και αυτό θα ενθαρρύνει επίσης, και εγώ Σας ενθαρρύνουμε, να χρησιμοποιήσετε κάποιο άλλο 26 00:01:17,690 --> 00:01:20,320 πόρους ειδικά για αυτό το chipset. 27 00:01:20,320 --> 00:01:23,390 Ειδικότερα, τα τρία έχω που αναφέρονται στην οθόνη - 28 00:01:23,390 --> 00:01:27,160 gdb, το οποίο έχουμε εξοικειωθεί με και έχουν χρησιμοποιήσει για μια στιγμή τώρα, είναι 29 00:01:27,160 --> 00:01:29,270 πρόκειται να είναι πολύ χρήσιμη αυτή την εβδομάδα. 30 00:01:29,270 --> 00:01:30,190 Έτσι έβαλα ότι μέχρι εδώ. 31 00:01:30,190 --> 00:01:32,910 Αλλά κάθε φορά που εργάζεστε με C, θα πρέπει πάντα να χρησιμοποιείτε gdb για να 32 00:01:32,910 --> 00:01:34,430 debug τα προγράμματά σας. 33 00:01:34,430 --> 00:01:36,660 Αυτή την εβδομάδα επίσης Valgrind. 34 00:01:36,660 --> 00:01:38,535 Ξέρει κανείς τι valgrind κάνει; 35 00:01:38,535 --> 00:01:42,184 36 00:01:42,184 --> 00:01:43,890 >> ΚΟΙΝΟ: Ελέγχει για διαρροές μνήμης; 37 00:01:43,890 --> 00:01:45,950 >> JASON Hirschhorn: Valgrind ελέγχους για διαρροές μνήμης. 38 00:01:45,950 --> 00:01:49,970 Έτσι, αν malloc κάτι που σου πρόγραμμα, ζητάς για τη μνήμη. 39 00:01:49,970 --> 00:01:52,920 Στο τέλος του προγράμματός σας, έχετε να γράψει ελεύθερα σε ό, τι έχετε 40 00:01:52,920 --> 00:01:54,800 malloced για να δώσει τη μνήμη πίσω. 41 00:01:54,800 --> 00:01:58,420 Αν δεν γράψετε ελεύθερο στο τέλος και το πρόγραμμά σας έρχεται σε ένα συμπέρασμα, 42 00:01:58,420 --> 00:02:00,000 τα πάντα αυτόματα θα να απελευθερωθεί. 43 00:02:00,000 --> 00:02:02,340 Και για τα μικρά προγράμματα, είναι δεν είναι ότι μεγάλη μια διαπραγμάτευση. 44 00:02:02,340 --> 00:02:05,250 Αλλά αν είστε γραπτώς μια μεγαλύτερη λειτουργία πρόγραμμα που δεν κλείνει, 45 00:02:05,250 --> 00:02:09,180 κατ 'ανάγκην, σε λίγα λεπτά ή λίγα δευτερόλεπτα, στη συνέχεια, τη μνήμη διαρροές 46 00:02:09,180 --> 00:02:10,710 μπορεί να γίνει μια τεράστια συμφωνία. 47 00:02:10,710 --> 00:02:14,940 >> Έτσι, για pset6, η προσδοκία είναι ότι θα έχετε μηδέν διαρροές μνήμης με 48 00:02:14,940 --> 00:02:15,910 το πρόγραμμά σας. 49 00:02:15,910 --> 00:02:18,690 Για να ελέγξετε για διαρροές μνήμης, εκτελέστε valgrind και αυτό θα σας δώσει κάποια ωραία 50 00:02:18,690 --> 00:02:21,190 εξόδου επιτρέποντάς σας να γνωρίζετε αν ή δεν ήταν όλα δωρεάν. 51 00:02:21,190 --> 00:02:23,940 Θα εξασκηθείτε με αυτό αργότερα σήμερα, ελπίζω. 52 00:02:23,940 --> 00:02:25,790 >> Τέλος, η εντολή diff. 53 00:02:25,790 --> 00:02:28,900 Θα χρησιμοποιηθεί για κάτι παρόμοιο με αυτό σε pset5 με το εργαλείο ματιά. 54 00:02:28,900 --> 00:02:30,780 Επέτρεψε να κοιτάξουμε μέσα. 55 00:02:30,780 --> 00:02:33,400 Θα χρησιμοποιηθεί επίσης diff, επίσης, ανά το πρόβλημα που spec. 56 00:02:33,400 --> 00:02:35,950 Αλλά σε σας τη δυνατότητα να συγκρίνετε δύο αρχεία. 57 00:02:35,950 --> 00:02:39,180 Μπορείτε να συγκρίνετε το αρχείο bitmap και info κεφαλίδες ενός διαλύματος προσωπικού και 58 00:02:39,180 --> 00:02:42,200 λύση σας σε pset5 εάν επιλέξατε να το χρησιμοποιήσετε. 59 00:02:42,200 --> 00:02:44,030 Diff θα σας επιτρέψει να το κάνουμε αυτό, καθώς και. 60 00:02:44,030 --> 00:02:48,620 Μπορείτε να συγκρίνετε τη σωστή απάντηση για πρόβλημα αυτής της εβδομάδας που την απάντησή σας 61 00:02:48,620 --> 00:02:52,210 και να δούμε αν γραμμών πάνω ή προς τα δείτε όπου τα σφάλματα είναι. 62 00:02:52,210 --> 00:02:55,870 >> Έτσι, αυτά είναι τα τρία καλά εργαλεία που θα πρέπει να χρησιμοποιήσετε για αυτή την εβδομάδα, και 63 00:02:55,870 --> 00:02:58,130 ελέγξτε σίγουρα το πρόγραμμά σας με αυτά τα τρία εργαλεία 64 00:02:58,130 --> 00:03:00,520 πριν το θέσετε μέσα 65 00:03:00,520 --> 00:03:04,650 Και πάλι, όπως έχω αναφέρει κάθε εβδομάδα, αν έχετε οποιαδήποτε σχόλια για μένα - τόσο 66 00:03:04,650 --> 00:03:06,470 θετική και εποικοδομητική - 67 00:03:06,470 --> 00:03:09,930 διστάσετε να κατευθυνθείτε προς το δικτυακό τόπο στο κάτω μέρος αυτής της διαφάνειας 68 00:03:09,930 --> 00:03:11,270 και την είσοδο εκεί. 69 00:03:11,270 --> 00:03:13,440 Πραγματικά εκτιμώ οποιαδήποτε και όλες οι παρατηρήσεις. 70 00:03:13,440 --> 00:03:17,360 Και αν μου δώσετε συγκεκριμένα πράγματα που Μπορώ να κάνω για να βελτιώσω ή ότι είμαι 71 00:03:17,360 --> 00:03:21,350 καλά ότι θα μου αρέσει να συνεχιστεί, παίρνω ότι στην καρδιά και 72 00:03:21,350 --> 00:03:24,040 πραγματικά να προσπαθήσουμε σκληρά για να ακούσετε τα σχόλιά σας. 73 00:03:24,040 --> 00:03:27,720 Δεν μπορώ να υποσχεθώ Πάω να κάνουμε τα πάντα, όμως, όπως και φορώντας ένα 74 00:03:27,720 --> 00:03:30,700 κολοκύθας κοστούμι κάθε εβδομάδα. 75 00:03:30,700 --> 00:03:34,020 >> Γι 'αυτό και πρόκειται να δαπανήσει το μεγαλύτερο μέρος των τμήμα, όπως ανέφερα, μιλάμε για 76 00:03:34,020 --> 00:03:37,240 συνδεδεμένες λίστες και πίνακες κατακερματισμού, η οποία θα είναι άμεσα εφαρμοστέες στην 77 00:03:37,240 --> 00:03:38,780 πρόβλημα που αυτή την εβδομάδα. 78 00:03:38,780 --> 00:03:42,580 Συνδεδεμένες λίστες θα πάμε σε σχετικά γρήγορα επειδή έχουμε περάσει μια δίκαιη λίγο 79 00:03:42,580 --> 00:03:44,930 του χρόνου πηγαίνει πέρα ​​από αυτό το σημείο. 80 00:03:44,930 --> 00:03:48,680 Και έτσι θα πάρετε κατ 'ευθείαν στο κωδικοποίησης προβλήματα για συνδεδεμένες λίστες. 81 00:03:48,680 --> 00:03:52,740 Και στη συνέχεια, στο τέλος θα μιλήσουμε για hash πίνακες και πώς εφαρμόζεται σε αυτό 82 00:03:52,740 --> 00:03:55,280 πρόβλημα που τίθεται εβδομάδας. 83 00:03:55,280 --> 00:03:57,560 >> Έχετε δει αυτόν τον κώδικα πριν. 84 00:03:57,560 --> 00:04:02,730 Αυτό είναι ένα struct, και αυτό είναι ο καθορισμός κάτι νέο ονομάζεται κόμβος. 85 00:04:02,730 --> 00:04:10,660 Και μέσα σε ένα κόμβο υπάρχει ένας ακέραιος εδώ και υπάρχει ένας δείκτης σε 86 00:04:10,660 --> 00:04:11,830 ένα άλλο κόμβο. 87 00:04:11,830 --> 00:04:12,790 Το έχουμε δει αυτό πριν. 88 00:04:12,790 --> 00:04:14,830 Αυτό έχει να ανεβαίνει για μια-δυο εβδομάδες τώρα. 89 00:04:14,830 --> 00:04:18,680 Συνδυάζει δείκτες, που έχουμε ήδη σε συνεργασία με, και structs, οι οποίες επιτρέπουν 90 00:04:18,680 --> 00:04:22,079 μας να συνδυάσει δύο διαφορετικά τα πράγματα σε έναν τύπο δεδομένων. 91 00:04:22,079 --> 00:04:24,830 92 00:04:24,830 --> 00:04:26,490 >> Υπάρχει μια παρτίδα σε εξέλιξη στην οθόνη. 93 00:04:26,490 --> 00:04:30,220 Αλλά όλοι θα πρέπει να είναι σχετικά εξοικειωμένος με σας. 94 00:04:30,220 --> 00:04:33,810 Από την πρώτη γραμμή, δηλώνουν ένα νέο κόμβο. 95 00:04:33,810 --> 00:04:41,650 Και στη συνέχεια, μέσα σε αυτό το νέο κόμβο, μπορώ να ορίσω ο ακέραιος στην εν λόγω κόμβο προς ένα. 96 00:04:41,650 --> 00:04:44,950 Βλέπουμε στην επόμενη γραμμή κάνω μια printf εντολή, αλλά έχω σκιασμένα 97 00:04:44,950 --> 00:04:48,080 η εντολή printf διότι η πραγματικά σημαντικό μέρος είναι αυτή η γραμμή εδώ - 98 00:04:48,080 --> 00:04:50,020 new_node.n. 99 00:04:50,020 --> 00:04:51,270 Τι σημαίνει η τελεία σημαίνει; 100 00:04:51,270 --> 00:04:53,810 101 00:04:53,810 --> 00:04:57,240 >> ΚΟΙΝΟ: Πηγαίνετε στον κόμβο και εκτιμήσει την αξία n για αυτό. 102 00:04:57,240 --> 00:04:58,370 >> JASON Hirschhorn: Αυτό είναι ακριβώς δεξιά. 103 00:04:58,370 --> 00:05:03,300 Dot σημαίνει μεταβείτε στον n μέρος αυτού του νέου κόμβου. 104 00:05:03,300 --> 00:05:05,690 Αυτή η επόμενη γραμμή κάνει τι; 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 >> ΚΟΙΝΟ: Δημιουργεί ένα άλλο κόμβο που θα οδηγεί στο νέο κόμβο. 108 00:05:21,910 --> 00:05:24,870 >> JASON Hirschhorn: Γι 'αυτό δεν δημιουργήσετε ένα νέο κόμβο. 109 00:05:24,870 --> 00:05:26,120 Δημιουργεί ένα τι; 110 00:05:26,120 --> 00:05:28,300 111 00:05:28,300 --> 00:05:29,300 >> ΚΟΙΝΟ: Ένας δείκτης. 112 00:05:29,300 --> 00:05:33,460 >> JASON Hirschhorn: Ένας δείκτης σε κόμβο, όπως υποδεικνύεται από αυτόν τον κόμβο * εδώ. 113 00:05:33,460 --> 00:05:34,800 Έτσι ώστε να δημιουργεί ένα δείκτη σε έναν κόμβο. 114 00:05:34,800 --> 00:05:37,490 Και το οποίο ο κόμβος είναι αυτό που δείχνει να, Μάικλ; 115 00:05:37,490 --> 00:05:38,440 >> ΚΟΙΝΟ: Νέος κόμβος; 116 00:05:38,440 --> 00:05:39,240 >> JASON Hirschhorn: Νέος κόμβος. 117 00:05:39,240 --> 00:05:43,020 Και αυτό δείχνει εκεί, γιατί έχουμε έδωσε την διεύθυνση του νέου κόμβου. 118 00:05:43,020 --> 00:05:45,820 Και τώρα σε αυτή τη γραμμή βλέπουμε δύο διαφορετικούς τρόπους 119 00:05:45,820 --> 00:05:46,910 εκφράζουν το ίδιο πράγμα. 120 00:05:46,910 --> 00:05:49,650 Και θα ήθελα να επισημάνω πως αυτές δύο πράγματα είναι τα ίδια. 121 00:05:49,650 --> 00:05:54,740 Στην πρώτη γραμμή, Αποαναφορά ο δείκτης. 122 00:05:54,740 --> 00:05:55,830 Έτσι πάμε στον κόμβο. 123 00:05:55,830 --> 00:05:56,830 Αυτό είναι ό, τι σημαίνει αυτό το αστέρι. 124 00:05:56,830 --> 00:05:57,930 Έχουμε δει ότι πριν με δείκτες. 125 00:05:57,930 --> 00:05:59,280 Πηγαίνετε σε αυτόν τον κόμβο. 126 00:05:59,280 --> 00:06:00,370 Αυτό είναι σε παρενθέσεις. 127 00:06:00,370 --> 00:06:04,610 Και στη συνέχεια να έχουν πρόσβαση μέσω του τελεστή τελεία το ν στοιχείο αυτού του κόμβου. 128 00:06:04,610 --> 00:06:08,430 >> Έτσι ώστε να παίρνει τη σύνταξη είδαμε εδώ και τώρα 129 00:06:08,430 --> 00:06:09,670 χρήση με ένα δείκτη. 130 00:06:09,670 --> 00:06:13,730 Φυσικά, παίρνει το είδος της απασχολημένος αν είστε γραπτώς αυτές τις παρενθέσεις - 131 00:06:13,730 --> 00:06:14,940 Αυτό το αστέρι και η τελεία. 132 00:06:14,940 --> 00:06:16,220 Παίρνει λίγο απασχολημένος. 133 00:06:16,220 --> 00:06:18,500 Έτσι έχουμε κάποια συντακτική ζάχαρη. 134 00:06:18,500 --> 00:06:19,920 Και αυτή η γραμμή ακριβώς εδώ - 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 Αυτό κάνει το ίδιο ακριβώς πράγμα. 138 00:06:28,000 --> 00:06:30,840 Έτσι, οι δύο αυτές γραμμές κώδικα είναι ισοδύναμες και θα κάνει 139 00:06:30,840 --> 00:06:31,650 ακριβώς το ίδιο πράγμα. 140 00:06:31,650 --> 00:06:34,210 >> Θα ήθελα όμως να επισημάνω τα έξω πριν προχωρήσουμε περαιτέρω, έτσι ώστε να κατανοήσουν 141 00:06:34,210 --> 00:06:39,000 ότι πραγματικά αυτό το πράγμα εδώ είναι απλά συντακτική ζάχαρη για dereferencing 142 00:06:39,000 --> 00:06:44,200 ο δείκτης και στη συνέχεια πρόκειται να το n μέρος αυτής της struct. 143 00:06:44,200 --> 00:06:45,525 Οποιεσδήποτε ερωτήσεις σχετικά με αυτήν τη διαφάνεια; 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 >> Έτσι θα πάμε για να περάσει μέσα από ένα ζευγάρι των δραστηριοτήτων που μπορείτε να κάνετε για 147 00:06:58,510 --> 00:06:59,730 συνδεδεμένες λίστες. 148 00:06:59,730 --> 00:07:05,770 Μια συνδεδεμένη λίστα, ανάκληση, είναι μια σειρά από κόμβους που οδηγούν σε ένα άλλο. 149 00:07:05,770 --> 00:07:12,470 Και εμείς συνήθως ξεκινούν με ένα δείκτη ονομάζεται το κεφάλι, γενικά, ότι τα σημεία για να 150 00:07:12,470 --> 00:07:14,040 το πρώτο πράγμα στη λίστα. 151 00:07:14,040 --> 00:07:18,900 Έτσι, στην πρώτη γραμμή εδώ, πρέπει πρώτα το αρχικό μας L. 152 00:07:18,900 --> 00:07:21,370 Έτσι, αυτό το πράγμα που μπορείτε να σκεφτείτε - αυτό κείμενο εδώ μπορείτε να σκεφτείτε ως 153 00:07:21,370 --> 00:07:23,560 μόνο ο δείκτης που έχετε αποθηκεύσει ότι κάπου σημεία 154 00:07:23,560 --> 00:07:24,670 προς το πρώτο στοιχείο. 155 00:07:24,670 --> 00:07:27,500 Και σε αυτή την συνδεδεμένη λίστα έχουμε τέσσερις κόμβους. 156 00:07:27,500 --> 00:07:29,530 Κάθε κόμβος είναι ένα μεγάλο κουτί. 157 00:07:29,530 --> 00:07:33,430 Το μεγαλύτερο κουτί μέσα στο μεγάλο κουτί είναι το ακέραιο μέρος. 158 00:07:33,430 --> 00:07:37,400 Και τότε θα έχουμε ένα μέρος δείκτη. 159 00:07:37,400 --> 00:07:39,630 >> Αυτά τα κουτιά δεν έχουν συνταχθεί με κλίμακα, διότι πόσο μεγάλο είναι 160 00:07:39,630 --> 00:07:42,320 ένας ακέραιος σε bytes; 161 00:07:42,320 --> 00:07:43,290 Πόσο μεγάλη τώρα; 162 00:07:43,290 --> 00:07:43,710 Four. 163 00:07:43,710 --> 00:07:45,470 Και πόσο μεγάλο είναι ένας δείκτης; 164 00:07:45,470 --> 00:07:45,940 Four. 165 00:07:45,940 --> 00:07:48,180 Έτσι, πραγματικά, αν ήταν να επιστήσει αυτή την κλίμακα και τα δύο κουτιά 166 00:07:48,180 --> 00:07:49,690 θα ήταν το ίδιο μέγεθος. 167 00:07:49,690 --> 00:07:52,870 Σε αυτή την περίπτωση, θέλουμε να εισαγάγετε κάτι μέσα στην συνδεδεμένη λίστα. 168 00:07:52,870 --> 00:07:57,190 Έτσι, μπορείτε να δείτε εδώ κάτω είμαστε εισαγωγή Έχουμε πέντε διασχίσει μέσα από το 169 00:07:57,190 --> 00:08:01,310 συνδεδεμένη λίστα, βρείτε όπου πέντε πηγαίνει, και στη συνέχεια τοποθετήστε. 170 00:08:01,310 --> 00:08:03,560 >> Ας σπάσει αυτό κάτω και να πάει λίγο πιο αργά. 171 00:08:03,560 --> 00:08:05,510 Πάω να επισημάνω στο διοικητικό συμβούλιο. 172 00:08:05,510 --> 00:08:09,930 Έτσι έχουμε τον κόμβο μας πέντε που που έχουμε δημιουργήσει στο mallocs. 173 00:08:09,930 --> 00:08:11,190 Γιατί όλοι το γέλιο; 174 00:08:11,190 --> 00:08:12,130 Αστειεύομαι. 175 00:08:12,130 --> 00:08:13,310 OK. 176 00:08:13,310 --> 00:08:14,820 Έτσι έχουμε malloced πέντε. 177 00:08:14,820 --> 00:08:16,310 Έχουμε δημιουργήσει τον κόμβο αυτό κάπου αλλού. 178 00:08:16,310 --> 00:08:17,740 Έχουμε έτοιμο να πάει. 179 00:08:17,740 --> 00:08:20,130 Ξεκινάμε στο μπροστινό μέρος του κατάλογος μας με δύο. 180 00:08:20,130 --> 00:08:22,380 Και θέλουμε να εισαγάγετε σε ένα ταξινομημένο τρόπο. 181 00:08:22,380 --> 00:08:27,550 >> Έτσι, αν βλέπουμε δύο και θέλουμε να σε πέντε, τι κάνουμε όταν βλέπουμε 182 00:08:27,550 --> 00:08:28,800 κάτι λιγότερο από εμάς; 183 00:08:28,800 --> 00:08:31,850 184 00:08:31,850 --> 00:08:33,520 Τι; 185 00:08:33,520 --> 00:08:36,750 Θέλουμε να εισαγάγετε πέντε σε αυτό συνδεδεμένη λίστα, κρατώντας ταξινομημένο. 186 00:08:36,750 --> 00:08:37,520 Βλέπουμε νούμερο δύο. 187 00:08:37,520 --> 00:08:38,769 Οπότε τι κάνουμε; 188 00:08:38,769 --> 00:08:39,179 Μάρκους; 189 00:08:39,179 --> 00:08:40,679 >> ΚΟΙΝΟ: Καλέστε το δείκτη στον επόμενο κόμβο. 190 00:08:40,679 --> 00:08:42,530 >> JASON Hirschhorn: Και γιατί πάμε στο επόμενο; 191 00:08:42,530 --> 00:08:45,970 >> ΚΟΙΝΟ: Επειδή είναι το επόμενο κόμβο στη λίστα. 192 00:08:45,970 --> 00:08:48,310 Και γνωρίζουμε ότι η άλλη θέση μόνο. 193 00:08:48,310 --> 00:08:50,410 >> JASON Hirschhorn: Και τα πέντε είναι μεγαλύτερη από δύο, ειδικότερα. 194 00:08:50,410 --> 00:08:51,600 Επειδή θέλουμε να κρατήσουμε ταξινομημένο. 195 00:08:51,600 --> 00:08:52,730 Έτσι πέντε είναι μεγαλύτερο από δύο. 196 00:08:52,730 --> 00:08:54,460 Γι 'αυτό και να προχωρήσουμε στο επόμενο. 197 00:08:54,460 --> 00:08:55,240 Και τώρα φτάνουμε τέσσερα. 198 00:08:55,240 --> 00:08:56,490 Και τι συμβαίνει όταν έχουμε φτάσει τέσσερα; 199 00:08:56,490 --> 00:08:58,920 200 00:08:58,920 --> 00:09:00,310 >> Πέντε είναι μεγαλύτερη από τέσσερα. 201 00:09:00,310 --> 00:09:01,460 Γι 'αυτό και συνεχίζω. 202 00:09:01,460 --> 00:09:03,110 Και τώρα είμαστε στις έξι. 203 00:09:03,110 --> 00:09:04,360 Και τι βλέπουμε σε έξι; 204 00:09:04,360 --> 00:09:08,672 205 00:09:08,672 --> 00:09:09,608 Ναι, Κάρλος; 206 00:09:09,608 --> 00:09:10,544 >> ΚΟΙΝΟ: Έξι είναι μεγαλύτερη από πέντε. 207 00:09:10,544 --> 00:09:11,480 >> JASON Hirschhorn: Έξι είναι μεγαλύτερες από πέντε. 208 00:09:11,480 --> 00:09:13,660 Έτσι, αυτό είναι που θέλουμε να εισαγάγετε πέντε. 209 00:09:13,660 --> 00:09:17,320 Ωστόσο, να έχετε κατά νου ότι αν έχουν μόνο ένα δείκτη εδώ - 210 00:09:17,320 --> 00:09:19,840 αυτό είναι επιπλέον δείκτη μας, που είναι διέρχονται μέσα από τη λίστα. 211 00:09:19,840 --> 00:09:21,860 Και είμαστε επισημαίνοντας έξι. 212 00:09:21,860 --> 00:09:25,010 Έχουμε χάσει την αίσθηση του τι έρχεται πριν από έξι. 213 00:09:25,010 --> 00:09:29,130 Έτσι, αν θέλουμε να εισάγετε κάτι σε ο κατάλογος αυτός κρατώντας ταξινόμηση, εμείς 214 00:09:29,130 --> 00:09:31,630 μάλλον πρέπει πόσοι δείκτες; 215 00:09:31,630 --> 00:09:32,280 >> ΚΟΙΝΟ: Δύο. 216 00:09:32,280 --> 00:09:32,920 >> JASON ΗιγβοΙίοπτ: Δύο. 217 00:09:32,920 --> 00:09:35,720 Κάποιος να παρακολουθείτε την τρέχουσα ένα και ένα να παρακολουθείτε 218 00:09:35,720 --> 00:09:37,050 η προηγούμενη. 219 00:09:37,050 --> 00:09:38,450 Αυτό είναι μόνο ένα μεμονωμένα συνδεδεμένη λίστα. 220 00:09:38,450 --> 00:09:39,670 Πηγαίνει μόνο προς μία κατεύθυνση. 221 00:09:39,670 --> 00:09:43,220 Αν είχαμε μια διπλά συνδεδεμένη λίστα, όπου τα πάντα δείχνουν προς το πράγμα 222 00:09:43,220 --> 00:09:46,240 αφού και το πράγμα πριν, τότε δεν θα πρέπει να το κάνουμε αυτό. 223 00:09:46,240 --> 00:09:49,350 Αλλά σε αυτή την περίπτωση δεν θέλουν να χάσουν παρακολουθείτε ό, τι ήρθαν πριν από εμάς, σε περίπτωση 224 00:09:49,350 --> 00:09:53,350 θα πρέπει να τοποθετήσετε κάπου πέντε στη μέση. 225 00:09:53,350 --> 00:09:55,610 Πείτε μας την εισαγωγή εννέα. 226 00:09:55,610 --> 00:09:57,260 Τι θα συμβεί όταν φτάσαμε στο οκτώ; 227 00:09:57,260 --> 00:10:01,860 228 00:10:01,860 --> 00:10:04,880 >> ΚΟΙΝΟ: Θα έπρεπε να πάρετε αυτό το μηδενικό σημείο. 229 00:10:04,880 --> 00:10:07,820 Αντί να έχουμε μηδενικό σημείο θα είχατε για να προσθέσετε ένα στοιχείο και στη συνέχεια να 230 00:10:07,820 --> 00:10:09,216 το σημείο με εννέα. 231 00:10:09,216 --> 00:10:09,700 >> JASON ΗιγβοΙίοπτ: Ακριβώς. 232 00:10:09,700 --> 00:10:10,600 Έτσι, έχουμε οκτώ. 233 00:10:10,600 --> 00:10:13,140 Φτάνουμε στο τέλος της λίστας, διότι αυτό δείχνει σε null. 234 00:10:13,140 --> 00:10:16,330 Και τώρα, αντί να το σημείο με null έχουμε το σημείο στο νέο κόμβο μας. 235 00:10:16,330 --> 00:10:19,870 Και θέτουμε το δείκτη του ποντικιού το νέο μας κόμβο σε null. 236 00:10:19,870 --> 00:10:21,445 Μήπως κάποιος έχει απορίες σχετικά με την εισαγωγή; 237 00:10:21,445 --> 00:10:25,620 238 00:10:25,620 --> 00:10:28,100 Τι γίνεται αν δεν νοιάζονται για διατηρώντας τη λίστα ταξινομημένη; 239 00:10:28,100 --> 00:10:31,701 240 00:10:31,701 --> 00:10:34,350 >> ΚΟΙΝΟ: Κολλήστε το κατά τη αρχή ή στο τέλος. 241 00:10:34,350 --> 00:10:35,510 >> JASON ΗιγβοΙίοπτ: Κολλήστε το στο η αρχή ή το τέλος. 242 00:10:35,510 --> 00:10:37,276 Ποιο από τα δύο πρέπει να κάνουμε; 243 00:10:37,276 --> 00:10:38,770 Μπόμπι; 244 00:10:38,770 --> 00:10:41,020 Γιατί το τέλος; 245 00:10:41,020 --> 00:10:43,250 >> ΚΟΙΝΟ: Επειδή η αρχή είναι ήδη γεμάτο. 246 00:10:43,250 --> 00:10:43,575 >> JASON ΗιγβοΙίοπτ: OK. 247 00:10:43,575 --> 00:10:44,360 Η αρχή έχει ήδη πληρωθεί. 248 00:10:44,360 --> 00:10:46,090 Ποιος θέλει να επιχειρηματολογήσει εναντίον Bobby. 249 00:10:46,090 --> 00:10:47,290 Μάρκους. 250 00:10:47,290 --> 00:10:48,910 >> ΚΟΙΝΟ: Λοιπόν, ίσως θέλετε να κολλήσει στην αρχή, επειδή 251 00:10:48,910 --> 00:10:50,140 αλλιώς αν το βάλετε σε το τέλος θα έπρεπε να 252 00:10:50,140 --> 00:10:51,835 διασχίσει ολόκληρη τη λίστα. 253 00:10:51,835 --> 00:10:52,990 >> JASON ΗιγβοΙίοπτ: Ακριβώς. 254 00:10:52,990 --> 00:10:57,970 Έτσι, εάν σκεφτόμαστε εκτέλεσης, το εκτέλεσης της εισαγωγής στο τέλος 255 00:10:57,970 --> 00:11:00,110 θα είναι n, το μέγεθος αυτό. 256 00:11:00,110 --> 00:11:03,080 Ποια είναι η μεγάλη O χρόνου εκτέλεσης της εισαγωγής στην αρχή; 257 00:11:03,080 --> 00:11:04,170 Σταθερό χρόνο. 258 00:11:04,170 --> 00:11:07,075 Έτσι, αν δεν νοιάζονται για τη διατήρηση κάτι που ταξινομούνται, πολύ καλύτερα σε μόλις 259 00:11:07,075 --> 00:11:08,420 τοποθετήστε στην αρχή του καταλόγου αυτού. 260 00:11:08,420 --> 00:11:10,320 Και αυτό μπορεί να γίνει σε σταθερό χρόνο. 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 Επόμενη λειτουργία είναι να βρούμε, ποια άλλα - έχουμε διατυπωθεί αυτή η αναζήτηση. 264 00:11:18,870 --> 00:11:22,470 Αλλά θα πάμε να δούμε μέσα από το συνδεδεμένη λίστα για κάποιο αντικείμενο. 265 00:11:22,470 --> 00:11:26,000 Εσείς έχετε δει κώδικα για αναζήτηση πριν στη διάλεξη. 266 00:11:26,000 --> 00:11:29,490 Αλλά το είδος ακριβώς έκανε και με εισάγετε, ή τουλάχιστον την εισαγωγή 267 00:11:29,490 --> 00:11:30,580 κάτι να επιλυθεί. 268 00:11:30,580 --> 00:11:36,350 Μπορείτε να κοιτάξετε μέσα, θα κόμβο κόμβο, μέχρι να βρείτε τον αριθμό που είστε 269 00:11:36,350 --> 00:11:37,780 ψάχνετε. 270 00:11:37,780 --> 00:11:39,670 Τι θα συμβεί αν φτάσετε το τέλος της λίστας; 271 00:11:39,670 --> 00:11:43,020 Πείτε Ψάχνω για εννέα και φτάσει το τέλος της λίστας. 272 00:11:43,020 --> 00:11:44,270 Τι πρέπει να κάνουμε; 273 00:11:44,270 --> 00:11:47,147 274 00:11:47,147 --> 00:11:48,110 >> ΚΟΙΝΟ: Επιστροφή λάθος; 275 00:11:48,110 --> 00:11:48,690 >> JASON ΗιγβοΙίοπτ: Επιστροφή ψευδείς. 276 00:11:48,690 --> 00:11:49,960 Εμείς δεν το βρείτε. 277 00:11:49,960 --> 00:11:52,010 Εάν φτάσετε στο τέλος της λίστας και δεν βρείτε τον αριθμό είστε 278 00:11:52,010 --> 00:11:54,170 ψάχνετε, δεν είναι εκεί. 279 00:11:54,170 --> 00:11:55,420 Οποιεσδήποτε ερωτήσεις σχετικά με βρείτε; 280 00:11:55,420 --> 00:11:59,530 281 00:11:59,530 --> 00:12:04,615 Εάν αυτό ήταν μια ταξινομημένη λίστα, τι θα να είναι διαφορετική για την αναζήτηση μας; 282 00:12:04,615 --> 00:12:07,370 283 00:12:07,370 --> 00:12:08,103 Ναι. 284 00:12:08,103 --> 00:12:10,600 >> ΚΟΙΝΟ: Θα βρείτε την πρώτη τιμή αυτό είναι μεγαλύτερο από το ένα 285 00:12:10,600 --> 00:12:12,390 ψάχνετε και Στη συνέχεια επιστρέφει false. 286 00:12:12,390 --> 00:12:13,190 >> JASON ΗιγβοΙίοπτ: Ακριβώς. 287 00:12:13,190 --> 00:12:17,310 Έτσι, αν είναι μια ταξινομημένη λίστα, εάν έχουμε την ευκαιρία να κάτι που είναι μεγαλύτερο από ό, τι 288 00:12:17,310 --> 00:12:20,180 ψάχνουμε, εμείς δεν χρειάζεται να συνεχίζω στο τέλος της λίστας. 289 00:12:20,180 --> 00:12:24,060 Σε αυτό το σημείο μπορούμε να επιστρέψουμε ψευδή γιατί εμείς δεν πρόκειται να το βρείτε. 290 00:12:24,060 --> 00:12:27,340 Το ερώτημα είναι τώρα, έχουμε μιλήσει για κρατώντας συνδεδεμένες λίστες ταξινόμηση, 291 00:12:27,340 --> 00:12:28,180 διατήρησή τους αδιαχώριστα. 292 00:12:28,180 --> 00:12:30,050 Αυτό πρόκειται να είναι κάτι που είστε ίσως θα πρέπει να σκεφτούμε 293 00:12:30,050 --> 00:12:34,240 όταν το πρόβλημα που κωδικοποίησης πέντε, αν επιλέξετε ένα πίνακα κατακερματισμού με ξεχωριστό 294 00:12:34,240 --> 00:12:36,360 αλυσοποίηση προσέγγιση, η οποία θα μιλήσουμε αργότερα. 295 00:12:36,360 --> 00:12:41,400 >> Αλλά αξίζει τον κόπο να κρατήσει τη λίστα διαλογή και στη συνέχεια να είναι σε θέση να έχουν ίσως 296 00:12:41,400 --> 00:12:42,310 ταχύτερες αναζητήσεις; 297 00:12:42,310 --> 00:12:47,220 Ή μήπως είναι καλύτερο να εισάγετε γρήγορα κάτι σε συνεχή χρόνο εκτέλεσης, αλλά στη συνέχεια 298 00:12:47,220 --> 00:12:48,430 έχουν πλέον την αναζήτηση; 299 00:12:48,430 --> 00:12:52,250 Αυτό είναι ένα δίλημμα δεξιά εκεί που να αποφασίσετε τι είναι πιο κατάλληλο 300 00:12:52,250 --> 00:12:53,590 για το συγκεκριμένο πρόβλημά σας. 301 00:12:53,590 --> 00:12:56,680 Και εκεί δεν είναι απαραίτητα ένα απολύτως σωστή απάντηση. 302 00:12:56,680 --> 00:12:59,520 Αλλά είναι σίγουρα μια απόφαση που παίρνετε να κάνει, και ίσως καλό να υπερασπιστούν 303 00:12:59,520 --> 00:13:05,270 ότι, ας πούμε, ένα σχόλιο ή δύο γιατί έχετε επιλέξει ένα πάνω στο άλλο. 304 00:13:05,270 --> 00:13:06,490 >> Τέλος, η διαγραφή. 305 00:13:06,490 --> 00:13:08,100 Έχουμε δει τη διαγραφή. 306 00:13:08,100 --> 00:13:09,180 Είναι παρόμοιο με την αναζήτηση. 307 00:13:09,180 --> 00:13:11,020 Περιμένουμε για το στοιχείο. 308 00:13:11,020 --> 00:13:12,390 Πείτε προσπαθούμε να διαγράψει έξι. 309 00:13:12,390 --> 00:13:14,450 Έτσι βρίσκουμε έξι εδώ. 310 00:13:14,450 --> 00:13:18,860 Το πράγμα που πρέπει να βεβαιωθείτε ότι κάνουμε είναι ότι ό, τι είναι στραμμένη προς 311 00:13:18,860 --> 00:13:21,220 έξι - όπως βλέπουμε στο βήμα δύο εδώ κάτω - 312 00:13:21,220 --> 00:13:26,500 ό, τι είναι που δείχνουν προς έξι ανάγκες σε παραλείψετε έξι τώρα και να αλλάξει σε 313 00:13:26,500 --> 00:13:28,160 ό, τι έξι είναι στραμμένη στο. 314 00:13:28,160 --> 00:13:31,410 Δεν θέλουμε να ορφανά ποτέ το υπόλοιπο του λίστα μας από τη λήθη για να ορίσετε ότι 315 00:13:31,410 --> 00:13:32,960 προηγούμενο δείκτη. 316 00:13:32,960 --> 00:13:35,960 Και τότε, μερικές φορές, ανάλογα με σχετικά με το πρόγραμμα, που απλώς θα 317 00:13:35,960 --> 00:13:37,380 διαγράψετε αυτό το κόμβο εντελώς. 318 00:13:37,380 --> 00:13:40,135 Μερικές φορές θα θέλετε να επιστρέψετε η αξία που είναι σε αυτόν τον κόμβο. 319 00:13:40,135 --> 00:13:42,490 Έτσι, αυτό είναι το πώς η διαγραφή έργων. 320 00:13:42,490 --> 00:13:44,610 Οποιεσδήποτε ερωτήσεις σχετικά με διαγραφή; 321 00:13:44,610 --> 00:13:51,280 322 00:13:51,280 --> 00:13:53,850 >> ΚΟΙΝΟ: Έτσι, αν πρόκειται να διαγράψετε αυτό, θα μπορείτε απλά να χρησιμοποιήσετε δωρεάν, επειδή 323 00:13:53,850 --> 00:13:55,655 προφανώς ήταν malloced; 324 00:13:55,655 --> 00:13:57,976 >> JASON ΗιγβοΙίοπτ: Αν θέλετε να ελευθερώσετε κάτι που είναι ακριβώς δεξιά και 325 00:13:57,976 --> 00:13:58,540 malloced αυτό. 326 00:13:58,540 --> 00:14:00,410 Πέστε ότι ήθελε να επιστρέψει αυτή την τιμή. 327 00:14:00,410 --> 00:14:04,010 Εμείς μπορεί να επιστρέψει έξι και στη συνέχεια ελεύθερος αυτός ο κόμβος και δωρεάν κλήση σε αυτό. 328 00:14:04,010 --> 00:14:06,180 Ή θα ήθελα ίσως να καλέσετε δωρεάν το πρώτο και στη συνέχεια να επιστρέψουν έξι. 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 Οπότε ας περάσουμε στην πράξη κωδικοποίησης. 332 00:14:14,010 --> 00:14:16,090 Εμείς πάμε για να κωδικοποιήσει τις τρεις λειτουργίες. 333 00:14:16,090 --> 00:14:18,260 Η πρώτη ονομάζεται insert_node. 334 00:14:18,260 --> 00:14:22,170 Έτσι έχετε κωδικό που σας μέσω e-mail, και αν το βλέπεις αυτό αργότερα 335 00:14:22,170 --> 00:14:28,020 μπορείτε να αποκτήσετε πρόσβαση στο κώδικα σε linked.c στην ιστοσελίδα του CS50. 336 00:14:28,020 --> 00:14:30,880 Αλλά σε linked.c, υπάρχει κάποια σκελετός κώδικα που είναι ήδη 337 00:14:30,880 --> 00:14:32,280 έχουν γραφτεί για εσάς. 338 00:14:32,280 --> 00:14:34,560 Και έπειτα υπάρχει ένα ζευγάρι λειτουργίες θα πρέπει να γράψετε. 339 00:14:34,560 --> 00:14:36,380 >> Κατ 'αρχάς θα πάμε να γράψτε insert_node. 340 00:14:36,380 --> 00:14:39,800 Και τι κάνει insert_node Είναι εισάγει έναν ακέραιο. 341 00:14:39,800 --> 00:14:42,440 Και δίνετε ο ακέραιος σε μια συνδεδεμένη λίστα. 342 00:14:42,440 --> 00:14:45,470 Και συγκεκριμένα, θα πρέπει να έχετε να κρατήσει τη λίστα ταξινομημένη 343 00:14:45,470 --> 00:14:47,650 από το μικρότερο στο μεγαλύτερο. 344 00:14:47,650 --> 00:14:51,360 Επίσης, δεν θέλετε να εισαγάγετε διπλότυπα. 345 00:14:51,360 --> 00:14:54,600 Τέλος, όπως μπορείτε να δείτε insert_node επιστρέφει bool. 346 00:14:54,600 --> 00:14:57,140 Έτσι, είστε υποτίθεται για να αφήσει γνωρίζουμε ότι ο χρήστης εάν το ένθετο ήταν ή όχι 347 00:14:57,140 --> 00:15:00,800 επιτυχής με την επιστροφή αληθείς ή ψευδείς. 348 00:15:00,800 --> 00:15:02,580 Στο τέλος αυτού του προγράμματος - 349 00:15:02,580 --> 00:15:05,750 και για αυτό το στάδιο δεν χρειάζεται να ανησυχείτε για την απελευθέρωση τίποτα. 350 00:15:05,750 --> 00:15:11,790 Έτσι, το μόνο που κάνετε είναι λαμβάνοντας έναν ακέραιο και την εισαγωγή σε μια λίστα. 351 00:15:11,790 --> 00:15:13,890 >> Αυτό είναι ό, τι σου ζητάω να κάνετε τώρα. 352 00:15:13,890 --> 00:15:17,620 Και πάλι, στο linked.c, το οποίο θα όλοι, είναι ο σκελετός κώδικα. 353 00:15:17,620 --> 00:15:20,980 Και θα πρέπει να δείτε προς τα κάτω η δήλωση της συνάρτησης του δείγματος. 354 00:15:20,980 --> 00:15:27,390 Ωστόσο, πριν να υπεισέλθω σε κωδικοποίηση αυτή σε C, θα ήθελα πολύ να σας ενθαρρύνω να πάει 355 00:15:27,390 --> 00:15:29,330 μέσα από τα βήματα που έχουμε πάει την άσκηση κάθε εβδομάδα. 356 00:15:29,330 --> 00:15:31,100 Έχουμε ήδη περάσει μια εικόνα από αυτό. 357 00:15:31,100 --> 00:15:33,380 Έτσι, θα πρέπει να έχετε κάποια κατανόηση το πώς αυτό λειτουργεί. 358 00:15:33,380 --> 00:15:36,590 Αλλά θα ήθελα να σας ενθαρρύνω να γράψω κάποια pseudocode πριν από την κατάδυση in 359 00:15:36,590 --> 00:15:38,640 Και θα πάμε να πάει πέρα ​​από pseudocode ως ομάδα. 360 00:15:38,640 --> 00:15:41,470 Και στη συνέχεια, αφού έχετε γράψει σας ψευδοκώδικα, και μόλις έχουμε γράψει μας 361 00:15:41,470 --> 00:15:45,850 pseudocode ως ομάδα, μπορείτε να πάει σε κωδικοποίηση την Γ. 362 00:15:45,850 --> 00:15:49,980 >> Ως heads up, η λειτουργία insert_node είναι ίσως το πιο λεπτό του 363 00:15:49,980 --> 00:15:53,550 οι τρεις θα πάμε να γράψω λόγω του ότι προστεθεί κάποια επιπλέον περιορισμούς στην 364 00:15:53,550 --> 00:15:57,190 του προγραμματισμού σας, μεταξύ άλλων, ότι δεν πρόκειται να εισάγετε οποιαδήποτε 365 00:15:57,190 --> 00:15:59,880 αντίγραφα και ότι ο κατάλογος πρέπει να παραμείνει ταξινομημένο. 366 00:15:59,880 --> 00:16:02,660 Έτσι, αυτό είναι μια μη τετριμμένη πρόγραμμα ότι θα πρέπει να κώδικα. 367 00:16:02,660 --> 00:16:06,470 Και γιατί δεν παίρνετε επτά παρα πέντε λεπτά για να πάρει ακριβώς εργάζονται για την 368 00:16:06,470 --> 00:16:07,640 pseudocode και ο κωδικός. 369 00:16:07,640 --> 00:16:09,460 Και τότε θα αρχίσουμε πηγαίνει ως ομάδα. 370 00:16:09,460 --> 00:16:11,680 Και πάλι, αν έχετε οποιεσδήποτε ερωτήσεις μόνο σηκώστε το χέρι σας και θα έρθει γύρω. 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 >> Έχουμε, επίσης, γενικά κάνουν αυτά - 375 00:18:30,120 --> 00:18:32,070 ή δεν σας λένε ρητά μπορεί να λειτουργήσει με τους ανθρώπους. 376 00:18:32,070 --> 00:18:36,500 Αλλά, προφανώς, θα ήθελα πολύ να σας ενθαρρύνω, αν έχετε ερωτήσεις, να ζητήσει από το 377 00:18:36,500 --> 00:18:39,840 γείτονα που κάθεται δίπλα σας ή ακόμα και να συνεργαστεί με κάποιον 378 00:18:39,840 --> 00:18:40,510 αλλιώς, αν θέλετε να. 379 00:18:40,510 --> 00:18:42,600 Αυτό δεν πρέπει να είναι ένα άτομο σιωπηλή δραστηριότητα. 380 00:18:42,600 --> 00:20:11,770 381 00:20:11,770 --> 00:20:16,330 >> Ας ξεκινήσουμε με το γράψιμο μερικές pseudocode στο διοικητικό συμβούλιο. 382 00:20:16,330 --> 00:20:19,395 Ποιος μπορεί να μου δώσει την πρώτη γραμμή pseudocode για αυτό το πρόγραμμα; 383 00:20:19,395 --> 00:20:22,240 384 00:20:22,240 --> 00:20:23,640 Για αυτή τη λειτουργία, και όχι - 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 >> ΚΟΙΝΟ: Έτσι, το πρώτο πράγμα που έκανα ήταν δημιουργήσετε ένα νέο δείκτη προς τον κόμβο και εγώ 388 00:20:36,560 --> 00:20:41,320 προετοιμαστεί να δείχνουν προς την ίδια πράγμα που κατάλογος επισημαίνοντας. 389 00:20:41,320 --> 00:20:41,550 >> JASON ΗιγβοΙίοπτ: OK. 390 00:20:41,550 --> 00:20:45,190 Έτσι είστε δημιουργία ενός νέου δείκτη στη λίστα, όχι στον κόμβο. 391 00:20:45,190 --> 00:20:45,420 >> ΚΟΙΝΟ: Σωστά. 392 00:20:45,420 --> 00:20:46,150 Ναι. 393 00:20:46,150 --> 00:20:46,540 >> JASON ΗιγβοΙίοπτ: OK. 394 00:20:46,540 --> 00:20:48,221 Και τότε τι θέλουμε να κάνουμε; 395 00:20:48,221 --> 00:20:49,163 Τι μετά από αυτό; 396 00:20:49,163 --> 00:20:50,105 Τι γίνεται με τον κόμβο; 397 00:20:50,105 --> 00:20:51,050 Δεν έχουμε έναν κόμβο. 398 00:20:51,050 --> 00:20:52,300 Απλά έχουν μια τιμή. 399 00:20:52,300 --> 00:20:55,918 400 00:20:55,918 --> 00:20:58,890 Εάν θέλετε να εισαγάγετε ένα κόμβο, τι κάνουμε εμείς πρέπει να κάνετε πρώτα, πριν μπορούμε ακόμη 401 00:20:58,890 --> 00:20:59,980 σκεφτείτε την τοποθετήσετε; 402 00:20:59,980 --> 00:21:00,820 >> ΚΟΙΝΟ: Συγγνώμη. 403 00:21:00,820 --> 00:21:02,160 πρέπει να malloc χώρο για ένα κόμβο. 404 00:21:02,160 --> 00:21:02,455 >> JASON ΗιγβοΙίοπτ: Εξαιρετική. 405 00:21:02,455 --> 00:21:03,210 Ας κάνουμε - 406 00:21:03,210 --> 00:21:04,628 OK. 407 00:21:04,628 --> 00:21:06,065 Δεν μπορεί να φτάσει τόσο ψηλά. 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 Εμείς πάμε για να πάει κάτω, και στη συνέχεια είμαστε με δύο στήλες. 411 00:21:13,236 --> 00:21:13,732 Δεν μπορώ να πάω ότι - 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 Δημιουργήστε ένα νέο κόμβο. 415 00:21:25,130 --> 00:21:29,380 Μπορείτε να δημιουργήσετε έναν άλλο δείκτη στη λίστα ή τη λίστα, μπορείτε να χρησιμοποιήσετε ακριβώς όπως υπάρχει. 416 00:21:29,380 --> 00:21:30,720 Μπορείτε πραγματικά δεν χρειάζεται να το κάνουμε αυτό. 417 00:21:30,720 --> 00:21:31,750 >> Έτσι δημιουργούμε ένα νέο κόμβο. 418 00:21:31,750 --> 00:21:32,010 Μεγάλη. 419 00:21:32,010 --> 00:21:32,840 Αυτό είναι ό, τι κάνουμε πρώτα. 420 00:21:32,840 --> 00:21:34,870 Ποιο είναι το επόμενο; 421 00:21:34,870 --> 00:21:35,080 >> ΚΟΙΝΟ: Περιμένετε. 422 00:21:35,080 --> 00:21:38,330 Θα πρέπει να δημιουργήσουμε ένα νέο κόμβο τώρα ή θα πρέπει να περιμένουμε για να βεβαιωθείτε ότι 423 00:21:38,330 --> 00:21:42,260 δεν υπάρχει καμία αντίγραφα του κόμβου στη λίστα πριν τη δημιουργία του; 424 00:21:42,260 --> 00:21:43,100 >> JASON ΗιγβοΙίοπτ: Καλή ερώτηση. 425 00:21:43,100 --> 00:21:47,770 Ας κρατήσει ότι για αργότερα, επειδή η πλειοψηφία του χρόνου θα είναι η δημιουργία 426 00:21:47,770 --> 00:21:48,220 ένας νέος κόμβος. 427 00:21:48,220 --> 00:21:49,110 Γι 'αυτό και θα κρατήσει αυτό εδώ. 428 00:21:49,110 --> 00:21:51,006 Αλλά αυτό είναι μια καλή ερώτηση. 429 00:21:51,006 --> 00:21:53,250 Αν θέλουμε να δημιουργήσουμε και να βρούμε ένα αντίγραφο, τι θα έπρεπε 430 00:21:53,250 --> 00:21:54,490 κάνουμε πριν από την επιστροφή; 431 00:21:54,490 --> 00:21:55,190 >> ΚΟΙΝΟ: Ελευθερώστε το. 432 00:21:55,190 --> 00:21:55,470 >> JASON ΗιγβοΙίοπτ: Ναι. 433 00:21:55,470 --> 00:21:56,500 Πιθανώς να απελευθερώσει. 434 00:21:56,500 --> 00:21:56,760 OK. 435 00:21:56,760 --> 00:21:59,850 Τι κάνουμε μετά εμείς δημιουργήσετε ένα νέο κόμβο; 436 00:21:59,850 --> 00:22:02,260 Annie; 437 00:22:02,260 --> 00:22:04,780 >> ΚΟΙΝΟ: Βάζουμε το αριθμός στον κόμβο; 438 00:22:04,780 --> 00:22:05,140 >> JASON ΗιγβοΙίοπτ: Ακριβώς. 439 00:22:05,140 --> 00:22:07,190 Βάζουμε τον αριθμό - που malloc χώρο. 440 00:22:07,190 --> 00:22:08,160 Πάω να το αφήσουμε όλα σε μία γραμμή. 441 00:22:08,160 --> 00:22:08,720 Αλλά έχεις δίκιο. 442 00:22:08,720 --> 00:22:10,305 Εμείς malloc χώρο, και στη συνέχεια έχουμε θέσει τον αριθμό in 443 00:22:10,305 --> 00:22:12,585 Μπορούμε επίσης να ρυθμίσετε το δείκτη τμήμα της στο μηδέν. 444 00:22:12,585 --> 00:22:13,720 Αυτό είναι ακριβώς σωστό. 445 00:22:13,720 --> 00:22:17,400 Και τότε τι γίνεται μετά από αυτό; 446 00:22:17,400 --> 00:22:18,490 Εμείς επέστησε την εικόνα αυτή στο διοικητικό συμβούλιο. 447 00:22:18,490 --> 00:22:21,190 Οπότε τι κάνουμε; 448 00:22:21,190 --> 00:22:22,680 >> ΚΟΙΝΟ: Έχουμε περάσει μέσα από τη λίστα. 449 00:22:22,680 --> 00:22:23,930 >> JASON ΗιγβοΙίοπτ: Περάστε από τη λίστα. 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 Και τι θα ελέγξει για κάθε κόμβο. 453 00:22:34,280 --> 00:22:35,955 Kurt, τι ελέγχουμε για κάθε κόμβο; 454 00:22:35,955 --> 00:22:41,640 >> ΚΟΙΝΟ: Δείτε αν η τιμή του n ότι ο κόμβος είναι μεγαλύτερη από την τιμή n 455 00:22:41,640 --> 00:22:43,070 του κόμβου μας. 456 00:22:43,070 --> 00:22:43,340 >> JASON ΗιγβοΙίοπτ: OK. 457 00:22:43,340 --> 00:22:44,280 Πάω να κάνω - 458 00:22:44,280 --> 00:22:45,855 Ναι, εντάξει. 459 00:22:45,855 --> 00:22:48,160 Έτσι είναι n - 460 00:22:48,160 --> 00:22:59,040 Πάω να πω αν η αξία είναι μεγαλύτερη από αυτόν τον κόμβο, τότε τι κάνουμε; 461 00:22:59,040 --> 00:23:07,290 >> ΚΟΙΝΟ: Λοιπόν, τότε εισάγουμε το πράγμα ακριβώς πριν από αυτό. 462 00:23:07,290 --> 00:23:07,970 >> JASON ΗιγβοΙίοπτ: OK. 463 00:23:07,970 --> 00:23:09,410 Οπότε αν είναι μεγαλύτερο από αυτό, τότε θα θέλετε να εισαγάγετε. 464 00:23:09,410 --> 00:23:14,010 Αλλά θέλουμε να το τοποθετήσετε σωστά πριν διότι και εμείς θα πρέπει να είναι 465 00:23:14,010 --> 00:23:16,070 την παρακολούθηση, στη συνέχεια, από ό, τι ήταν πριν. 466 00:23:16,070 --> 00:23:22,690 Έτσι, πριν από την εισαγωγή. 467 00:23:22,690 --> 00:23:25,120 Γι 'αυτό και ίσως χάσει κάτι νωρίτερα. 468 00:23:25,120 --> 00:23:27,770 Εμείς μάλλον θα πρέπει να κρατώντας παρακολουθείτε τι συμβαίνει. 469 00:23:27,770 --> 00:23:28,460 Αλλά θα φτάσουμε εκεί πίσω. 470 00:23:28,460 --> 00:23:30,160 Έτσι, ποια αξία είναι μικρότερη από ό, τι; 471 00:23:30,160 --> 00:23:38,030 472 00:23:38,030 --> 00:23:39,710 Kurt, τι θα κάνουμε αν η αξία είναι μικρότερη από ό, τι; 473 00:23:39,710 --> 00:23:43,000 >> ΚΟΙΝΟ: Στη συνέχεια, μπορείτε απλά συνεχίστε αν δεν είναι η τελευταία. 474 00:23:43,000 --> 00:23:43,550 >> JASON ΗιγβοΙίοπτ: Μου αρέσει αυτό. 475 00:23:43,550 --> 00:23:44,800 Έτσι, πηγαίνετε στον επόμενο κόμβο. 476 00:23:44,800 --> 00:23:47,410 477 00:23:47,410 --> 00:23:48,930 Εκτός και αν είναι η τελευταία - 478 00:23:48,930 --> 00:23:51,100 είμαστε κατά πάσα πιθανότητα τον έλεγχο για αυτό σύμφωνα με τους όρους μιας κατάστασης. 479 00:23:51,100 --> 00:23:54,870 Αλλά ναι, το επόμενο κόμβο. 480 00:23:54,870 --> 00:23:58,680 Και αυτό είναι να πάρει πάρα πολύ χαμηλή, έτσι θα προχωρήσουμε εδώ. 481 00:23:58,680 --> 00:24:02,030 Αλλά αν - 482 00:24:02,030 --> 00:24:03,280 μπορεί ο καθένας βλέπεις αυτό; 483 00:24:03,280 --> 00:24:07,230 484 00:24:07,230 --> 00:24:11,610 Αν είμαστε ίσα τι κάνουμε; 485 00:24:11,610 --> 00:24:15,740 Εάν η τιμή που προσπαθούμε να εισάγετε είναι ίση με την αξία αυτού του κόμβου; 486 00:24:15,740 --> 00:24:16,320 Ναι; 487 00:24:16,320 --> 00:24:18,400 >> ΚΟΙΝΟ: [δεν ακούγεται]. 488 00:24:18,400 --> 00:24:18,850 >> JASON ΗιγβοΙίοπτ: Ναι. 489 00:24:18,850 --> 00:24:19,290 Λαμβάνοντας υπόψη αυτό - 490 00:24:19,290 --> 00:24:20,090 Μάρκους είναι σωστό. 491 00:24:20,090 --> 00:24:21,330 Θα μπορούσαμε να είχαμε ίσως κάνει κάτι διαφορετικό. 492 00:24:21,330 --> 00:24:25,360 Αλλά δεδομένου ότι έχουμε το δημιούργησε, εδώ θα πρέπει να ελευθερώσετε και στη συνέχεια επιστρέφουν. 493 00:24:25,360 --> 00:24:26,774 Oh boy. 494 00:24:26,774 --> 00:24:30,080 Είναι ότι καλύτερο; 495 00:24:30,080 --> 00:24:31,850 Πώς σου φαίνεται αυτό; 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 Δωρεάν και τότε τι κάνουμε εμείς επιστρέψει, [δεν ακούγεται]; 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 Μήπως λείπει κάτι; 502 00:24:45,360 --> 00:24:53,500 503 00:24:53,500 --> 00:24:59,650 Έτσι, όταν είμαστε παρακολούθηση της προηγούμενης κόμβου; 504 00:24:59,650 --> 00:25:02,370 >> ΚΟΙΝΟ: Νομίζω ότι θα πάει μετά τη δημιουργία ενός νέου κόμβου. 505 00:25:02,370 --> 00:25:02,600 >> JASON ΗιγβοΙίοπτ: OK. 506 00:25:02,600 --> 00:25:03,940 Έτσι, στην αρχή θα χρειαστεί κατά πάσα πιθανότητα - 507 00:25:03,940 --> 00:25:07,175 ναι, μπορούμε να δημιουργήσουμε ένα δείκτη σε μια νέα κόμβο, σαν ένα προηγούμενο δείκτη κόμβο και 508 00:25:07,175 --> 00:25:09,600 ένα δείκτη τρέχουσας κόμβο. 509 00:25:09,600 --> 00:25:12,640 Έτσι, ας προσθέσουμε ότι εδώ. 510 00:25:12,640 --> 00:25:15,610 511 00:25:15,610 --> 00:25:26,900 Δημιουργία τρέχουσα και τις προηγούμενες δείκτες προς τους κόμβους. 512 00:25:26,900 --> 00:25:28,955 Αλλά όταν εμείς προσαρμοστούν οι εν λόγω δείκτες; 513 00:25:28,955 --> 00:25:30,205 Όταν το κάνουμε αυτό στον κώδικα; 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 >> ΚΟΙΝΟ: - συνθήκες αξία; 517 00:25:35,170 --> 00:25:36,420 >> JASON ΗιγβοΙίοπτ: Ποια ένα ιδιαίτερα; 518 00:25:36,420 --> 00:25:39,862 519 00:25:39,862 --> 00:25:40,720 >> ΚΟΙΝΟ: Είμαι απλά σύγχυση. 520 00:25:40,720 --> 00:25:44,200 Αν η τιμή είναι μεγαλύτερη από αυτόν τον κόμβο, Δεν σημαίνει αυτό ότι θέλετε να πάτε 521 00:25:44,200 --> 00:25:45,320 στον επόμενο κόμβο; 522 00:25:45,320 --> 00:25:49,515 >> JASON Hirschhorn: Έτσι, αν η αξία μας είναι μεγαλύτερη από την αξία αυτού του κόμβου. 523 00:25:49,515 --> 00:25:52,130 >> ΚΟΙΝΟ: Ναι, τότε θα θέλετε να προχωρήσει περαιτέρω κάτω από τη γραμμή, έτσι δεν είναι; 524 00:25:52,130 --> 00:25:52,590 >> JASON Hirschhorn: Σωστά. 525 00:25:52,590 --> 00:25:53,840 Γι 'αυτό και δεν την εισάγετε εδώ. 526 00:25:53,840 --> 00:25:58,430 527 00:25:58,430 --> 00:26:03,240 Αν η τιμή είναι μικρότερη από αυτόν τον κόμβο, στη συνέχεια, πάμε στον επόμενο κόμβο - ή τότε 528 00:26:03,240 --> 00:26:03,835 εισάγετε πριν. 529 00:26:03,835 --> 00:26:05,966 >> ΚΟΙΝΟ: Περιμένετε, το οποίο είναι αυτό κόμβο και το οποίο είναι η αξία; 530 00:26:05,966 --> 00:26:08,510 531 00:26:08,510 --> 00:26:09,280 >> JASON Hirschhorn: Καλή ερώτηση. 532 00:26:09,280 --> 00:26:13,260 Αξία ανά ορισμό αυτής της συνάρτησης είναι αυτό που μας δίνεται. 533 00:26:13,260 --> 00:26:16,910 Έτσι, η τιμή είναι ο αριθμός μας δίνεται. 534 00:26:16,910 --> 00:26:21,120 Έτσι, αν η τιμή είναι μικρότερη από αυτή κόμβο, χρειαζόμαστε χρόνο για να εισαγάγετε. 535 00:26:21,120 --> 00:26:24,575 Αν η τιμή είναι μεγαλύτερη από αυτόν τον κόμβο, πάμε στον επόμενο κόμβο. 536 00:26:24,575 --> 00:26:26,790 Και πίσω στην αρχική ερώτηση, όμως, όπου - 537 00:26:26,790 --> 00:26:29,060 >> ΚΟΙΝΟ: Εάν η τιμή είναι μεγαλύτερη από αυτόν τον κόμβο. 538 00:26:29,060 --> 00:26:30,310 >> JASON Hirschhorn: Και έτσι τι κάνουμε εδώ; 539 00:26:30,310 --> 00:26:36,790 540 00:26:36,790 --> 00:26:38,160 Sweet. 541 00:26:38,160 --> 00:26:38,860 Αυτό είναι σωστό. 542 00:26:38,860 --> 00:26:41,370 Είμαι ακριβώς πρόκειται να γράψω ενημέρωση δείκτες. 543 00:26:41,370 --> 00:26:44,010 Αλλά ναι, με το σημερινό που θα τον ενημερώνει για την 544 00:26:44,010 --> 00:26:46,080 σημείο στο επόμενο. 545 00:26:46,080 --> 00:26:47,330 Οτιδήποτε άλλο μας λείπει; 546 00:26:47,330 --> 00:26:52,710 547 00:26:52,710 --> 00:26:54,940 Έτσι, Πάω να πληκτρολογήσετε αυτό κωδικοποιήσει σε gedit. 548 00:26:54,940 --> 00:26:58,375 Και ενώ το κάνετε αυτό, μπορείτε να έχετε ένα ζευγάρι περισσότερα λεπτά για να εργαστεί για την κωδικοποίηση 549 00:26:58,375 --> 00:28:19,240 αυτό C. 550 00:28:19,240 --> 00:28:20,940 >> Έτσι έχω την είσοδο ψευδοκώδικα. 551 00:28:20,940 --> 00:28:22,940 Μια γρήγορη σημείωση πριν ξεκινήσουμε. 552 00:28:22,940 --> 00:28:25,560 Εμείς μπορεί να μην είναι σε θέση να εντελώς τελειώσει αυτό σε όλες τις 553 00:28:25,560 --> 00:28:27,300 τρεις από αυτές τις λειτουργίες. 554 00:28:27,300 --> 00:28:30,630 Υπάρχει σωστές λύσεις σε αυτά ότι θα e-mail για να σας παιδιά 555 00:28:30,630 --> 00:28:33,730 Μετά το σημείο, και θα να αναρτηθεί στην CS50.net. 556 00:28:33,730 --> 00:28:35,640 Γι 'αυτό δεν σας ενθαρρύνουμε να πηγαίνετε να δείτε στα τμήματα. 557 00:28:35,640 --> 00:28:40,550 Θα σας ενθαρρύνουν να δοκιμάσετε αυτά για σας κατέχουν, και στη συνέχεια χρησιμοποιήστε το την πρακτική 558 00:28:40,550 --> 00:28:41,760 προβλήματα για να ελέγξετε τις απαντήσεις σας. 559 00:28:41,760 --> 00:28:47,070 Αυτά όλα έχουν σχεδιαστεί για εκ του σύνεγγυς αφορούν και να τηρούν σε ό, τι 560 00:28:47,070 --> 00:28:48,400 που έχετε να κάνετε για το σύνολο του προβλήματος. 561 00:28:48,400 --> 00:28:53,820 Γι 'αυτό σας ενθαρρύνουμε να ασκήσετε αυτό για τη δική σας και στη συνέχεια χρησιμοποιήστε τον κωδικό για να 562 00:28:53,820 --> 00:28:54,660 ελέγξετε τις απαντήσεις σας. 563 00:28:54,660 --> 00:28:57,060 Επειδή θέλω να προχωρήσουμε σε hash τραπέζια σε κάποιο σημείο στην ενότητα. 564 00:28:57,060 --> 00:28:58,150 Έτσι, θα μπορούσαμε να μην περάσει όλα. 565 00:28:58,150 --> 00:28:59,960 Αλλά εμείς θα κάνουμε ό, τι μπορούμε τώρα. 566 00:28:59,960 --> 00:29:00,370 >> OK. 567 00:29:00,370 --> 00:29:01,960 Ας ξεκινήσουμε. 568 00:29:01,960 --> 00:29:04,770 Ασάμ, πώς μπορούμε να δημιουργήσουμε ένα νέο κόμβο; 569 00:29:04,770 --> 00:29:06,810 >> ΚΟΙΝΟ: Μπορείτε να το κάνετε struct *. 570 00:29:06,810 --> 00:29:09,640 >> JASON Hirschhorn: Γι 'αυτό και έχει ότι μέχρι εδώ. 571 00:29:09,640 --> 00:29:10,040 Ω, συγγνώμη. 572 00:29:10,040 --> 00:29:13,530 Έλεγες struct *. 573 00:29:13,530 --> 00:29:17,260 >> ΚΟΙΝΟ: Και τότε [? είδος?] κόμβου ή γ κόμβο. 574 00:29:17,260 --> 00:29:17,780 >> JASON Hirschhorn: OK. 575 00:29:17,780 --> 00:29:19,740 Πάω να το ονομάσουμε new_node ώστε να μπορούμε να παραμείνουμε συνεπείς. 576 00:29:19,740 --> 00:29:22,646 577 00:29:22,646 --> 00:29:33,180 >> ΚΟΙΝΟ: Και θέλετε να ορίσετε ότι στο κεφάλι, τον πρώτο κόμβο. 578 00:29:33,180 --> 00:29:33,580 >> JASON Hirschhorn: OK. 579 00:29:33,580 --> 00:29:37,290 Έτσι, τώρα αυτό που δείχνουν προς - έτσι αυτό δεν έχει δημιουργήσει ένα νέο κόμβο ακόμα. 580 00:29:37,290 --> 00:29:41,380 Αυτό είναι ακριβώς που δείχνουν προς το πρώτο κόμβο στη λίστα. 581 00:29:41,380 --> 00:29:42,630 Πώς μπορώ να δημιουργήσω ένα νέο κόμβο; 582 00:29:42,630 --> 00:29:45,490 583 00:29:45,490 --> 00:29:48,070 Αν χρειαστεί χώρο για να δημιουργήσετε ένα νέο κόμβο. 584 00:29:48,070 --> 00:29:49,230 Malloc. 585 00:29:49,230 --> 00:29:51,710 Και πόσο μεγάλο είναι; 586 00:29:51,710 --> 00:30:00,390 >> ΚΟΙΝΟ: Το μέγεθος του struct. 587 00:30:00,390 --> 00:30:01,150 >> JASON Hirschhorn: Η μέγεθος του struct. 588 00:30:01,150 --> 00:30:02,400 Και ποιο είναι το struct που ονομάζεται; 589 00:30:02,400 --> 00:30:09,670 590 00:30:09,670 --> 00:30:09,840 >> ΚΟΙΝΟ: Κόμβος; 591 00:30:09,840 --> 00:30:11,640 >> JASON Hirschhorn: Κόμβος. 592 00:30:11,640 --> 00:30:17,640 Έτσι malloc (sizeof (node))? μας δίνει χώρο. 593 00:30:17,640 --> 00:30:19,740 Και είναι αυτή η γραμμή - 594 00:30:19,740 --> 00:30:21,740 ένα πράγμα είναι λανθασμένη σε αυτή τη γραμμή. 595 00:30:21,740 --> 00:30:24,430 Είναι ένας δείκτης σε μια struct new_node; 596 00:30:24,430 --> 00:30:25,650 Αυτό είναι ένα γενικό όνομα. 597 00:30:25,650 --> 00:30:26,520 Τι είναι αυτό - 598 00:30:26,520 --> 00:30:27,450 κόμβο, ακριβώς. 599 00:30:27,450 --> 00:30:29,340 Είναι ένας κόμβος *. 600 00:30:29,340 --> 00:30:33,010 Και τι κάνουμε αμέσως μετά εμείς malloc κάτι, Asan; 601 00:30:33,010 --> 00:30:34,476 Ποιο είναι το πρώτο πράγμα που κάνουμε; 602 00:30:34,476 --> 00:30:38,850 603 00:30:38,850 --> 00:30:40,320 Τι γίνεται αν δεν λειτουργεί; 604 00:30:40,320 --> 00:30:42,430 >> ΚΟΙΝΟ: Ω, ελέγξτε αν επισημαίνει στον κόμβο; 605 00:30:42,430 --> 00:30:43,310 >> JASON Hirschhorn: Ακριβώς. 606 00:30:43,310 --> 00:30:46,750 Έτσι, αν new_node ισούται ισούται null, τι κάνουμε; 607 00:30:46,750 --> 00:30:51,650 608 00:30:51,650 --> 00:30:54,820 Αυτό επιστρέφει bool, αυτή τη λειτουργία. 609 00:30:54,820 --> 00:30:57,760 Ακριβώς. 610 00:30:57,760 --> 00:30:58,450 Φαίνεται καλό. 611 00:30:58,450 --> 00:30:59,680 Οτιδήποτε για να προσθέσετε; 612 00:30:59,680 --> 00:31:00,670 Θα προσθέσουμε τα πράγματα στο τέλος. 613 00:31:00,670 --> 00:31:03,160 Αλλά αυτό μέχρι στιγμής φαίνεται καλό. 614 00:31:03,160 --> 00:31:06,170 Δημιουργία τρέχουσα και τις προηγούμενες υποδείξεις. 615 00:31:06,170 --> 00:31:08,650 Μιχαήλ, πώς μπορώ να κάνω αυτό; 616 00:31:08,650 --> 00:31:12,810 >> ΚΟΙΝΟ: Θα πρέπει να κάνει έναν κόμβο *. 617 00:31:12,810 --> 00:31:21,800 618 00:31:21,800 --> 00:31:25,502 Θα έπρεπε να κάνουν ένα δεν για new_node αλλά και για την 619 00:31:25,502 --> 00:31:26,905 κόμβους που ήδη έχουμε. 620 00:31:26,905 --> 00:31:27,230 >> JASON Hirschhorn: OK. 621 00:31:27,230 --> 00:31:29,255 Έτσι, ο τρέχων κόμβος είμαστε σε. 622 00:31:29,255 --> 00:31:30,505 Θα πάρω αυτό το curr. 623 00:31:30,505 --> 00:31:39,650 624 00:31:39,650 --> 00:31:39,770 Εντάξει. 625 00:31:39,770 --> 00:31:41,620 Έχουμε αποφασίσει ότι θέλετε να κρατήσετε δύο, διότι πρέπει να γνωρίζουμε 626 00:31:41,620 --> 00:31:42,870 τι είναι πριν από αυτό. 627 00:31:42,870 --> 00:31:45,770 628 00:31:45,770 --> 00:31:47,020 Τι να προετοιμαστεί για να? 629 00:31:47,020 --> 00:31:49,874 630 00:31:49,874 --> 00:31:54,180 >> ΚΟΙΝΟ: Η αξία τους στη λίστα μας. 631 00:31:54,180 --> 00:31:58,090 >> JASON Hirschhorn: Έτσι ποια είναι η το πρώτο πράγμα στη λίστα μας; 632 00:31:58,090 --> 00:32:04,050 Ή πώς ξέρουμε όπου η αρχή της λίστας μας είναι; 633 00:32:04,050 --> 00:32:08,015 >> ΚΟΙΝΟ: Δεν είναι πέρασε στη λειτουργία; 634 00:32:08,015 --> 00:32:08,466 >> JASON Hirschhorn: Σωστά. 635 00:32:08,466 --> 00:32:09,716 Αυτό ψηφίστηκε το δικαίωμα εδώ. 636 00:32:09,716 --> 00:32:15,910 637 00:32:15,910 --> 00:32:18,980 Έτσι, αν έχει περάσει στη λειτουργία, η ξεκινήσει από τη λίστα, αυτό θα πρέπει να έχουμε 638 00:32:18,980 --> 00:32:21,270 ορίσετε την τρέχουσα ίσο με; 639 00:32:21,270 --> 00:32:22,110 >> ΚΟΙΝΟ: List. 640 00:32:22,110 --> 00:32:22,900 >> JASON Hirschhorn: List. 641 00:32:22,900 --> 00:32:24,090 Αυτό είναι ακριβώς σωστό. 642 00:32:24,090 --> 00:32:26,290 Τώρα έχει τη διεύθυνση του η αρχή της λίστας μας. 643 00:32:26,290 --> 00:32:28,450 Και τι γίνεται με τα προηγούμενα; 644 00:32:28,450 --> 00:32:31,920 >> ΚΟΙΝΟ: Λίστα μείον ένα; 645 00:32:31,920 --> 00:32:32,690 >> JASON Hirschhorn: Δεν υπάρχει τίποτα πριν από αυτό. 646 00:32:32,690 --> 00:32:34,580 Τι μπορούμε λοιπόν να κάνουμε για να δηλώσουν τίποτα; 647 00:32:34,580 --> 00:32:35,050 >> ΚΟΙΝΟ: Null. 648 00:32:35,050 --> 00:32:35,450 >> JASON Hirschhorn: Ναι. 649 00:32:35,450 --> 00:32:37,950 Αυτό ακούγεται σαν μια καλή ιδέα. 650 00:32:37,950 --> 00:32:38,360 Τέλεια. 651 00:32:38,360 --> 00:32:39,630 Σας ευχαριστώ. 652 00:32:39,630 --> 00:32:42,850 Περάστε από τη λίστα. 653 00:32:42,850 --> 00:32:45,490 Κωνσταντίνου, πόσο καιρό θα πάμε να περάσουν από τη λίστα; 654 00:32:45,490 --> 00:32:49,010 >> ΚΟΙΝΟ: Μέχρι Φτάνουμε null. 655 00:32:49,010 --> 00:32:49,390 >> JASON Hirschhorn: OK. 656 00:32:49,390 --> 00:32:50,430 Έτσι, αν, ενώ για βρόγχο. 657 00:32:50,430 --> 00:32:52,200 Τι κάνουμε; 658 00:32:52,200 --> 00:32:53,320 >> ΚΟΙΝΟ: Ίσως ένα για βρόχο; 659 00:32:53,320 --> 00:32:53,910 >> JASON Hirschhorn: Ας κάνουμε ένα βρόχο. 660 00:32:53,910 --> 00:32:55,870 OK. 661 00:32:55,870 --> 00:33:02,465 >> ΚΟΙΝΟ: Και λέμε για - 662 00:33:02,465 --> 00:33:09,764 663 00:33:09,764 --> 00:33:13,390 μέχρι την τρέχουσα δείκτη δεν είναι ίση με null. 664 00:33:13,390 --> 00:33:19,160 >> JASON Hirschhorn: Έτσι, αν γνωρίζουμε ότι η κατάσταση, πώς μπορούμε να γράψει ένα βρόχο 665 00:33:19,160 --> 00:33:21,740 βασίζεται στα ανοικτά αυτή την κατάσταση. 666 00:33:21,740 --> 00:33:24,380 Τι είδους βρόχου θα πρέπει να χρησιμοποιήσουμε; 667 00:33:24,380 --> 00:33:25,260 >> ΚΟΙΝΟ: Ενώ. 668 00:33:25,260 --> 00:33:25,590 >> JASON Hirschhorn: Ναι. 669 00:33:25,590 --> 00:33:27,130 Αυτό είναι πιο λογικό με βάση μακριά από αυτό που είπατε. 670 00:33:27,130 --> 00:33:29,430 Αν απλά θέλετε να πάτε σε μας θα ήταν Απλά ξέρω αυτό το πράγμα, θα ήταν 671 00:33:29,430 --> 00:33:31,680 δεν έχει νόημα σε ένα βρόχο while. 672 00:33:31,680 --> 00:33:39,880 Ενώ η σημερινή δεν είναι ίσο με null, αν η τιμή είναι μικρότερη από αυτόν τον κόμβο. 673 00:33:39,880 --> 00:33:41,650 Akshar, να μου δώσει αυτή τη γραμμή. 674 00:33:41,650 --> 00:33:48,810 675 00:33:48,810 --> 00:33:56,955 >> ΚΟΙΝΟ: Εάν η τρέχουσα-> n n λιγότερο από την αξία. 676 00:33:56,955 --> 00:34:00,170 677 00:34:00,170 --> 00:34:03,260 Ή να αντιστρέψει αυτό. 678 00:34:03,260 --> 00:34:06,140 Ενεργοποιήστε αυτό το στήριγμα. 679 00:34:06,140 --> 00:34:06,620 >> JASON Hirschhorn: Συγγνώμη. 680 00:34:06,620 --> 00:34:08,760 >> ΚΟΙΝΟ: Αλλάξτε το στήριγμα. 681 00:34:08,760 --> 00:34:10,914 >> JASON Hirschhorn: Έτσι, αν είναι μεγαλύτερη από την τιμή. 682 00:34:10,914 --> 00:34:18,719 683 00:34:18,719 --> 00:34:22,120 Επειδή αυτό είναι σύγχυση με το σχόλιο παραπάνω, Πάω να το κάνουμε αυτό. 684 00:34:22,120 --> 00:34:22,480 Αλλά ναι. 685 00:34:22,480 --> 00:34:25,125 Αν η αξία μας είναι μικρότερο από αυτό κόμβο, τι κάνουμε; 686 00:34:25,125 --> 00:34:25,540 Αχ. 687 00:34:25,540 --> 00:34:26,710 Το έχω εδώ. 688 00:34:26,710 --> 00:34:27,960 Εισάγετε πριν. 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 Πώς θα το κάνουμε αυτό; 692 00:34:33,933 --> 00:34:34,900 >> ΚΟΙΝΟ: Είναι ακόμα μου; 693 00:34:34,900 --> 00:34:36,150 >> JASON Hirschhorn: Ναι. 694 00:34:36,150 --> 00:34:38,520 695 00:34:38,520 --> 00:34:39,770 >> ΚΟΙΝΟ: Μπορείτε - 696 00:34:39,770 --> 00:34:42,909 697 00:34:42,909 --> 00:34:44,159 new_node-> επόμενο. 698 00:34:44,159 --> 00:34:46,770 699 00:34:46,770 --> 00:34:50,163 >> JASON Hirschhorn: Λοιπόν, τι είναι ότι πρόκειται να ισούται; 700 00:34:50,163 --> 00:34:52,070 >> ΚΟΙΝΟ: Δεν πρόκειται να ίση ρεύμα. 701 00:34:52,070 --> 00:34:53,889 >> JASON Hirschhorn: Ακριβώς. 702 00:34:53,889 --> 00:34:55,730 Και έτσι το άλλο - 703 00:34:55,730 --> 00:34:56,730 τι άλλο θα πρέπει να ενημερώσετε; 704 00:34:56,730 --> 00:34:59,982 >> ΚΟΙΝΟ: Ελέγξτε εάν το παρελθόν ισούται με null. 705 00:34:59,982 --> 00:35:01,870 >> JASON Hirschhorn: Αν prev - 706 00:35:01,870 --> 00:35:03,730 οπότε αν προηγ ισούται με null. 707 00:35:03,730 --> 00:35:05,990 >> ΚΟΙΝΟ: Αυτό σημαίνει ότι πρόκειται για να γίνει το κεφάλι. 708 00:35:05,990 --> 00:35:06,780 >> JASON Hirschhorn: Αυτό σημαίνει ότι έχει γίνει το κεφάλι. 709 00:35:06,780 --> 00:35:07,620 Και τότε τι θα κάνουμε; 710 00:35:07,620 --> 00:35:12,510 >> ΚΟΙΝΟ: Κάνουμε το κεφάλι ισούται new_node. 711 00:35:12,510 --> 00:35:16,690 >> JASON Hirschhorn: Head ισούται με new_node. 712 00:35:16,690 --> 00:35:20,540 Και γιατί το κεφάλι εδώ, δεν λίστα; 713 00:35:20,540 --> 00:35:24,940 >> ΚΟΙΝΟ: Επειδή το κεφάλι είναι μια παγκόσμια μεταβλητή, η οποία είναι η αρχική θέση. 714 00:35:24,940 --> 00:35:26,190 >> JASON Hirschhorn: Sweet. 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 Και - 718 00:35:36,150 --> 00:35:53,796 >> ΚΟΙΝΟ: Τότε έχετε άλλο προηγ-> επόμενη ισούται new_node. 719 00:35:53,796 --> 00:35:55,080 Και τότε θα επιστρέψει αλήθεια. 720 00:35:55,080 --> 00:35:59,560 721 00:35:59,560 --> 00:36:02,700 >> JASON Hirschhorn: Πού θέτουμε τέλος new_node; 722 00:36:02,700 --> 00:36:04,850 >> ΚΟΙΝΟ: Θα ήθελα - 723 00:36:04,850 --> 00:36:06,180 Μπορώ να ορίσω ότι στην αρχή. 724 00:36:06,180 --> 00:36:07,430 >> JASON Hirschhorn: Λοιπόν, τι γραμμή; 725 00:36:07,430 --> 00:36:10,000 726 00:36:10,000 --> 00:36:12,598 >> ΚΟΙΝΟ: Μετά την δήλωση if τον έλεγχο, αν είναι γνωστή. 727 00:36:12,598 --> 00:36:13,057 >> JASON Hirschhorn: Δικαίωμα εδώ; 728 00:36:13,057 --> 00:36:18,335 >> ΚΟΙΝΟ: Θα έκανα new_node-> n ισούται με την αξία. 729 00:36:18,335 --> 00:36:19,585 >> JASON Hirschhorn: Ακούγεται καλό. 730 00:36:19,585 --> 00:36:21,740 731 00:36:21,740 --> 00:36:25,090 Μάλλον είναι λογικό - δεν το κάνουμε Πρέπει να ξέρετε τι λίστα είμαστε σε 732 00:36:25,090 --> 00:36:26,280 επειδή είμαστε μόνο που ασχολούνται με μια λίστα. 733 00:36:26,280 --> 00:36:29,560 Έτσι, μια καλύτερη δήλωση της συνάρτησης για αυτό είναι μόνο για να απαλλαγούμε από αυτό 734 00:36:29,560 --> 00:36:34,360 εντελώς και απλά τοποθετήστε μια τιμή στο κεφάλι. 735 00:36:34,360 --> 00:36:35,930 Δεν χρειάζεται καν να γνωρίζουν ποια λίστα είμαστε μέσα 736 00:36:35,930 --> 00:36:39,140 Αλλά εγώ θα το κρατήσει για τώρα και τότε να το αλλάξετε μετά την ενημέρωση 737 00:36:39,140 --> 00:36:42,590 των διαφανειών και τον κωδικό. 738 00:36:42,590 --> 00:36:44,980 Έτσι ώστε να φαίνεται καλό για τώρα. 739 00:36:44,980 --> 00:36:46,560 Εάν η τιμή - που μπορεί να κάνει αυτή τη γραμμή; 740 00:36:46,560 --> 00:36:47,810 Αν - 741 00:36:47,810 --> 00:36:52,240 742 00:36:52,240 --> 00:36:53,840 τι κάνουμε εδώ, ο Νώε. 743 00:36:53,840 --> 00:36:57,890 744 00:36:57,890 --> 00:37:07,100 >> ΚΟΙΝΟ: Εάν η τιμή είναι μεγαλύτερη από curr-> n - 745 00:37:07,100 --> 00:37:16,830 746 00:37:16,830 --> 00:37:18,240 >> JASON Hirschhorn: Πώς πάμε στον επόμενο κόμβο; 747 00:37:18,240 --> 00:37:27,760 748 00:37:27,760 --> 00:37:30,530 >> ΚΟΙΝΟ: Curr-> n είναι ίση με new_node. 749 00:37:30,530 --> 00:37:37,630 750 00:37:37,630 --> 00:37:39,195 >> JASON Hirschhorn: Έτσι είναι n ποιο μέρος του struct; 751 00:37:39,195 --> 00:37:43,065 752 00:37:43,065 --> 00:37:46,020 Ο ακέραιος. 753 00:37:46,020 --> 00:37:50,420 Και new_node είναι ένας δείκτης σε έναν κόμβο. 754 00:37:50,420 --> 00:37:51,880 Λοιπόν, τι μέρος της curr θα πρέπει να ενημερώσετε; 755 00:37:51,880 --> 00:38:03,900 756 00:38:03,900 --> 00:38:05,400 Αν δεν n, τότε τι είναι το άλλο μέρος; 757 00:38:05,400 --> 00:38:21,680 758 00:38:21,680 --> 00:38:22,810 Νώε, τι είναι το άλλο μέρος. 759 00:38:22,810 --> 00:38:23,570 >> ΚΟΙΝΟ: Ω, το επόμενο. 760 00:38:23,570 --> 00:38:25,645 >> JASON Hirschhorn: Στη συνέχεια, ακριβώς. 761 00:38:25,645 --> 00:38:26,410 Ακριβώς. 762 00:38:26,410 --> 00:38:28,770 Επόμενο είναι το σωστό. 763 00:38:28,770 --> 00:38:31,540 Και τι άλλο χρειαζόμαστε για την ενημέρωση, ο Νώε; 764 00:38:31,540 --> 00:38:32,840 >> ΚΟΙΝΟ: Οι δείκτες. 765 00:38:32,840 --> 00:38:34,840 >> JASON Hirschhorn: Έτσι ανανεώσαμε ρεύμα. 766 00:38:34,840 --> 00:38:36,090 >> ΚΟΙΝΟ: Προηγούμενο-> επόμενο. 767 00:38:36,090 --> 00:38:48,160 768 00:38:48,160 --> 00:38:49,410 >> JASON Hirschhorn: Ναι. 769 00:38:49,410 --> 00:38:57,465 770 00:38:57,465 --> 00:38:58,370 Εντάξει, θα διακόψετε. 771 00:38:58,370 --> 00:39:02,200 Ποιος μπορεί να μας βοηθήσει εδώ; 772 00:39:02,200 --> 00:39:03,385 Manu, τι πρέπει να κάνουμε; 773 00:39:03,385 --> 00:39:05,615 >> ΚΟΙΝΟ: Έχετε να ορίσετε είναι ίσο με το curr-> επόμενο. 774 00:39:05,615 --> 00:39:09,110 775 00:39:09,110 --> 00:39:11,630 Αλλά το κάνουμε αυτό πριν από την προηγούμενη γραμμή. 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 Οτιδήποτε άλλο; 779 00:39:18,260 --> 00:39:19,170 Akshar. 780 00:39:19,170 --> 00:39:22,680 >> ΚΟΙΝΟ: Δεν νομίζω ότι είσαι έμελλε να αλλάξει curr-> επόμενο. 781 00:39:22,680 --> 00:39:29,270 Νομίζω ότι είναι γραφτό να κάνουν curr ίσων curr-> επόμενο να πάει στο επόμενο κόμβο. 782 00:39:29,270 --> 00:39:30,500 >> JASON Hirschhorn: Συγγνώμη, πού; 783 00:39:30,500 --> 00:39:32,680 Σε ποια γραμμή; 784 00:39:32,680 --> 00:39:33,420 Αυτή η γραμμή; 785 00:39:33,420 --> 00:39:33,750 >> ΚΟΙΝΟ: Ναι. 786 00:39:33,750 --> 00:39:35,745 Κάντε curr ισούται curr-> επόμενο. 787 00:39:35,745 --> 00:39:39,690 788 00:39:39,690 --> 00:39:43,360 >> JASON Hirschhorn: Έτσι, αυτό είναι σωστό επειδή η τρέχουσα είναι μια 789 00:39:43,360 --> 00:39:45,220 δείκτη σε έναν κόμβο. 790 00:39:45,220 --> 00:39:48,550 Και θέλουμε να δείξουν προς την επόμενη κόμβο του τι να πάρει σήμερα 791 00:39:48,550 --> 00:39:49,930 επεσήμανε. 792 00:39:49,930 --> 00:39:54,410 Curr ίδια έχει και επόμενο. 793 00:39:54,410 --> 00:39:58,620 Αλλά αν ήταν να ενημερώσετε curr.next, εμείς θα ανανεώσουμε την πραγματική σημείωση 794 00:39:58,620 --> 00:40:01,430 μόνη της, όπου αυτό δεν δείκτης έδειχνε. 795 00:40:01,430 --> 00:40:02,680 Τι γίνεται με αυτή τη γραμμή, όμως. 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 >> ΚΟΙΝΟ: Προηγούμενη-> ισούται με το επόμενο curr. 799 00:40:09,590 --> 00:40:12,500 800 00:40:12,500 --> 00:40:19,440 >> JASON Hirschhorn: Έτσι και πάλι, αν προηγ είναι δείκτη σε έναν κόμβο, προηγ-> επόμενο είναι η 801 00:40:19,440 --> 00:40:23,020 πραγματικό δείκτη στον κόμβο. 802 00:40:23,020 --> 00:40:27,190 Έτσι, αυτό θα ήταν μια ενημέρωση pointer σε ένα κόμβο στο Curr. 803 00:40:27,190 --> 00:40:28,570 Δεν θέλουμε να ενημερώσετε ένα δείκτη σε ένα κόμβο. 804 00:40:28,570 --> 00:40:30,570 Θέλουμε να ενημερώσετε τα προηγούμενα. 805 00:40:30,570 --> 00:40:31,850 Έτσι, πώς θα το κάνουμε αυτό; 806 00:40:31,850 --> 00:40:34,250 >> ΚΟΙΝΟ: Θα ήταν απλώς να προηγ. 807 00:40:34,250 --> 00:40:34,565 >> JASON Hirschhorn: Σωστά. 808 00:40:34,565 --> 00:40:35,560 Προηγούμενη είναι ένας δείκτης σε έναν κόμβο. 809 00:40:35,560 --> 00:40:38,750 Τώρα είμαστε το αλλάζει σε ένα νέο δείκτη σε έναν κόμβο. 810 00:40:38,750 --> 00:40:40,830 OK Ας προχωρήσουμε προς τα κάτω. 811 00:40:40,830 --> 00:40:41,940 Τέλος, αυτή η τελευταία προϋπόθεση. 812 00:40:41,940 --> 00:40:44,896 Jeff, τι κάνουμε εδώ; 813 00:40:44,896 --> 00:40:47,515 >> ΚΟΙΝΟ: Εάν η τιμή είναι ίση με curr-> n. 814 00:40:47,515 --> 00:40:51,030 815 00:40:51,030 --> 00:40:51,300 >> JASON Hirschhorn: Συγγνώμη. 816 00:40:51,300 --> 00:40:52,372 Ω Θεέ μου. 817 00:40:52,372 --> 00:40:54,330 Τι; 818 00:40:54,330 --> 00:40:55,580 Αξία == curr-> n. 819 00:40:55,580 --> 00:41:01,050 820 00:41:01,050 --> 00:41:02,300 Τι πρέπει να κάνουμε; 821 00:41:02,300 --> 00:41:04,760 822 00:41:04,760 --> 00:41:10,950 >> ΚΟΙΝΟ: Θα ήθελα να ελευθερώσετε new_node μας, και τότε θα επιστρέψει false. 823 00:41:10,950 --> 00:41:21,410 824 00:41:21,410 --> 00:41:23,460 >> JASON Hirschhorn: Αυτό είναι ό, τι έχουμε γράψει μέχρι τώρα. 825 00:41:23,460 --> 00:41:25,710 Μήπως κάποιος έχει τίποτα να προστεθούν, πριν κάνουμε; 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 Ας το δοκιμάσουμε. 829 00:41:36,960 --> 00:41:44,180 830 00:41:44,180 --> 00:41:46,110 Ο έλεγχος μπορεί να φθάσει στο τέλος ενός μη άκυρη λειτουργία. 831 00:41:46,110 --> 00:41:48,310 Avi, τι συμβαίνει; 832 00:41:48,310 --> 00:41:51,380 >> ΚΟΙΝΟ: Είστε υποτίθεται για να βάλει επιστροφή αλήθεια έξω από το βρόχο, ενώ; 833 00:41:51,380 --> 00:41:53,900 834 00:41:53,900 --> 00:41:54,400 >> JASON Hirschhorn: Δεν ξέρω. 835 00:41:54,400 --> 00:41:54,780 Μήπως θέλεις να; 836 00:41:54,780 --> 00:41:55,520 >> ΚΟΙΝΟ: Δεν πειράζει. 837 00:41:55,520 --> 00:41:56,350 Όχι. 838 00:41:56,350 --> 00:41:57,180 >> JASON Hirschhorn: Akshar; 839 00:41:57,180 --> 00:41:59,460 >> ΚΟΙΝΟ: Νομίζω ότι θα σήμαινε να βάλει ψευδή δήλωση στο τέλος 840 00:41:59,460 --> 00:42:02,230 από τον βρόχο while. 841 00:42:02,230 --> 00:42:03,270 >> JASON Hirschhorn: Έτσι, όταν Δεν θέλετε να πάτε; 842 00:42:03,270 --> 00:42:05,270 >> ΚΟΙΝΟ: Όπως και έξω από το βρόχο while. 843 00:42:05,270 --> 00:42:08,800 Έτσι, αν βγείτε από το βρόχο, ενώ αυτό σημαίνει ότι ότι έχετε φτάσει στο τέλος και 844 00:42:08,800 --> 00:42:09,980 τίποτα δεν συνέβη. 845 00:42:09,980 --> 00:42:10,410 >> JASON Hirschhorn: OK. 846 00:42:10,410 --> 00:42:12,340 Λοιπόν, τι κάνουμε εδώ; 847 00:42:12,340 --> 00:42:13,702 >> ΚΟΙΝΟ: Θα επιστρέψει false εκεί. 848 00:42:13,702 --> 00:42:15,040 >> JASON Hirschhorn: Ω, το κάνει σε δύο μέρη; 849 00:42:15,040 --> 00:42:15,650 >> ΚΟΙΝΟ: Ναι. 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 Θα πρέπει να πάμε; 853 00:42:26,160 --> 00:42:26,980 Ω Θεέ μου. 854 00:42:26,980 --> 00:42:27,290 Λυπάμαι. 855 00:42:27,290 --> 00:42:28,480 Ζητώ συγγνώμη για την οθόνη. 856 00:42:28,480 --> 00:42:30,530 Είναι το είδος της φρικάρει μας. 857 00:42:30,530 --> 00:42:31,520 Έτσι, επιλέγουν μια επιλογή. 858 00:42:31,520 --> 00:42:35,260 Μηδέν, ανά κωδικό, κλείνει το πρόγραμμα. 859 00:42:35,260 --> 00:42:36,700 Ένα εισάγει κάτι. 860 00:42:36,700 --> 00:42:37,990 Ας εισάγει τρεις. 861 00:42:37,990 --> 00:42:42,900 862 00:42:42,900 --> 00:42:45,380 Το ένθετο δεν ήταν επιτυχής. 863 00:42:45,380 --> 00:42:46,500 Πάω να εκτυπώσετε. 864 00:42:46,500 --> 00:42:48,050 Δεν έχω τίποτα. 865 00:42:48,050 --> 00:42:48,450 OK. 866 00:42:48,450 --> 00:42:50,250 Ίσως αυτό να ήταν απλά ένα λάθος. 867 00:42:50,250 --> 00:42:52,810 Τοποθετήστε το ένα. 868 00:42:52,810 --> 00:42:55,770 Δεν είναι επιτυχής. 869 00:42:55,770 --> 00:42:57,470 OK. 870 00:42:57,470 --> 00:43:02,400 Ας τρέχει μέσα GDB πολύ γρήγορα για να δείτε τι συμβαίνει. 871 00:43:02,400 --> 00:43:06,055 >> Θυμηθείτε gdb. / Το όνομα της ιστοσελίδας σας πρόγραμμα μας παίρνει στο GDB. 872 00:43:06,055 --> 00:43:07,610 Είναι ότι πολλά για να χειριστεί; 873 00:43:07,610 --> 00:43:08,560 Η αναβοσβήνει; 874 00:43:08,560 --> 00:43:10,400 Πιθανώς. 875 00:43:10,400 --> 00:43:12,760 Κλείστε τα μάτια σας και να πάρετε κάποια βαθιά ανάσες αν έχετε κουραστεί 876 00:43:12,760 --> 00:43:13,580 το κοιτάξουμε. 877 00:43:13,580 --> 00:43:14,200 Είμαι στην GDB. 878 00:43:14,200 --> 00:43:15,830 Ποιο είναι το πρώτο πράγμα που κάνω το GDB; 879 00:43:15,830 --> 00:43:17,050 Έχουμε να καταλάβω τι συμβαίνει εδώ. 880 00:43:17,050 --> 00:43:17,310 Ας δούμε. 881 00:43:17,310 --> 00:43:21,650 Έχουμε έξι λεπτά για να σχήμα τι συμβαίνει. 882 00:43:21,650 --> 00:43:22,900 Σπάστε κύριο. 883 00:43:22,900 --> 00:43:25,950 884 00:43:25,950 --> 00:43:28,130 Και τότε τι μπορώ να κάνω; 885 00:43:28,130 --> 00:43:29,180 Κάρλος; 886 00:43:29,180 --> 00:43:31,060 Τρέξτε. 887 00:43:31,060 --> 00:43:32,250 OK. 888 00:43:32,250 --> 00:43:34,160 Ας επιλέξουν μια επιλογή. 889 00:43:34,160 --> 00:43:36,330 Και τι κάνουμε N; 890 00:43:36,330 --> 00:43:38,480 Επόμενο. 891 00:43:38,480 --> 00:43:38,950 Ναι. 892 00:43:38,950 --> 00:43:39,740 >> ΚΟΙΝΟ: Δεν σας αναφέρω - 893 00:43:39,740 --> 00:43:45,230 Δεν είπες ότι το κεφάλι, ήταν αρχικοποιείται null στην αρχή. 894 00:43:45,230 --> 00:43:47,140 Αλλά σκέφτηκα είπατε ότι ήταν εντάξει. 895 00:43:47,140 --> 00:43:50,040 896 00:43:50,040 --> 00:43:52,640 >> JASON Hirschhorn: Πάμε - ας ρίξουμε μια ματιά στην GDB, και στη συνέχεια θα πάμε πίσω. 897 00:43:52,640 --> 00:43:54,910 Αλλά ακούγεται σαν έχετε ήδη μερικές ιδέες για το τι συμβαίνει. 898 00:43:54,910 --> 00:43:58,340 Έτσι θέλουμε να εισάγετε κάτι. 899 00:43:58,340 --> 00:43:59,390 OK. 900 00:43:59,390 --> 00:44:00,150 Έχουμε την εισαγωγή. 901 00:44:00,150 --> 00:44:00,770 Παρακαλώ εισάγετε έναν int. 902 00:44:00,770 --> 00:44:01,990 Θα εισάγει τρεις. 903 00:44:01,990 --> 00:44:03,000 Και τότε είμαι σε αυτή τη γραμμή. 904 00:44:03,000 --> 00:44:07,030 Πώς μπορώ να πάω να αρχίσει debugging το ένθετο γνωστή λειτουργία; 905 00:44:07,030 --> 00:44:08,280 Ω Θεέ μου. 906 00:44:08,280 --> 00:44:10,990 907 00:44:10,990 --> 00:44:12,240 Αυτό είναι ένα πολύ. 908 00:44:12,240 --> 00:44:14,372 909 00:44:14,372 --> 00:44:16,445 Είναι ότι φρικάρει πολύ; 910 00:44:16,445 --> 00:44:19,696 911 00:44:19,696 --> 00:44:21,680 >> ΚΟΙΝΟ: Ω, πέθανε. 912 00:44:21,680 --> 00:44:22,930 >> JASON Hirschhorn: απλά το τράβηξε έξω. 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 >> ΚΟΙΝΟ: Ίσως είναι η άλλο άκρο του σύρματος. 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 Έτσι, η κατώτατη γραμμή - 919 00:44:42,330 --> 00:44:43,470 τι είπες; 920 00:44:43,470 --> 00:44:46,040 >> ΚΟΙΝΟ: Είπα η ειρωνεία της τεχνικής δυσκολίες σε αυτή την κατηγορία. 921 00:44:46,040 --> 00:44:46,410 >> JASON Hirschhorn: Το ξέρω. 922 00:44:46,410 --> 00:44:48,660 Αν είχα τον έλεγχο αυτό το μέρος. 923 00:44:48,660 --> 00:44:49,910 [Δεν ακούγεται] 924 00:44:49,910 --> 00:44:54,430 925 00:44:54,430 --> 00:44:55,400 Αυτό ακούγεται μεγάλη. 926 00:44:55,400 --> 00:44:58,680 Γιατί δεν κάνετε εσείς να αρχίσουμε να σκεφτόμαστε τι θα μπορούσαμε να είχαμε κάνει λάθος, 927 00:44:58,680 --> 00:45:01,140 και θα είμαστε πίσω σε 90 δευτερόλεπτα. 928 00:45:01,140 --> 00:46:18,160 929 00:46:18,160 --> 00:46:23,010 >> Avica, Πάω να σας ρωτήσω πώς να πάτε μέσα insert_node να debug. 930 00:46:23,010 --> 00:46:28,940 931 00:46:28,940 --> 00:46:31,460 Έτσι, αυτό είναι όπου είχατε σταματήσει. 932 00:46:31,460 --> 00:46:35,110 Πώς μπορώ να πάω μέσα insert_node, Avica, να εξετάσει τι συμβαίνει; 933 00:46:35,110 --> 00:46:36,360 Τι GDB εντολή; 934 00:46:36,360 --> 00:46:41,050 935 00:46:41,050 --> 00:46:42,390 Break δεν θα με μεταφέρει στο εσωτερικό. 936 00:46:42,390 --> 00:46:46,200 937 00:46:46,200 --> 00:46:47,130 Μήπως Marquise ξέρει; 938 00:46:47,130 --> 00:46:48,240 >> ΚΟΙΝΟ: Τι; 939 00:46:48,240 --> 00:46:51,780 >> JASON Hirschhorn: Τι εντολή GDB Μπορώ να χρησιμοποιήσω για να πάει μέσα αυτή τη λειτουργία; 940 00:46:51,780 --> 00:46:52,070 >> ΚΟΙΝΟ: Βήμα; 941 00:46:52,070 --> 00:46:55,140 >> JASON Hirschhorn: Βήμα μέσω S. Αυτό με βάζει μέσα. 942 00:46:55,140 --> 00:46:55,476 OK. 943 00:46:55,476 --> 00:46:58,040 New_node mallocing κάποιο διάστημα. 944 00:46:58,040 --> 00:46:59,120 Αυτό φαίνεται σαν όλα της πηγαίνει. 945 00:46:59,120 --> 00:47:00,370 Ας εξετάσουμε new_node. 946 00:47:00,370 --> 00:47:03,270 947 00:47:03,270 --> 00:47:05,410 Πήρε κάποια διεύθυνση μνήμης. 948 00:47:05,410 --> 00:47:07,440 Ας ελέγξει - 949 00:47:07,440 --> 00:47:08,500 ότι είναι όλα σωστά. 950 00:47:08,500 --> 00:47:12,220 Έτσι, τα πάντα εδώ φαίνεται να να λειτουργεί σωστά. 951 00:47:12,220 --> 00:47:14,530 >> ΚΟΙΝΟ: Ποια είναι η διαφορά μεταξύ P και η οθόνη; 952 00:47:14,530 --> 00:47:16,160 >> JASON Hirschhorn: P ξεχωρίζει για εκτύπωση. 953 00:47:16,160 --> 00:47:19,310 Και έτσι ρωτάτε ποια είναι η διαφορά σε σχέση με αυτό; 954 00:47:19,310 --> 00:47:22,330 Στην περίπτωση αυτή, τίποτα. 955 00:47:22,330 --> 00:47:26,960 Αλλά γενικά υπάρχουν κάποιες διαφορές. 956 00:47:26,960 --> 00:47:28,220 Και θα πρέπει να κοιτάξουμε στο εγχειρίδιο GDB. 957 00:47:28,220 --> 00:47:29,560 Αλλά στην περίπτωση αυτή, τίποτα. 958 00:47:29,560 --> 00:47:31,460 Έχουμε την τάση να χρησιμοποιούν το έντυπο, όμως, γιατί δεν χρειάζεται να κάνει πολύ περισσότερα από ό, τι 959 00:47:31,460 --> 00:47:33,960 εκτυπώσετε μια μεμονωμένη τιμή. 960 00:47:33,960 --> 00:47:34,640 >> OK. 961 00:47:34,640 --> 00:47:40,300 Έτσι είμαστε στη γραμμή 80 του κώδικα μας, ρύθμιση κόμβο * curr ίση με λίστα. 962 00:47:40,300 --> 00:47:42,500 Ας εκτυπώσετε curr. 963 00:47:42,500 --> 00:47:45,260 964 00:47:45,260 --> 00:47:46,840 Ισούται με λίστα. 965 00:47:46,840 --> 00:47:48,850 Sweet. 966 00:47:48,850 --> 00:47:49,340 Περιμένετε. 967 00:47:49,340 --> 00:47:50,590 Ισούται με κάτι. 968 00:47:50,590 --> 00:47:53,680 969 00:47:53,680 --> 00:47:56,190 Αυτό δεν φαίνεται σωστό. 970 00:47:56,190 --> 00:47:56,840 Εκεί πάμε. 971 00:47:56,840 --> 00:47:59,470 Είναι επειδή το GDB, σωστά, αν Είναι η γραμμή είστε σε αυτό 972 00:47:59,470 --> 00:48:00,330 δεν έχει εκτελεστεί ακόμη. 973 00:48:00,330 --> 00:48:03,100 Έτσι, θα πρέπει να πληκτρολογήσετε στην πραγματικότητα δίπλα να εκτελέσει τη γραμμή 974 00:48:03,100 --> 00:48:05,230 πριν δει τα αποτελέσματά της. 975 00:48:05,230 --> 00:48:06,680 Έτσι, εδώ είμαστε. 976 00:48:06,680 --> 00:48:09,490 Εμείς απλά εκτελούνται αυτή τη γραμμή, προηγούμενο ισούται με null. 977 00:48:09,490 --> 00:48:13,590 Έτσι και πάλι, αν τυπώνουμε προηγούμενο δεν θα δούμε τίποτα περίεργο. 978 00:48:13,590 --> 00:48:18,680 Αλλά αν μπορούμε πραγματικά να εκτελέσει ότι γραμμή, τότε θα δούμε 979 00:48:18,680 --> 00:48:20,380 ότι η γραμμή λειτούργησε. 980 00:48:20,380 --> 00:48:21,060 >> Έτσι έχουμε curr. 981 00:48:21,060 --> 00:48:23,180 Αυτοί είναι και οι δύο καλά. 982 00:48:23,180 --> 00:48:24,010 Σωστά; 983 00:48:24,010 --> 00:48:28,130 Τώρα είμαστε σε αυτή τη γραμμή εδώ. 984 00:48:28,130 --> 00:48:29,310 Ενώ curr δεν είναι ίσο με null. 985 00:48:29,310 --> 00:48:31,110 Λοιπόν, τι κάνει curr ίσοι; 986 00:48:31,110 --> 00:48:32,450 Εμείς απλά είδε ισοφάρισε null. 987 00:48:32,450 --> 00:48:33,210 Μπορούμε να εκτυπωθεί. 988 00:48:33,210 --> 00:48:35,110 Θα το εκτυπώσετε ξανά. 989 00:48:35,110 --> 00:48:36,720 Έτσι, είναι ότι, ενώ βρόχο πρόκειται να εκτελέσει; 990 00:48:36,720 --> 00:48:37,270 >> ΚΟΙΝΟ: Όχι. 991 00:48:37,270 --> 00:48:39,790 >> JASON Hirschhorn: Έτσι, όταν θα πληκτρολογήσει ότι γραμμή, θα δείτε ότι πήδηξε σε όλη τη διαδρομή 992 00:48:39,790 --> 00:48:41,390 στο κάτω μέρος, επιστρέφει false. 993 00:48:41,390 --> 00:48:44,520 Και μετά θα πάμε να επιστρέψει false και να πάει πίσω στο πρόγραμμά μας και 994 00:48:44,520 --> 00:48:48,020 τελικά να εκτυπώσετε, όπως είδαμε, Το ένθετο δεν ήταν επιτυχής. 995 00:48:48,020 --> 00:48:51,010 Έτσι, οποιοσδήποτε έχει κάποιες ιδέες για το τι πρέπει να κάνουμε για να το διορθώσω αυτό; 996 00:48:51,010 --> 00:48:54,200 997 00:48:54,200 --> 00:48:57,570 Πάω να περιμένω μέχρι να δω ένα ζευγάρι χέρια ανεβαίνουν. 998 00:48:57,570 --> 00:48:58,830 Εμείς δεν εκτελέσει αυτό. 999 00:48:58,830 --> 00:49:01,660 Κρατήστε στο μυαλό, αυτό ήταν το πρώτο πράγμα που κάναμε. 1000 00:49:01,660 --> 00:49:02,430 Είμαι δεν πρόκειται να κάνει ένα ζευγάρι. 1001 00:49:02,430 --> 00:49:03,670 Πάω να κάνω μερικές. 1002 00:49:03,670 --> 00:49:04,830 Επειδή ένα ζευγάρι σημαίνει δύο. 1003 00:49:04,830 --> 00:49:07,620 Θα περιμένω για περισσότερο από δύο. 1004 00:49:07,620 --> 00:49:10,690 >> Η πρώτη εισαγωγή, curr, από προεπιλογή ισούται με null. 1005 00:49:10,690 --> 00:49:14,050 Και αυτός ο βρόχος εκτελεί μόνο αν curr δεν είναι null. 1006 00:49:14,050 --> 00:49:18,740 Λοιπόν, πώς μπορώ να πάρω γύρω από αυτό; 1007 00:49:18,740 --> 00:49:19,990 Βλέπω τρία χέρια. 1008 00:49:19,990 --> 00:49:28,490 1009 00:49:28,490 --> 00:49:29,780 Θα περιμένω για περισσότερα από τρία. 1010 00:49:29,780 --> 00:49:33,460 1011 00:49:33,460 --> 00:49:35,940 Marcus, τι νομίζεις; 1012 00:49:35,940 --> 00:49:37,730 >> ΚΟΙΝΟ: Λοιπόν, αν το χρειάζεστε για να εκτελέσει περισσότερες από μία φορές, απλά 1013 00:49:37,730 --> 00:49:39,948 αλλάξετε σε ένα do-while loop. 1014 00:49:39,948 --> 00:49:41,250 >> JASON Hirschhorn: OK. 1015 00:49:41,250 --> 00:49:44,240 Θα λύσει το πρόβλημα αυτό μας, όμως; 1016 00:49:44,240 --> 00:49:47,750 >> ΚΟΙΝΟ: Στην περίπτωση αυτή δεν εξαιτίας της το γεγονός ότι η λίστα είναι κενή. 1017 00:49:47,750 --> 00:49:52,150 Έτσι, τότε ίσως απλά πρέπει να προσθέσετε δήλωση ότι, αν ο βρόχος 1018 00:49:52,150 --> 00:49:55,312 τότε θα πρέπει να είναι στο τέλος του ο κατάλογος, σε ποιο σημείο θα 1019 00:49:55,312 --> 00:49:56,562 μπορεί να εισαχθεί μόνο. 1020 00:49:56,562 --> 00:49:58,920 1021 00:49:58,920 --> 00:49:59,680 >> JASON Hirschhorn: Μου αρέσει αυτό. 1022 00:49:59,680 --> 00:50:00,500 Αυτό είναι λογικό. 1023 00:50:00,500 --> 00:50:03,390 Αν ο βρόχος βγαίνει - 1024 00:50:03,390 --> 00:50:04,800 γιατί θα επιστρέψει false εδώ. 1025 00:50:04,800 --> 00:50:08,220 Έτσι, αν τα βρόχος, τότε είμαστε σε το τέλος της λίστας, ή ίσως το 1026 00:50:08,220 --> 00:50:10,690 ξεκινήσει από μια λίστα αν δεν υπάρχει τίποτα στο αυτό, το οποίο είναι το ίδιο με το άκρο. 1027 00:50:10,690 --> 00:50:12,770 Έτσι, τώρα θέλουμε να εισαγάγετε κάτι εδώ. 1028 00:50:12,770 --> 00:50:17,380 Έτσι, πώς αυτός κώδικας δούμε, Μάρκους; 1029 00:50:17,380 --> 00:50:21,600 >> ΚΟΙΝΟ: Αν έχεις ήδη τον κόμβο malloced, θα μπορούσε απλώς να πω 1030 00:50:21,600 --> 00:50:25,400 new_node-> επόμενο ισούται με null, διότι θα πρέπει να είναι στο τέλος. 1031 00:50:25,400 --> 00:50:27,510 Ή new_node-> επόμενο ισούται με null. 1032 00:50:27,510 --> 00:50:27,765 >> JASON Hirschhorn: OK. 1033 00:50:27,765 --> 00:50:28,190 Λυπάμαι. 1034 00:50:28,190 --> 00:50:35,760 New_node-> επόμενο ισούται με null επειδή είμαστε στο τέλος. 1035 00:50:35,760 --> 00:50:36,460 Αυτό δεν το βάλετε μέσα 1036 00:50:36,460 --> 00:50:37,710 Πώς μπορούμε να το βάλετε στη λίστα; 1037 00:50:37,710 --> 00:50:46,130 1038 00:50:46,130 --> 00:50:46,460 Δεξιά. 1039 00:50:46,460 --> 00:50:47,750 Αυτό είναι ακριβώς ίση με τη ρύθμιση. 1040 00:50:47,750 --> 00:50:50,940 Όχι πώς μπορούμε πραγματικά βάλετε στη λίστα; 1041 00:50:50,940 --> 00:50:54,170 Τι δείχνουν προς το τέλος της λίστας; 1042 00:50:54,170 --> 00:50:56,090 >> ΚΟΙΝΟ: Head. 1043 00:50:56,090 --> 00:50:57,566 >> JASON Hirschhorn: Συγγνώμη; 1044 00:50:57,566 --> 00:50:59,440 >> ΚΟΙΝΟ: Επικεφαλής είναι στραμμένο στο τέλος της λίστας. 1045 00:50:59,440 --> 00:51:01,480 >> JASON Hirschhorn: Αν δεν υπάρχει τίποτα στο ο κατάλογος, το κεφάλι είναι στραμμένη προς το 1046 00:51:01,480 --> 00:51:04,170 τέλος της λίστας. 1047 00:51:04,170 --> 00:51:06,920 Έτσι, αυτό θα λειτουργήσει για το πρώτη εισαγωγή. 1048 00:51:06,920 --> 00:51:09,810 Τι γίνεται αν υπάρχουν ένα ζευγάρι τα πράγματα στη λίστα; 1049 00:51:09,810 --> 00:51:12,470 Από ό, τι δεν θέλετε να ορίσετε κεφάλι ίσο με new_node. 1050 00:51:12,470 --> 00:51:13,790 Τι θέλουμε να κάνουμε εκεί; 1051 00:51:13,790 --> 00:51:15,610 Ναι; 1052 00:51:15,610 --> 00:51:16,860 Πιθανώς προηγούμενο. 1053 00:51:16,860 --> 00:51:23,560 1054 00:51:23,560 --> 00:51:24,810 Θα αυτό το έργο; 1055 00:51:24,810 --> 00:51:28,950 1056 00:51:28,950 --> 00:51:33,050 Υπενθυμίζουμε ότι τα προηγούμενα είναι απλώς ένα δείκτη σε έναν κόμβο. 1057 00:51:33,050 --> 00:51:34,770 Και τα προηγούμενα είναι μια τοπική μεταβλητή. 1058 00:51:34,770 --> 00:51:38,080 Έτσι, αυτή η γραμμή θα δημιουργήσει μια τοπική μεταβλητή, προηγούμενο, ίση ή 1059 00:51:38,080 --> 00:51:39,380 δείχνουν προς αυτή τη νέα κόμβο. 1060 00:51:39,380 --> 00:51:41,500 Αυτό δεν θα το βάλουμε στην πραγματικότητα στην λίστα μας, όμως. 1061 00:51:41,500 --> 00:51:44,330 Πώς μπορούμε να το βάλετε στη λίστα μας; 1062 00:51:44,330 --> 00:51:45,620 Akchar; 1063 00:51:45,620 --> 00:51:46,870 >> ΚΟΙΝΟ: Νομίζω ότι εσείς κάνουν ρεύματος> επόμενο. 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-> επόμενο. 1067 00:51:54,010 --> 00:51:58,768 Έτσι και πάλι, ο μόνος λόγος που είμαστε κάτω εδώ είναι, τι κάνει ρεύμα ίσο; 1068 00:51:58,768 --> 00:51:59,760 >> ΚΟΙΝΟ: Ίσο με null. 1069 00:51:59,760 --> 00:52:01,790 >> JASON Hirschhorn: Και έτσι αυτό θα συμβεί αν κάνουμε null-> επόμενο; 1070 00:52:01,790 --> 00:52:02,810 Τι πρόκειται να πάρει; 1071 00:52:02,810 --> 00:52:04,060 Θα πάρετε ένα σφάλμα κατάτμησης. 1072 00:52:04,060 --> 00:52:06,600 1073 00:52:06,600 --> 00:52:08,880 >> ΚΟΙΝΟ: Να curr ισούται με null. 1074 00:52:08,880 --> 00:52:10,760 >> JASON Hirschhorn: Αυτό είναι το ίδιο πράγμα ως προηγούμενο, όμως, γιατί υπάρχει 1075 00:52:10,760 --> 00:52:12,820 μια τοπική μεταβλητή είμαστε ρύθμιση ίση με αυτό το νέο κόμβο. 1076 00:52:12,820 --> 00:52:16,680 1077 00:52:16,680 --> 00:52:20,920 Ας πάμε πίσω στην εικόνα μας της εισαγωγής κάτι. 1078 00:52:20,920 --> 00:52:25,500 Πείτε είμαστε εισάγοντας στο τέλος του καταλόγου, έτσι ακριβώς εδώ. 1079 00:52:25,500 --> 00:52:30,010 Έχουμε μια τρέχουσα δείκτη που είναι επισημαίνοντας null και ένα προηγούμενο σημείο 1080 00:52:30,010 --> 00:52:32,800 αυτό είναι που δείχνουν προς 8. 1081 00:52:32,800 --> 00:52:35,330 Έτσι, αυτό που χρειαζόμαστε για να ενημερώσετε, AVI; 1082 00:52:35,330 --> 00:52:36,680 >> ΚΟΙΝΟ: Previous-> επόμενο; 1083 00:52:36,680 --> 00:52:41,980 >> JASON Hirschhorn: Previous-> επόμενο είναι αυτό που θέλουμε να ενημερώσετε γιατί αυτό 1084 00:52:41,980 --> 00:52:44,960 θα την εισάγετε στην πραγματικότητα σε το τέλος της λίστας. 1085 00:52:44,960 --> 00:52:47,220 Έχουμε ακόμα ένα bug, όμως, ότι θα πάμε να τρέχει σε. 1086 00:52:47,220 --> 00:52:50,090 Τι είναι αυτό σφάλμα; 1087 00:52:50,090 --> 00:52:50,790 Ναι; 1088 00:52:50,790 --> 00:52:53,860 >> ΚΟΙΝΟ: Δεν πρόκειται να επιστρέψει false σε αυτή την περίπτωση; 1089 00:52:53,860 --> 00:52:56,380 >> JASON Hirschhorn: Ω, είναι η πρόκειται να επιστρέψει false. 1090 00:52:56,380 --> 00:52:57,430 Αλλά υπάρχει ένα άλλο bug. 1091 00:52:57,430 --> 00:52:58,930 Γι 'αυτό θα πρέπει να τεθεί σε αντάλλαγμα αλήθεια. 1092 00:52:58,930 --> 00:53:01,370 >> ΚΟΙΝΟ: Μήπως τα προηγούμενα παραμένουν στα ίδια επίπεδα null στην κορυφή της λίστας; 1093 00:53:01,370 --> 00:53:03,645 >> JASON Hirschhorn: Έτσι προηγούμενο ακόμα ισούται με null στην αρχή. 1094 00:53:03,645 --> 00:53:07,480 1095 00:53:07,480 --> 00:53:10,440 Έτσι, πώς μπορούμε να το ξεπεράσω αυτό; 1096 00:53:10,440 --> 00:53:10,950 Ναι; 1097 00:53:10,950 --> 00:53:15,280 >> ΚΟΙΝΟ: Νομίζω ότι μπορείτε να κάνετε έναν έλεγχο πριν από το βρόχο while να δούμε αν είναι 1098 00:53:15,280 --> 00:53:16,610 μια κενή λίστα. 1099 00:53:16,610 --> 00:53:17,000 >> JASON Hirschhorn: OK. 1100 00:53:17,000 --> 00:53:17,710 Οπότε ας πάμε εδώ. 1101 00:53:17,710 --> 00:53:18,530 Κάντε έναν έλεγχο. 1102 00:53:18,530 --> 00:53:19,380 Αν - 1103 00:53:19,380 --> 00:53:20,770 >> ΚΟΙΝΟ: Έτσι, αν το κεφάλι ισούται ισούται με null. 1104 00:53:20,770 --> 00:53:24,300 1105 00:53:24,300 --> 00:53:26,320 >> JASON Hirschhorn: Αν το κεφάλι ισούται ισούται με null - 1106 00:53:26,320 --> 00:53:27,790 που θα μας πει αν είναι μια κενή λίστα. 1107 00:53:27,790 --> 00:53:31,090 >> ΚΟΙΝΟ: Και τότε θα κάνει το κεφάλι ισούται με νέα. 1108 00:53:31,090 --> 00:53:34,740 >> JASON Hirschhorn: Head ισούται με new_node; 1109 00:53:34,740 --> 00:53:35,730 Και τι άλλο πρέπει να κάνουμε; 1110 00:53:35,730 --> 00:53:37,020 >> ΚΟΙΝΟ: Και τότε θα επιστρέψει αλήθεια. 1111 00:53:37,020 --> 00:53:37,535 >> JASON Hirschhorn: Δεν είναι αρκετά. 1112 00:53:37,535 --> 00:53:38,785 Μας λείπει ένα βήμα. 1113 00:53:38,785 --> 00:53:41,590 1114 00:53:41,590 --> 00:53:43,710 >> ΚΟΙΝΟ: New_node επόμενο πρέπει να δείχνουν μηδέν. 1115 00:53:43,710 --> 00:53:44,570 >> JASON Hirschhorn: Ακριβώς, Alden. 1116 00:53:44,570 --> 00:53:46,600 Και τότε μπορούμε να επιστρέψουμε αλήθεια. 1117 00:53:46,600 --> 00:53:47,560 OK. 1118 00:53:47,560 --> 00:53:51,630 Αλλά είναι ακόμα μια καλή ιδέα να κάνετε πράγματα στο τέλος της λίστας, έτσι δεν είναι; 1119 00:53:51,630 --> 00:53:51,950 Εντάξει. 1120 00:53:51,950 --> 00:53:54,450 Ακόμα μπορεί να πάρει πραγματικά στο τέλος της λίστας. 1121 00:53:54,450 --> 00:53:57,870 Έτσι είναι αυτός ο κώδικας πρόστιμο αν είμαστε κατά τη τέλος του καταλόγου και υπάρχουν μερικά 1122 00:53:57,870 --> 00:53:59,120 τα πράγματα στη λίστα; 1123 00:53:59,120 --> 00:54:01,830 1124 00:54:01,830 --> 00:54:02,040 Σωστά; 1125 00:54:02,040 --> 00:54:03,540 Επειδή έχουμε ακόμα ιδέα Μάρκους. 1126 00:54:03,540 --> 00:54:06,870 Θα μπορούσαμε να βγείτε από αυτό το βρόχο, διότι είμαστε στο τέλος της λίστας. 1127 00:54:06,870 --> 00:54:09,308 Έτσι, δεν θέλουμε ακόμα αυτό κωδικοποιήσει εδώ κάτω; 1128 00:54:09,308 --> 00:54:10,520 >> ΚΟΙΝΟ: Ναι. 1129 00:54:10,520 --> 00:54:11,000 >> JASON Hirschhorn: Ναι. 1130 00:54:11,000 --> 00:54:14,190 Και τι θα πρέπει να αλλάξει αυτό; 1131 00:54:14,190 --> 00:54:15,440 True. 1132 00:54:15,440 --> 00:54:19,580 1133 00:54:19,580 --> 00:54:21,640 Μήπως αυτό ακούγεται καλό σε όλους τους μέχρι τώρα; 1134 00:54:21,640 --> 00:54:22,420 Ο καθένας έχει κάποια - 1135 00:54:22,420 --> 00:54:23,480 Avi, δεν έχετε κάτι να προσθέσετε; 1136 00:54:23,480 --> 00:54:23,920 >> ΚΟΙΝΟ: Όχι. 1137 00:54:23,920 --> 00:54:25,276 >> JASON Hirschhorn: OK. 1138 00:54:25,276 --> 00:54:27,010 Έτσι, έχουμε κάνει μια-δυο αλλαγές. 1139 00:54:27,010 --> 00:54:29,540 Έχουμε κάνει αυτόν τον έλεγχο πριν πήγε σε μια κενή λίστα. 1140 00:54:29,540 --> 00:54:31,790 Έτσι έχουμε φροντίσει μια κενή λίστα. 1141 00:54:31,790 --> 00:54:35,500 Και εδώ έχουμε φρόντισε εισαγωγή κάτι στο τέλος της λίστας. 1142 00:54:35,500 --> 00:54:38,930 Φαίνεται λοιπόν ότι αυτό που λαμβάνουν, ενώ βρόχο φροντίσει τα πράγματα στο μεταξύ, 1143 00:54:38,930 --> 00:54:41,920 κάπου στον κατάλογο, εφόσον υπάρχει είναι τα πράγματα στη λίστα. 1144 00:54:41,920 --> 00:54:42,280 >> OK. 1145 00:54:42,280 --> 00:54:44,310 Ας τρέξει αυτό το πρόγραμμα ξανά. 1146 00:54:44,310 --> 00:54:50,170 1147 00:54:50,170 --> 00:54:50,755 Δεν είναι επιτυχής. 1148 00:54:50,755 --> 00:54:52,190 >> ΚΟΙΝΟ: Δεν το έκανε. 1149 00:54:52,190 --> 00:54:53,940 >> JASON Hirschhorn: Ω, Εγώ δεν το κάνει. 1150 00:54:53,940 --> 00:54:56,250 Καλό σημείο, Μάικλ. 1151 00:54:56,250 --> 00:54:57,500 Ας προσθέσουμε μια μάρκα που συνδέονται με. 1152 00:54:57,500 --> 00:55:01,590 1153 00:55:01,590 --> 00:55:04,830 Γραμμή 87 υπάρχει ένα σφάλμα. 1154 00:55:04,830 --> 00:55:05,420 Γραμμή 87. 1155 00:55:05,420 --> 00:55:06,600 Alden, αυτή ήταν η γραμμή που μου έδωσες. 1156 00:55:06,600 --> 00:55:08,962 Τι είναι λάθος; 1157 00:55:08,962 --> 00:55:10,710 >> ΚΟΙΝΟ: Πρέπει να είναι σε μηδέν. 1158 00:55:10,710 --> 00:55:11,000 >> JASON Hirschhorn: Εξαιρετική. 1159 00:55:11,000 --> 00:55:11,630 Ακριβώς δεξιά. 1160 00:55:11,630 --> 00:55:13,290 Θα πρέπει να είναι μηδενική. 1161 00:55:13,290 --> 00:55:15,210 Ας κάνουμε και πάλι. 1162 00:55:15,210 --> 00:55:17,220 Η μεταγλώττιση. 1163 00:55:17,220 --> 00:55:17,890 OK. 1164 00:55:17,890 --> 00:55:19,400 Ας εισάγει τρεις. 1165 00:55:19,400 --> 00:55:20,570 Το ένθετο ήταν επιτυχής. 1166 00:55:20,570 --> 00:55:21,660 Ας το εκτυπώσετε. 1167 00:55:21,660 --> 00:55:23,590 Αχ, αν μόνο να ελέγξουμε. 1168 00:55:23,590 --> 00:55:25,500 Αλλά δεν κάναμε το εκτυπώσετε τη λειτουργία ακόμη. 1169 00:55:25,500 --> 00:55:27,840 Ας εισάγετε κάτι άλλο. 1170 00:55:27,840 --> 00:55:29,090 Τι θα πρέπει να μπούμε; 1171 00:55:29,090 --> 00:55:31,120 1172 00:55:31,120 --> 00:55:31,940 >> ΚΟΙΝΟ: Επτά. 1173 00:55:31,940 --> 00:55:33,340 >> JASON Hirschhorn: Επτά; 1174 00:55:33,340 --> 00:55:34,590 >> ΚΟΙΝΟ: Ναι. 1175 00:55:34,590 --> 00:55:38,680 1176 00:55:38,680 --> 00:55:39,780 >> JASON Hirschhorn: Έχουμε ένα σφάλμα seg. 1177 00:55:39,780 --> 00:55:43,760 Γι 'αυτό και πήρε ένα, αλλά σαφώς δεν μπορεί να πάρει δύο. 1178 00:55:43,760 --> 00:55:45,690 Είναι 5:07. 1179 00:55:45,690 --> 00:55:48,370 Έτσι, θα μπορούσαμε να διορθώσετε αυτό για τρία λεπτά. 1180 00:55:48,370 --> 00:55:51,240 Αλλά Πάω να μας αφήσει εδώ και να προχωρήσουμε στο hash πίνακες. 1181 00:55:51,240 --> 00:55:54,290 Αλλά και πάλι, οι απαντήσεις για αυτόν τον κωδικό Θα το e-mail σας σε ένα κομμάτι. 1182 00:55:54,290 --> 00:55:55,440 Είμαστε πολύ κοντά σε αυτό. 1183 00:55:55,440 --> 00:55:58,300 Θα ήθελα πολύ να σας ενθαρρύνω να καταλάβω τι συμβαίνει εδώ και να το διορθώσουμε. 1184 00:55:58,300 --> 00:56:02,400 Γι 'αυτό θα σας στείλουμε έναν κωδικό ως και συν η λύση - 1185 00:56:02,400 --> 00:56:03,670 ίσως η λύση αργότερα. 1186 00:56:03,670 --> 00:56:05,110 Κατ 'αρχάς ο κώδικας αυτός. 1187 00:56:05,110 --> 00:56:08,290 >> Το άλλο πράγμα που θέλω να κάνω πριν φινίρισμα είναι ότι δεν έχουν απελευθερωθεί τίποτα. 1188 00:56:08,290 --> 00:56:10,370 Θέλω, λοιπόν, να σας δείξω τι valgrind μοιάζει. 1189 00:56:10,370 --> 00:56:14,310 Αν τρέξουμε όρια valgrind σχετικά με το πρόγραμμα μας,. / συνδέονται μεταξύ τους. 1190 00:56:14,310 --> 00:56:22,540 Και πάλι, σύμφωνα με αυτήν τη διαφάνεια, θα θα πρέπει να τρέξει valgrind με κάποιο τύπο 1191 00:56:22,540 --> 00:56:26,410 επιλογή, σε αυτή την περίπτωση - Διαρροή-check = πλήρης. 1192 00:56:26,410 --> 00:56:27,660 Έτσι, ας γράψουμε valgrind - Διαρροή-check = πλήρης. 1193 00:56:27,660 --> 00:56:31,910 1194 00:56:31,910 --> 00:56:35,080 Έτσι, αυτό θα τρέξει valgrind σχετικά με το πρόγραμμα μας. 1195 00:56:35,080 --> 00:56:37,000 Και τώρα το πρόγραμμα πραγματικά τρέχει. 1196 00:56:37,000 --> 00:56:40,190 Έτσι θα πάμε για να τρέξει ακριβώς όπως πριν, βάλτε κάτι μέσα 1197 00:56:40,190 --> 00:56:40,830 Πάω να θέσει σε τρεις. 1198 00:56:40,830 --> 00:56:41,790 Αυτό λειτουργεί. 1199 00:56:41,790 --> 00:56:43,202 Είμαι δεν πρόκειται να προσπαθήσει να θέσει σε κάτι γιατί αλλιώς θα πάμε να 1200 00:56:43,202 --> 00:56:44,710 πάρετε μια ψευδή seg σε αυτή την περίπτωση. 1201 00:56:44,710 --> 00:56:46,700 Έτσι, είμαι απλώς πρόκειται να σταματήσουν. 1202 00:56:46,700 --> 00:56:50,160 >> Και τώρα βλέπεις εδώ κάτω διαρροή και περίληψη του σωρού. 1203 00:56:50,160 --> 00:56:52,310 Αυτά είναι τα καλά πράγματα που θέλετε να ελέγξετε έξω. 1204 00:56:52,310 --> 00:56:56,780 Έτσι, η περίληψη σωρό - λέει, στη χρήση στην έξοδο - οκτώ bytes σε ένα μπλοκ. 1205 00:56:56,780 --> 00:56:58,370 Εκείνο το ένα μπλοκ είναι το κόμβο που malloced. 1206 00:56:58,370 --> 00:57:02,230 Michael, είπατε πριν από ένα κόμβο είναι οκτώ τσιμπήματα, επειδή έχει τον ακέραιο 1207 00:57:02,230 --> 00:57:02,680 και ο δείκτης. 1208 00:57:02,680 --> 00:57:04,550 Έτσι ώστε να είναι κόμβος μας. 1209 00:57:04,550 --> 00:57:08,170 Και τότε λέει ότι χρησιμοποιούνται malloc επτά φορές και θα απελευθερωθεί 1210 00:57:08,170 --> 00:57:08,940 κάτι έξι φορές. 1211 00:57:08,940 --> 00:57:13,680 Αλλά ποτέ δεν ζητήσαμε δωρεάν, οπότε δεν έχω ιδέα τι πράγμα μιλάει. 1212 00:57:13,680 --> 00:57:18,490 >> Αλλά αρκεί να πω ότι όταν σας τρέχει το πρόγραμμα, malloc καλείται 1213 00:57:18,490 --> 00:57:20,330 σε κάποια άλλα μέρη που έχουμε δεν χρειάζεται να ανησυχούν. 1214 00:57:20,330 --> 00:57:22,460 Έτσι malloc πιθανότατα ονομάζεται σε κάποια σημεία. 1215 00:57:22,460 --> 00:57:24,480 Δεν χρειάζεται να ανησυχείτε πού. 1216 00:57:24,480 --> 00:57:26,240 Αλλά αυτό είναι πραγματικά μας. 1217 00:57:26,240 --> 00:57:27,380 Αυτή η πρώτη γραμμή είναι μαζί μας. 1218 00:57:27,380 --> 00:57:28,320 Αφήσαμε αυτό το μπλοκ. 1219 00:57:28,320 --> 00:57:30,330 Και μπορείτε να δείτε ότι εδώ στην περίληψη διαρροή. 1220 00:57:30,330 --> 00:57:31,950 Ακόμα προσβάσιμο - 1221 00:57:31,950 --> 00:57:32,930 οκτώ bytes σε ένα μπλοκ. 1222 00:57:32,930 --> 00:57:34,100 Αυτό σημαίνει ότι η μνήμη - 1223 00:57:34,100 --> 00:57:35,730 έχουμε διαρρεύσει ότι η μνήμη. 1224 00:57:35,730 --> 00:57:37,570 Σίγουρα έχασε - 1225 00:57:37,570 --> 00:57:38,770 κάτι έχει χαθεί για τα καλά. 1226 00:57:38,770 --> 00:57:40,590 Σε γενικές γραμμές, δεν θα βλέπω τίποτα εκεί. 1227 00:57:40,590 --> 00:57:44,780 Ακόμα προσβάσιμο είναι γενικά όπου θα δείτε τα πράγματα, όπου θα θελήσετε 1228 00:57:44,780 --> 00:57:48,900 να κοιτάξουμε να δούμε τι κώδικα πρέπει να σας έχουν απελευθερωθεί αλλά ξεχάσατε να ελευθερώσετε. 1229 00:57:48,900 --> 00:57:53,170 >> Και στη συνέχεια, αν αυτό δεν ήταν η περίπτωση, αν κάναμε όλα δωρεάν, 1230 00:57:53,170 --> 00:57:54,360 μπορούμε να ελέγξουμε αυτό. 1231 00:57:54,360 --> 00:57:57,330 Ας κάνουμε το πρόγραμμα δεν θέτει σε τίποτα. 1232 00:57:57,330 --> 00:57:59,800 Θα δείτε εδώ κάτω στη χρήση κατά την έξοδο - 1233 00:57:59,800 --> 00:58:01,310 μηδέν bytes το μηδέν μπλοκ. 1234 00:58:01,310 --> 00:58:06,310 Αυτό σημαίνει ότι είχαμε μείνει τίποτα όταν αυτό το πρόγραμμα τερματίζεται. 1235 00:58:06,310 --> 00:58:12,090 Έτσι, πριν από την στροφή στην pset6, τρέχει valgrind και βεβαιωθείτε ότι δεν έχετε 1236 00:58:12,090 --> 00:58:15,310 οποιαδήποτε μνήμη διαρροές στο πρόγραμμά σας. 1237 00:58:15,310 --> 00:58:17,910 Εάν έχετε οποιεσδήποτε ερωτήσεις με valgrind, διστάσετε να φτάσει. 1238 00:58:17,910 --> 00:58:18,700 Αλλά αυτό είναι το πώς μπορείτε να το χρησιμοποιήσετε. 1239 00:58:18,700 --> 00:58:20,890 Πολύ απλό - δείτε αν μπορείτε έχουν σε χρήση κατά την έξοδο - 1240 00:58:20,890 --> 00:58:22,270 τυχόν bytes σε κάθε μπλοκ. 1241 00:58:22,270 --> 00:58:27,890 1242 00:58:27,890 --> 00:58:29,580 >> Έτσι δουλεύαμε σε ένθετο κόμβο. 1243 00:58:29,580 --> 00:58:33,840 Είχα δύο άλλες λειτουργίες εδώ - εκτύπωση κόμβων και ελεύθερους κόμβους. 1244 00:58:33,840 --> 00:58:37,780 Και πάλι, αυτά είναι λειτουργίες που είναι θα είναι καλό για εσάς να ασκήσετε 1245 00:58:37,780 --> 00:58:40,990 επειδή θα σας βοηθήσει όχι μόνο με αυτές οι ασκήσεις του δείγματος, αλλά και 1246 00:58:40,990 --> 00:58:42,180 σχετικά με το πρόβλημα που. 1247 00:58:42,180 --> 00:58:44,230 Μπορούν χάρτη για αρκετά στενά τα πράγματα εσείς πρόκειται να πρέπει να κάνουν σε περίπτωση 1248 00:58:44,230 --> 00:58:45,010 πρόβλημα που τίθεται. 1249 00:58:45,010 --> 00:58:47,640 Αλλά θέλω να βεβαιωθείτε θα αναφερθώ σε όλα. 1250 00:58:47,640 --> 00:58:50,400 Και πίνακες κατακερματισμού είναι επίσης ζωτικής σημασίας για την τι κάνουμε σε αυτό το τμήμα 1251 00:58:50,400 --> 00:58:51,980 εβδομάδα - είτε στο σύνολο του προβλήματος. 1252 00:58:51,980 --> 00:58:55,200 >> Έτσι θα πάμε για να τελειώσει το τμήμα μιλάμε για πίνακες κατακερματισμού. 1253 00:58:55,200 --> 00:58:58,140 Εάν παρατηρήσετε έκανα μια μικρό πίνακα κατακερματισμού. 1254 00:58:58,140 --> 00:59:00,020 Αυτό δεν είναι ό, τι μιλάμε περίπου, ωστόσο. 1255 00:59:00,020 --> 00:59:03,540 Μιλάμε για μια διαφορετική Τύπος των πινάκων κατακερματισμού. 1256 00:59:03,540 --> 00:59:07,300 Και στον πυρήνα, ένα πίνακα κατακερματισμού της δεν είναι τίποτα περισσότερο από ένα 1257 00:59:07,300 --> 00:59:08,860 σειρά συν μια συνάρτηση κατακερματισμού. 1258 00:59:08,860 --> 00:59:11,150 Εμείς πάμε για να μιλήσουμε για λίγο μόνο για να βεβαιωθείτε ότι όλοι καταλαβαίνουν τι 1259 00:59:11,150 --> 00:59:12,110 hash λειτουργία. 1260 00:59:12,110 --> 00:59:15,420 Και σας το λέω τώρα ότι είναι τίποτα περισσότερο από δύο πράγματα - 1261 00:59:15,420 --> 00:59:18,590 μια σειρά και μια συνάρτηση κατακερματισμού. 1262 00:59:18,590 --> 00:59:20,716 Και εδώ είναι τα βήματα μέσω που αυτό λειτουργεί. 1263 00:59:20,716 --> 00:59:31,560 1264 00:59:31,560 --> 00:59:32,810 >> Υπάρχει σειρά μας. 1265 00:59:32,810 --> 00:59:38,460 1266 00:59:38,460 --> 00:59:39,460 Υπάρχει λειτουργία μας. 1267 00:59:39,460 --> 00:59:43,180 Ειδικότερα, συναρτήσεις κατακερματισμού πρέπει να κάνει μερικά πράγματα με αυτό. 1268 00:59:43,180 --> 00:59:45,040 Πάω να μιλήσω ειδικά περίπου που αυτό το πρόβλημα. 1269 00:59:45,040 --> 00:59:46,450 Είναι κατά πάσα πιθανότητα θα λαμβάνει σε μια σειρά. 1270 00:59:46,450 --> 00:59:50,570 1271 00:59:50,570 --> 00:59:51,770 Και τι πρόκειται να επιστρέψει; 1272 00:59:51,770 --> 00:59:52,640 Τι είδους δεδομένα; 1273 00:59:52,640 --> 00:59:54,260 Alden; 1274 00:59:54,260 --> 00:59:55,760 Συνάρτηση κατακερματισμού σας επιστρέψει; 1275 00:59:55,760 --> 00:59:58,760 Ένας ακέραιος. 1276 00:59:58,760 --> 01:00:01,700 Έτσι, αυτό είναι ό, τι το hash πίνακας αποτελείται από - 1277 01:00:01,700 --> 01:00:05,430 ένας πίνακας με τη μορφή συστοιχίας και μια συνάρτηση κατακερματισμού. 1278 01:00:05,430 --> 01:00:06,010 Πώς λειτουργεί; 1279 01:00:06,010 --> 01:00:07,300 Δρα σε τρία βήματα. 1280 01:00:07,300 --> 01:00:08,740 Μπορούμε να δώσουμε ένα κλειδί. 1281 01:00:08,740 --> 01:00:11,470 Σε αυτή την περίπτωση, θα δώσει μια σειρά. 1282 01:00:11,470 --> 01:00:18,140 Καλούμε την συνάρτηση κατακερματισμού ανά ένα βήμα στο κλειδί και παίρνουμε μια τιμή. 1283 01:00:18,140 --> 01:00:20,310 >> Συγκεκριμένα, εμείς θα πούμε έχουμε έναν ακέραιο. 1284 01:00:20,310 --> 01:00:25,630 Αυτό ακέραιος, υπάρχουν πολύ συγκεκριμένες όρια στο τι μπορεί να είναι ακέραιος. 1285 01:00:25,630 --> 01:00:28,880 Σε αυτό το παράδειγμα, συστοιχία μας είναι το μέγεθος των τριών. 1286 01:00:28,880 --> 01:00:32,330 Έτσι τι οι αριθμοί μπορεί να είναι ότι το ακέραιο. 1287 01:00:32,330 --> 01:00:35,970 Ποιο είναι το εύρος των έγκυρων τιμών για ότι ακέραιος, ο τύπος επιστροφής αυτής 1288 01:00:35,970 --> 01:00:37,220 hash λειτουργία; 1289 01:00:37,220 --> 01:00:40,440 1290 01:00:40,440 --> 01:00:42,110 Zero, ένα και δύο. 1291 01:00:42,110 --> 01:00:46,060 Το σημείο της συνάρτησης κατακερματισμού είναι να καταλάβω τη θέση στη συστοιχία 1292 01:00:46,060 --> 01:00:47,790 πού είναι το κλειδί μας πηγαίνει. 1293 01:00:47,790 --> 01:00:51,290 Είναι μόνο τρεις πιθανές υπάρχει μέρη εδώ - 1294 01:00:51,290 --> 01:00:52,130 μηδέν, ένα, ή δύο. 1295 01:00:52,130 --> 01:00:55,360 Έτσι, αυτή η λειτουργία καλύτερη απόδοση μηδέν, ένα, ή δύο. 1296 01:00:55,360 --> 01:00:58,740 Μερικά έγκυρη indice σε αυτό το array. 1297 01:00:58,740 --> 01:01:02,770 >> Και στη συνέχεια, ανάλογα με το πού επιστρέφει, μπορείτε να δείτε υπάρχει ανοικτή σειρά 1298 01:01:02,770 --> 01:01:03,730 περικλείουν την τιμή. 1299 01:01:03,730 --> 01:01:05,800 Αυτός είναι όπου βάζουμε το κλειδί. 1300 01:01:05,800 --> 01:01:11,280 Έτσι έχουμε ρίξει στην κολοκύθα, παίρνουμε από το μηδέν. 1301 01:01:11,280 --> 01:01:15,540 Στο βραχίονα σειρά 0, βάζουμε κολοκύθα. 1302 01:01:15,540 --> 01:01:21,070 Έχουμε ρίξει στις γάτες, θα βγούμε από ένα. 1303 01:01:21,070 --> 01:01:24,110 Βάζουμε γάτα σε ένα. 1304 01:01:24,110 --> 01:01:25,480 Βάζουμε σε αράχνη. 1305 01:01:25,480 --> 01:01:26,710 Παίρνουμε από δύο. 1306 01:01:26,710 --> 01:01:30,200 Βάλαμε αράχνη στο βραχίονα συστοιχία δύο. 1307 01:01:30,200 --> 01:01:32,300 Θα ήταν τόσο ωραίο αν λειτούργησε σαν αυτό. 1308 01:01:32,300 --> 01:01:35,570 Αλλά δυστυχώς, όπως θα δούμε, είναι λίγο πιο περίπλοκη. 1309 01:01:35,570 --> 01:01:37,570 >> Πριν φτάσουμε εκεί, απορίες σχετικά με αυτό το βασικό 1310 01:01:37,570 --> 01:01:38,820 set-up ενός πίνακα κατακερματισμού; 1311 01:01:38,820 --> 01:01:49,050 1312 01:01:49,050 --> 01:01:51,940 Αυτή είναι μια εικόνα ακριβώς αυτό που επέστησε στο διοικητικό συμβούλιο. 1313 01:01:51,940 --> 01:01:55,420 Αλλά δεδομένου ότι επέστησε στο διοικητικό συμβούλιο, I Δεν πρόκειται να υπεισέλθω σε περαιτέρω. 1314 01:01:55,420 --> 01:02:00,430 Ουσιαστικά πλήκτρα, το μαγικό μαύρο κουτί - ή στην περίπτωση αυτή, το πλαίσιο teal - ενός 1315 01:02:00,430 --> 01:02:02,410 hash λειτουργία τους βάζει σε κουβάδες. 1316 01:02:02,410 --> 01:02:04,690 Και σε αυτό το παράδειγμα είμαστε Δεν βάζοντας το όνομα. 1317 01:02:04,690 --> 01:02:07,880 Βάζουμε το σχετικό τηλέφωνο τον αριθμό του ονόματος στον κάδο. 1318 01:02:07,880 --> 01:02:10,430 Αλλά θα μπορούσε πολύ καλά μόνο βάλετε το όνομα στον κάδο. 1319 01:02:10,430 --> 01:02:12,950 >> Αυτή είναι μόνο μια εικόνα του τι αντλήσαμε στο διοικητικό συμβούλιο. 1320 01:02:12,950 --> 01:02:14,460 Έχουμε πιθανές παγίδες, όμως. 1321 01:02:14,460 --> 01:02:17,470 Και υπάρχουν δύο ιδιαίτερα διαφάνειες ότι θέλω να πάω πάνω. 1322 01:02:17,470 --> 01:02:20,230 Το πρώτο είναι περίπου μια συνάρτηση κατακερματισμού. 1323 01:02:20,230 --> 01:02:22,620 Γι 'αυτό και έθεσε το ερώτημα, τι κάνει μια καλή συνάρτηση κατακερματισμού; 1324 01:02:22,620 --> 01:02:24,220 Δίνω δύο απαντήσεις. 1325 01:02:24,220 --> 01:02:26,630 Το πρώτο είναι ότι είναι ντετερμινιστική. 1326 01:02:26,630 --> 01:02:29,660 Στο πλαίσιο των hash συναρτήσεων, Τι σημαίνει αυτό; 1327 01:02:29,660 --> 01:02:37,840 1328 01:02:37,840 --> 01:02:39,282 Ναι; 1329 01:02:39,282 --> 01:02:42,850 >> ΚΟΙΝΟ: Μπορεί να βρει το δείκτη σε σταθερό χρόνο; 1330 01:02:42,850 --> 01:02:43,810 >> JASON Hirschhorn: Ότι Δεν είναι ό, τι αυτό σημαίνει. 1331 01:02:43,810 --> 01:02:44,725 Αλλά αυτό είναι μια καλή εικασία. 1332 01:02:44,725 --> 01:02:46,100 Οποιοσδήποτε άλλος έχει μια εικασία με ό, τι σημαίνει αυτό; 1333 01:02:46,100 --> 01:02:47,780 Ότι μια καλή συνάρτηση κατακερματισμού είναι προσδιοριστική; 1334 01:02:47,780 --> 01:02:48,280 Annie; 1335 01:02:48,280 --> 01:02:51,680 >> ΚΟΙΝΟ: Αυτό το κλειδί μπορεί να αντιστοιχιστεί μόνο σε μία θέση στον πίνακα κατακερματισμού. 1336 01:02:51,680 --> 01:02:53,070 >> JASON Hirschhorn: Αυτό είναι ακριβώς δεξιά. 1337 01:02:53,070 --> 01:02:57,430 Κάθε φορά που θα τεθεί σε κολοκύθα, επιστρέφει πάντα το μηδέν. 1338 01:02:57,430 --> 01:03:01,660 Αν βάλετε στην κολοκύθα και κατακερματισμού σας συνάρτηση επιστρέφει μηδέν, αλλά έχει 1339 01:03:01,660 --> 01:03:06,060 πιθανότητα της επιστροφής κάτι άλλο είναι μεγαλύτερη από το μηδέν - 1340 01:03:06,060 --> 01:03:09,280 έτσι ίσως να μπορέσει να επιστρέψει μία φορές ή δύο άλλες φορές - 1341 01:03:09,280 --> 01:03:11,100 ότι δεν είναι μια καλή συνάρτηση κατακερματισμού. 1342 01:03:11,100 --> 01:03:11,800 Έχεις απόλυτο δίκιο. 1343 01:03:11,800 --> 01:03:15,680 Συνάρτηση κατακερματισμού σας θα πρέπει να επιστρέψει το ίδιο ακριβώς ακέραιος, στην περίπτωση αυτή, για 1344 01:03:15,680 --> 01:03:17,780 το ίδιο ακριβώς με τη φράση. 1345 01:03:17,780 --> 01:03:22,210 >> Ίσως να επιστρέφει ακριβώς το ίδιο ακέραιο για την ίδια ακριβώς σειρά 1346 01:03:22,210 --> 01:03:24,430 ανεξάρτητα από την κεφαλαιοποίηση. 1347 01:03:24,430 --> 01:03:27,980 Αλλά σε αυτή την περίπτωση είναι ακόμα ντετερμινιστική, επειδή πολλαπλές πράγματα 1348 01:03:27,980 --> 01:03:29,350 απεικονίζονται επί της ίδιας αξίας. 1349 01:03:29,350 --> 01:03:30,170 Αυτό είναι μια χαρά. 1350 01:03:30,170 --> 01:03:32,615 Εφ 'όσον υπάρχει μόνο μία εξόδου για μια δεδομένη είσοδο. 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 Το δεύτερο πράγμα είναι ότι επιστρέφει έγκυρη δείκτες. 1354 01:03:38,340 --> 01:03:40,220 Έχουμε ανατραφεί ότι νωρίτερα. 1355 01:03:40,220 --> 01:03:41,860 Αυτή η λειτουργία hash - 1356 01:03:41,860 --> 01:03:43,710 αμάν - 1357 01:03:43,710 --> 01:03:46,840 μια συνάρτηση κατακερματισμού πρέπει να επιστρέψει έγκυρη δείκτες. 1358 01:03:46,840 --> 01:03:47,740 Έτσι λένε - 1359 01:03:47,740 --> 01:03:48,990 ας πάμε πίσω σε αυτό το παράδειγμα. 1360 01:03:48,990 --> 01:03:52,580 1361 01:03:52,580 --> 01:03:57,540 Συνάρτηση κατακερματισμού μου μετρά τα γράμματα της λέξης. 1362 01:03:57,540 --> 01:03:58,380 Αυτή είναι η συνάρτηση κατακερματισμού. 1363 01:03:58,380 --> 01:03:59,740 Και επιστρέφει ότι ακέραιος. 1364 01:03:59,740 --> 01:04:04,280 Έτσι, αν έχω τη λέξη Α, είναι πρόκειται να επιστρέψει ένα. 1365 01:04:04,280 --> 01:04:06,900 Και πρόκειται να θέσει ένα εδώ. 1366 01:04:06,900 --> 01:04:09,430 Τι θα συμβεί αν βάλω στη λέξη ρόπαλο; 1367 01:04:09,430 --> 01:04:11,310 Είναι πρόκειται να επιστρέψει τρεις. 1368 01:04:11,310 --> 01:04:12,560 Πού πάει ρόπαλο; 1369 01:04:12,560 --> 01:04:18,730 1370 01:04:18,730 --> 01:04:19,750 >> Δεν ταιριάζει. 1371 01:04:19,750 --> 01:04:21,000 Αλλά πρέπει να πάει κάπου. 1372 01:04:21,000 --> 01:04:23,340 Αυτό είναι το τραπέζι hash μου μετά από όλα, και ό, τι χρειάζεται για να πάει κάπου. 1373 01:04:23,340 --> 01:04:24,590 Έτσι, όταν θα πάτε ρόπαλο; 1374 01:04:24,590 --> 01:04:28,020 1375 01:04:28,020 --> 01:04:28,710 Οποιεσδήποτε σκέψεις; 1376 01:04:28,710 --> 01:04:29,450 Εικασίες; 1377 01:04:29,450 --> 01:04:30,280 Καλή εικασίες; 1378 01:04:30,280 --> 01:04:31,220 >> ΚΟΙΝΟ: Μηδέν. 1379 01:04:31,220 --> 01:04:32,120 >> JASON Hirschhorn: Γιατί το μηδέν; 1380 01:04:32,120 --> 01:04:35,990 >> ΚΟΙΝΟ: Επειδή τρεις modulo τρεις είναι μηδέν; 1381 01:04:35,990 --> 01:04:38,620 >> JASON Hirschhorn: Τρία modulo τρεις είναι μηδέν. 1382 01:04:38,620 --> 01:04:40,810 Αυτό είναι μια μεγάλη εικασία, και αυτό είναι σωστό. 1383 01:04:40,810 --> 01:04:43,870 Έτσι, στην περίπτωση αυτή θα πρέπει να πάει πιθανώς στο μηδέν. 1384 01:04:43,870 --> 01:04:51,080 Έτσι, ένας καλός τρόπος για να εξασφαλιστεί ότι αυτό το hash συνάρτηση επιστρέφει ισχύει μόνο δύο δείκτες 1385 01:04:51,080 --> 01:04:54,580 να modulo από το μέγεθος του πίνακα. 1386 01:04:54,580 --> 01:04:57,360 Αν modulo ό, τι αυτό επιστρέφει από τρεις, είστε πάντα πρόκειται να πάρει 1387 01:04:57,360 --> 01:05:00,930 κάτι μεταξύ μηδέν, ένα και δύο. 1388 01:05:00,930 --> 01:05:05,160 Και αν αυτό επιστρέφει πάντα επτά, και πάντα με μέτρο από τρεις, είστε 1389 01:05:05,160 --> 01:05:06,030 πάντα πρόκειται να πάρει το ίδιο πράγμα. 1390 01:05:06,030 --> 01:05:09,270 >> Έτσι είναι ακόμα ντετερμινιστική αν modulo. 1391 01:05:09,270 --> 01:05:11,420 Αλλά αυτό θα εξασφαλίσει ότι θα δεν παίρνουν ποτέ κάτι - 1392 01:05:11,420 --> 01:05:12,940 άκυρη βιομηχανία. 1393 01:05:12,940 --> 01:05:16,840 Σε γενικές γραμμές, η modulo πρέπει να συμβεί μέσα hash λειτουργία σας. 1394 01:05:16,840 --> 01:05:18,240 Έτσι δεν χρειάζεται να ανησυχείτε γι 'αυτό. 1395 01:05:18,240 --> 01:05:20,555 Μπορείτε απλά να διασφαλίσει ότι αυτό είναι ένα έγκυρο indice. 1396 01:05:20,555 --> 01:05:23,700 1397 01:05:23,700 --> 01:05:26,700 Οποιεσδήποτε ερωτήσεις σχετικά με αυτό το δυνητική παγίδα; 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 Και εκεί πάμε. 1401 01:05:40,290 --> 01:05:42,890 Επόμενο δυναμικό παγίδα, και Αυτό είναι το μεγάλο. 1402 01:05:42,890 --> 01:05:46,880 Τι θα συμβεί αν δύο πλήκτρα χάρτη στην ίδια τιμή; 1403 01:05:46,880 --> 01:05:49,350 Έτσι, υπάρχουν δύο τρόποι για να χειριστεί αυτό. 1404 01:05:49,350 --> 01:05:53,140 1405 01:05:53,140 --> 01:05:56,020 Η πρώτη ονομάζεται γραμμική διερευνητικά, το οποίο είμαι 1406 01:05:56,020 --> 01:05:57,300 δεν πρόκειται να πάει πάνω. 1407 01:05:57,300 --> 01:06:01,120 Αλλά θα πρέπει να είναι εξοικειωμένοι με το πώς ότι λειτουργεί και τι είναι αυτό. 1408 01:06:01,120 --> 01:06:05,610 >> Το δεύτερο εγώ είμαι πρόκειται να πάει πάνω επειδή αυτό είναι το ένα που πολλοί 1409 01:06:05,610 --> 01:06:08,290 οι άνθρωποι πιθανότατα θα καταλήξει στην για χρήση σε σύνολο το πρόβλημά τους. 1410 01:06:08,290 --> 01:06:09,820 Φυσικά, δεν χρειάζεται να. 1411 01:06:09,820 --> 01:06:15,280 Αλλά για το σύνολο του προβλήματος, πολλοί άνθρωποι τείνουν να επιλέξετε να δημιουργήσετε ένα πίνακα κατακερματισμού 1412 01:06:15,280 --> 01:06:17,950 με Ξεχωριστές αλυσίδες για την εφαρμογή λεξικό τους. 1413 01:06:17,950 --> 01:06:21,390 Έτσι θα πάμε να πάει πέρα ​​από το τι σημαίνει να δημιουργήσετε έναν πίνακα κατακερματισμού με 1414 01:06:21,390 --> 01:06:23,890 Ξεχωριστές αλυσίδες. 1415 01:06:23,890 --> 01:06:26,260 >> Έτσι έβαλα κολοκύθα. 1416 01:06:26,260 --> 01:06:29,560 Επιστρέφει το μηδέν. 1417 01:06:29,560 --> 01:06:31,410 Και έβαλα κολοκύθα εδώ. 1418 01:06:31,410 --> 01:06:35,880 1419 01:06:35,880 --> 01:06:37,930 Στη συνέχεια έβαλα στο - 1420 01:06:37,930 --> 01:06:39,922 τι άλλο Απόκριες με θέμα το πράγμα; 1421 01:06:39,922 --> 01:06:42,200 >> ΚΟΙΝΟ: Candy. 1422 01:06:42,200 --> 01:06:42,770 >> JASON Hirschhorn: Candy! 1423 01:06:42,770 --> 01:06:43,910 Αυτό είναι ένα μεγάλο. 1424 01:06:43,910 --> 01:06:47,760 Έβαλα στην καραμέλα και καραμέλα μου δίνει επίσης μηδέν. 1425 01:06:47,760 --> 01:06:49,350 Τι μπορώ να κάνω; 1426 01:06:49,350 --> 01:06:51,940 Οποιεσδήποτε ιδέες; 1427 01:06:51,940 --> 01:06:53,940 Επειδή όλοι γνωρίζουμε το είδος της τι Ξεχωριστές αλυσίδες είναι. 1428 01:06:53,940 --> 01:06:55,190 Έτσι, οποιεσδήποτε ιδέες τι να κάνω; 1429 01:06:55,190 --> 01:06:58,170 1430 01:06:58,170 --> 01:06:59,110 Ναι. 1431 01:06:59,110 --> 01:07:03,810 >> ΚΟΙΝΟ: Κάνοντας το string πραγματικά στον πίνακα κατακερματισμού. 1432 01:07:03,810 --> 01:07:08,910 >> JASON Hirschhorn: Έτσι θα πάμε για να επιστήσει την καλή ιδέα εδώ. 1433 01:07:08,910 --> 01:07:09,340 OK. 1434 01:07:09,340 --> 01:07:12,290 >> ΚΟΙΝΟ: Έχετε το hashtable [Δεν ακούγεται] 1435 01:07:12,290 --> 01:07:16,640 ο δείκτης που δείχνει προς η αρχή μιας λίστας. 1436 01:07:16,640 --> 01:07:20,930 Και στη συνέχεια να κολοκύθα είναι η πρώτη τιμή στην εν λόγω συνδεδεμένη λίστα και γλυκά είναι 1437 01:07:20,930 --> 01:07:22,800 η δεύτερη τιμή στην εν λόγω συνδεδεμένη λίστα. 1438 01:07:22,800 --> 01:07:23,420 >> JASON Hirschhorn: OK. 1439 01:07:23,420 --> 01:07:24,670 Marcus, που ήταν εξαιρετική. 1440 01:07:24,670 --> 01:07:26,160 Πάω να σπάσει το κάτω. 1441 01:07:26,160 --> 01:07:28,890 Ο Μάρκους λέει δεν αντικαταστήσετε κολοκύθα. 1442 01:07:28,890 --> 01:07:30,660 Αυτό θα ήταν κακό. 1443 01:07:30,660 --> 01:07:33,640 Μη βάζετε καραμέλα κάπου αλλού. 1444 01:07:33,640 --> 01:07:35,390 Εμείς πάμε για να τους βάλει τόσο στο μηδέν. 1445 01:07:35,390 --> 01:07:37,770 Αλλά θα πάμε να ασχοληθεί με τη θέση τους σε μηδέν 1446 01:07:37,770 --> 01:07:39,395 δημιουργώντας μια λίστα στο μηδέν. 1447 01:07:39,395 --> 01:07:42,430 Και θα πάμε για να δημιουργήσετε μια λίστα όλα αυτά που αντιστοιχίζεται στο μηδέν. 1448 01:07:42,430 --> 01:07:47,960 Και ο καλύτερος τρόπος που μάθαμε να δημιουργήσετε μια λίστα που μπορεί να αναπτυχθεί και να συρρικνωθεί 1449 01:07:47,960 --> 01:07:49,840 δυναμικά δεν είναι εντός άλλη διάταξη. 1450 01:07:49,840 --> 01:07:51,510 Έτσι, δεν είναι μια πολυδιάστατη array. 1451 01:07:51,510 --> 01:07:54,080 Αλλά για να δημιουργήσετε μόνο μια συνδεδεμένη λίστα. 1452 01:07:54,080 --> 01:07:55,330 >> Έτσι, αυτό που πρότεινε - 1453 01:07:55,330 --> 01:07:57,950 1454 01:07:57,950 --> 01:07:59,200 Πάω να πάρετε ένα νέο - 1455 01:07:59,200 --> 01:08:15,380 1456 01:08:15,380 --> 01:08:19,689 είναι να δημιουργήσετε έναν πίνακα με δείκτες, μια σειρά από δείκτες. 1457 01:08:19,689 --> 01:08:20,580 OK. 1458 01:08:20,580 --> 01:08:24,180 Κάθε ιδέα ή υπόδειξη από τον τύπο αυτής δείκτες θα πρέπει να είναι; 1459 01:08:24,180 --> 01:08:26,290 Μάρκους; 1460 01:08:26,290 --> 01:08:27,250 >> ΚΟΙΝΟ: Δείκτες σε - 1461 01:08:27,250 --> 01:08:28,609 >> JASON Hirschhorn: Επειδή σας είπε μια συνδεδεμένη λίστα, έτσι - 1462 01:08:28,609 --> 01:08:29,520 >> ΚΟΙΝΟ: Δείκτες κόμβου; 1463 01:08:29,520 --> 01:08:30,670 >> JASON Hirschhorn: Δείκτες κόμβου. 1464 01:08:30,670 --> 01:08:32,830 Αν τα πράγματα στη συνδέεται μας λίστα είναι οι κόμβοι τότε 1465 01:08:32,830 --> 01:08:34,370 θα πρέπει να είναι δείκτες κόμβο. 1466 01:08:34,370 --> 01:08:35,939 Και τι ισούται αρχικά; 1467 01:08:35,939 --> 01:08:36,990 >> ΚΟΙΝΟ: 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 Έτσι, υπάρχει κενό πράγμα μας. 1471 01:08:46,080 --> 01:08:47,170 Επιστρέφει κολοκύθας μηδέν. 1472 01:08:47,170 --> 01:08:48,569 Τι πρέπει να κάνουμε; 1473 01:08:48,569 --> 01:08:49,609 Περπατήστε μου μέσα από αυτό; 1474 01:08:49,609 --> 01:08:50,810 Στην πραγματικότητα, Marcus ήδη μου έδωσε. 1475 01:08:50,810 --> 01:08:52,439 Κάποιος άλλος τα πόδια μου μέσα από αυτό. 1476 01:08:52,439 --> 01:08:54,760 Τι κάνουμε όταν - 1477 01:08:54,760 --> 01:08:56,609 Αυτό μοιάζει πολύ με ό, τι μας κάνει ακριβώς. 1478 01:08:56,609 --> 01:08:57,396 Avi. 1479 01:08:57,396 --> 01:08:59,090 >> ΚΟΙΝΟ: Πάω να λάβει μια εικασία. 1480 01:08:59,090 --> 01:09:01,250 Έτσι, όταν θα έχετε καραμέλα. 1481 01:09:01,250 --> 01:09:01,640 >> JASON Hirschhorn: Ναι. 1482 01:09:01,640 --> 01:09:03,120 Λοιπόν, έχουμε κολοκύθα. 1483 01:09:03,120 --> 01:09:03,870 Ας πάρουμε πρώτα το ένα μας. 1484 01:09:03,870 --> 01:09:04,324 Έχουμε κολοκύθα. 1485 01:09:04,324 --> 01:09:04,779 >> ΚΟΙΝΟ: OK. 1486 01:09:04,779 --> 01:09:05,880 Επιστρέφει κολοκύθας μηδέν. 1487 01:09:05,880 --> 01:09:08,770 Έτσι, μπορείτε να το βάλετε σε αυτό. 1488 01:09:08,770 --> 01:09:10,810 Ή στην πραγματικότητα, μπορείτε να το βάλετε στην συνδεδεμένη λίστα. 1489 01:09:10,810 --> 01:09:13,550 >> JASON Hirschhorn: Πώς μπορούμε να το βάζουμε σε συνδεδεμένη λίστα; 1490 01:09:13,550 --> 01:09:15,479 >> ΚΟΙΝΟ: Ω, η πραγματική σύνταξη; 1491 01:09:15,479 --> 01:09:16,240 >> JASON Hirschhorn: Μόνο με τα πόδια - 1492 01:09:16,240 --> 01:09:16,740 πω περισσότερα. 1493 01:09:16,740 --> 01:09:19,310 Τι πρέπει να κάνουμε; 1494 01:09:19,310 --> 01:09:22,100 >> ΚΟΙΝΟ: Απλά τοποθετήστε ως τον πρώτο κόμβο. 1495 01:09:22,100 --> 01:09:22,675 >> JASON Hirschhorn: OK. 1496 01:09:22,675 --> 01:09:29,069 Έτσι έχουμε τον κόμβο μας, κολοκύθα. 1497 01:09:29,069 --> 01:09:31,560 Και τώρα πώς μπορώ να το τοποθετήσετε; 1498 01:09:31,560 --> 01:09:34,590 1499 01:09:34,590 --> 01:09:37,090 >> ΚΟΙΝΟ: Μπορείτε να εκχωρήσετε να το δείκτη. 1500 01:09:37,090 --> 01:09:37,970 >> JASON Hirschhorn: Ποια δείκτη; 1501 01:09:37,970 --> 01:09:39,620 >> ΚΟΙΝΟ: Ο δείκτης στο μηδέν. 1502 01:09:39,620 --> 01:09:41,420 >> JASON Hirschhorn: Έτσι, όταν κάνει αυτό το σημείο; 1503 01:09:41,420 --> 01:09:42,810 >> ΚΟΙΝΟ: Να null τώρα. 1504 01:09:42,810 --> 01:09:43,529 >> JASON Hirschhorn: Λοιπόν, είναι να υποδεικνύουν σε null. 1505 01:09:43,529 --> 01:09:44,499 Αλλά βάζω στην κολοκύθα. 1506 01:09:44,499 --> 01:09:46,053 Έτσι, όταν θα πρέπει να το σημείο; 1507 01:09:46,053 --> 01:09:46,880 >> ΚΟΙΝΟ: Να κολοκύθα. 1508 01:09:46,880 --> 01:09:47,399 >> JASON Hirschhorn: Να κολοκύθα. 1509 01:09:47,399 --> 01:09:48,760 Ακριβώς. 1510 01:09:48,760 --> 01:09:50,010 Έτσι, αυτό δείχνει την κολοκύθα. 1511 01:09:50,010 --> 01:09:52,500 1512 01:09:52,500 --> 01:09:54,250 Και όταν το κάνει αυτό δείκτη Στο σημείο κολοκύθα; 1513 01:09:54,250 --> 01:09:57,986 1514 01:09:57,986 --> 01:09:58,340 Να 1515 01:09:58,340 --> 01:09:58,590 >> ΚΟΙΝΟ: Null. 1516 01:09:58,590 --> 01:09:59,210 >> JASON Hirschhorn: Να μηδέν. 1517 01:09:59,210 --> 01:10:00,460 Ακριβώς. 1518 01:10:00,460 --> 01:10:03,570 1519 01:10:03,570 --> 01:10:05,140 Γι 'αυτό και μόλις εισαχθεί κάτι στην συνδεδεμένη λίστα. 1520 01:10:05,140 --> 01:10:07,210 Γράψαμε ακριβώς αυτόν τον κωδικό για να γίνει αυτό. 1521 01:10:07,210 --> 01:10:09,520 Σχεδόν έχουμε σχεδόν το πήρα εντελώς ραγισμένα. 1522 01:10:09,520 --> 01:10:10,790 Τώρα εισάγουμε καραμέλα. 1523 01:10:10,790 --> 01:10:13,480 Καραμέλα μας πηγαίνει επίσης στο μηδέν. 1524 01:10:13,480 --> 01:10:16,100 Λοιπόν, τι θα κάνουμε με την καραμέλα; 1525 01:10:16,100 --> 01:10:18,790 >> ΚΟΙΝΟ: Εξαρτάται από το αν ή Δεν προσπαθούμε να το λύσουμε. 1526 01:10:18,790 --> 01:10:19,640 >> JASON Hirschhorn: Αυτό είναι ακριβώς δεξιά. 1527 01:10:19,640 --> 01:10:21,070 Εξαρτάται από το εάν ή όχι προσπαθούμε να το λύσουμε. 1528 01:10:21,070 --> 01:10:22,660 Ας υποθέσουμε ότι δεν είμαστε πρόκειται να το λύσουμε. 1529 01:10:22,660 --> 01:10:24,880 >> ΚΟΙΝΟ: Λοιπόν, όπως συζητήσαμε πριν, αυτό είναι απλούστερο απλά για να το θέσω 1530 01:10:24,880 --> 01:10:28,590 από την αρχή, ώστε ο δείκτης από μηδέν βαθμούς σε καραμέλα. 1531 01:10:28,590 --> 01:10:29,020 >> JASON Hirschhorn: OK. 1532 01:10:29,020 --> 01:10:29,380 Περίμενε. 1533 01:10:29,380 --> 01:10:30,630 Επιτρέψτε μου να δημιουργήσει καραμέλα εδώ. 1534 01:10:30,630 --> 01:10:34,030 1535 01:10:34,030 --> 01:10:35,150 Έτσι, αυτό το δείκτη - 1536 01:10:35,150 --> 01:10:37,590 >> ΚΟΙΝΟ: Ναι, πρέπει τώρα πρέπει να δείχνουν προς την καραμέλα. 1537 01:10:37,590 --> 01:10:40,580 Στη συνέχεια, έχουμε το δείκτη από σημείο καραμέλα κολοκύθα. 1538 01:10:40,580 --> 01:10:43,140 1539 01:10:43,140 --> 01:10:44,560 >> JASON Hirschhorn: Σας αρέσει αυτό; 1540 01:10:44,560 --> 01:10:47,380 Και έλεγα ότι έχουμε ένα άλλο πράγμα για να χαρτογραφήσουν το μηδέν; 1541 01:10:47,380 --> 01:10:48,660 >> ΚΟΙΝΟ: Λοιπόν, απλά κάνουν το ίδιο πράγμα; 1542 01:10:48,660 --> 01:10:50,290 >> JASON Hirschhorn: Κάνετε το ίδιο πράγμα. 1543 01:10:50,290 --> 01:10:53,700 Έτσι, σε αυτή την περίπτωση, αν δεν το κάνουμε θέλετε να κρατήσετε το ταξινομημένο 1544 01:10:53,700 --> 01:10:55,270 Ακούγεται αρκετά απλό. 1545 01:10:55,270 --> 01:10:59,920 Παίρνουμε το δείκτη του ποντικιού στην indice δίνεται από τη λειτουργία hash μας. 1546 01:10:59,920 --> 01:11:03,830 Έχουμε αυτό το σημείο στο νέο κόμβο μας. 1547 01:11:03,830 --> 01:11:07,830 Και τότε ό, τι έδειχνε στο παρελθόν - 1548 01:11:07,830 --> 01:11:10,620 σε αυτή την περίπτωση null, στην δεύτερη περίπτωση κολοκύθα - 1549 01:11:10,620 --> 01:11:15,310 ότι, όποια και αν είναι δείχνοντας προηγουμένως, προσθέτουμε στο επόμενο της 1550 01:11:15,310 --> 01:11:17,810 νέος κόμβος μας. 1551 01:11:17,810 --> 01:11:19,650 Είμαστε εισάγοντας κάτι στην αρχή. 1552 01:11:19,650 --> 01:11:22,900 Στην πραγματικότητα αυτό είναι μια πολύ απλούστερη από ό, τι προσπαθεί να κρατήσει τη λίστα ταξινομημένο. 1553 01:11:22,900 --> 01:11:25,340 Αλλά και πάλι, η αναζήτηση θα είναι περιπλέκεται περισσότερο εδώ. 1554 01:11:25,340 --> 01:11:28,300 Θα πρέπει πάντα να πάει μέχρι το τέλος. 1555 01:11:28,300 --> 01:11:29,650 >> OK. 1556 01:11:29,650 --> 01:11:32,750 Οποιεσδήποτε ερωτήσεις σχετικά με Ξεχωριστές αλυσίδες; 1557 01:11:32,750 --> 01:11:34,690 Πώς λειτουργεί; 1558 01:11:34,690 --> 01:11:35,820 Παρακαλώ ρωτήστε τους τώρα. 1559 01:11:35,820 --> 01:11:39,260 Θέλω πραγματικά να βεβαιωθείτε ότι έχετε όλα καταλάβουμε αυτό πριν από το κεφάλι έξω. 1560 01:11:39,260 --> 01:11:48,410 1561 01:11:48,410 --> 01:11:52,060 >> ΚΟΙΝΟ: Γιατί βάζετε κολοκύθα και καραμέλα στο ίδιο 1562 01:11:52,060 --> 01:11:54,108 μέρος του πίνακα κατακερματισμού; 1563 01:11:54,108 --> 01:11:55,860 >> JASON Hirschhorn: Καλή ερώτηση. 1564 01:11:55,860 --> 01:11:59,140 Γιατί τα βάζουμε στο ίδιο μέρος του πίνακα κατακερματισμού; 1565 01:11:59,140 --> 01:12:03,200 Λοιπόν, σε αυτή την περίπτωση η συνάρτηση κατακερματισμού μας επιστρέφει μηδέν και για τους δύο. 1566 01:12:03,200 --> 01:12:05,310 Γι 'αυτό πρέπει να πάμε στο μηδέν indice επειδή αυτό είναι όπου θα πάμε να 1567 01:12:05,310 --> 01:12:07,420 αναζητήστε τους αν ποτέ θέλουν να τα αναζητήσετε. 1568 01:12:07,420 --> 01:12:11,750 Και πάλι, με μια προσέγγιση γραμμική ανίχνευση εμείς δεν θα τους έθετε τόσο στο μηδέν. 1569 01:12:11,750 --> 01:12:13,900 Αλλά στην προσέγγιση χωριστή αλυσίδα, θα πάμε να τα βάλουμε τόσο στο μηδέν 1570 01:12:13,900 --> 01:12:16,620 και στη συνέχεια να δημιουργήσετε μια λίστα μακριά από το μηδέν. 1571 01:12:16,620 --> 01:12:20,140 >> Και δεν θέλουμε να αντικαταστήσετε κολοκύθα απλά για αυτό, διότι τότε θα 1572 01:12:20,140 --> 01:12:21,860 υποθέσουμε ότι η κολοκύθα ήταν ποτέ εισαχθεί. 1573 01:12:21,860 --> 01:12:25,230 Αν κρατήσει μόνο ένα πράγμα στο θέση που θα ήταν κακό. 1574 01:12:25,230 --> 01:12:28,590 Τότε δεν θα υπήρχε πιθανότητα εμάς ποτέ - 1575 01:12:28,590 --> 01:12:31,660 αν είχαμε ποτέ ένα αντίγραφο, τότε θα διαγράψει ακριβώς την αρχική αξία μας. 1576 01:12:31,660 --> 01:12:34,090 Έτσι, γι 'αυτό κάνουμε αυτή την προσέγγιση. 1577 01:12:34,090 --> 01:12:36,580 Ή ότι είναι ο λόγος που επιλέξαμε - και πάλι όμως, επέλεξε την ξεχωριστή προσέγγιση αλυσοποίηση, 1578 01:12:36,580 --> 01:12:39,670 το οποίο υπάρχουν πολλές άλλες προσεγγίσεις θα μπορούσε κανείς να επιλέξει. 1579 01:12:39,670 --> 01:12:41,185 Μήπως αυτό απαντήσω στην ερώτησή σας; 1580 01:12:41,185 --> 01:12:41,660 >> OK. 1581 01:12:41,660 --> 01:12:42,910 Κάρλος. 1582 01:12:42,910 --> 01:12:46,130 1583 01:12:46,130 --> 01:12:47,720 Γραμμική σχολαστικά συνεπάγεται - 1584 01:12:47,720 --> 01:12:51,913 αν βρήκαμε μια σύγκρουση στο μηδέν, έχουμε θα δούμε στο επόμενο σημείο για να δούμε αν 1585 01:12:51,913 --> 01:12:54,310 ήταν ανοιχτή και να το βάλεις εκεί. 1586 01:12:54,310 --> 01:12:57,320 Και τότε θα δούμε στο επόμενο αθλητισμό και να δούμε αν αυτό ήταν ανοιχτή και να το βάλεις εκεί. 1587 01:12:57,320 --> 01:12:59,780 Έτσι, βρίσκουμε το επόμενο διαθέσιμο ανοικτή θέση και να το βάλετε εκεί. 1588 01:12:59,780 --> 01:13:02,580 1589 01:13:02,580 --> 01:13:03,890 Οποιεσδήποτε άλλες ερωτήσεις; 1590 01:13:03,890 --> 01:13:05,370 Ναι, Avi. 1591 01:13:05,370 --> 01:13:07,490 >> ΚΟΙΝΟ: Ως συνέχεια αυτού, τι εννοείς με το επόμενο σημείο; 1592 01:13:07,490 --> 01:13:10,250 Στον πίνακα hash ή σε συνδεδεμένη λίστα. 1593 01:13:10,250 --> 01:13:12,100 >> JASON Hirschhorn: Για τις γραμμικές προγραμματισμού, δεν συνδέονται με τους καταλόγους. 1594 01:13:12,100 --> 01:13:13,400 Το επόμενο σημείο του πίνακα κατακερματισμού. 1595 01:13:13,400 --> 01:13:13,820 >> ΚΟΙΝΟ: OK. 1596 01:13:13,820 --> 01:13:17,570 Έτσι, ο πίνακας κατακερματισμού θα ήταν αρχικοποιείται με το μέγεθος - 1597 01:13:17,570 --> 01:13:19,560 όπως ο αριθμός των χορδών ότι είστε εισαγωγή; 1598 01:13:19,560 --> 01:13:22,170 >> JASON Hirschhorn: Θα το έκανες θέλουν να είναι πραγματικά μεγάλο. 1599 01:13:22,170 --> 01:13:23,910 Ναι. 1600 01:13:23,910 --> 01:13:27,900 Εδώ είναι μια εικόνα του τι θα μόλις επέστησε στο διοικητικό συμβούλιο. 1601 01:13:27,900 --> 01:13:29,470 Και πάλι, έχουμε μια σύγκρουση εδώ. 1602 01:13:29,470 --> 01:13:30,710 σε 152. 1603 01:13:30,710 --> 01:13:33,570 Και θα δείτε δημιουργήσαμε μια συνδεδεμένη λίστα μακριά από αυτό. 1604 01:13:33,570 --> 01:13:38,200 1605 01:13:38,200 --> 01:13:41,850 Και πάλι, ο πίνακας κατακερματισμού Ξεχωριστές αλυσίδες προσέγγιση δεν είναι αυτό που 1606 01:13:41,850 --> 01:13:45,590 πρέπει να ληφθούν για τα προβλήματα που έξι, αλλά είναι αυτό που πολλοί 1607 01:13:45,590 --> 01:13:47,100 οι μαθητές τείνουν να λάβουν. 1608 01:13:47,100 --> 01:13:51,140 Έτσι, σε αυτό το σημείωμα, ας μιλήσουμε λίγο πριν από το κεφάλι έξω για το πρόβλημα των έξι, 1609 01:13:51,140 --> 01:13:52,160 και, στη συνέχεια, θα μοιραστώ μαζί σας μια ιστορία. 1610 01:13:52,160 --> 01:13:55,120 Έχουμε τρία λεπτά. 1611 01:13:55,120 --> 01:13:55,750 >> Πρόβλημα που έξι. 1612 01:13:55,750 --> 01:13:57,790 Έχετε τέσσερις λειτουργίες - 1613 01:13:57,790 --> 01:14:02,430 φορτίο, ελέγξτε, το μέγεθος, και αποφόρτιση. 1614 01:14:02,430 --> 01:14:03,380 Load - 1615 01:14:03,380 --> 01:14:07,120 καλά, έχουμε πάει πέρα από το φορτίο μόλις τώρα. 1616 01:14:07,120 --> 01:14:09,330 Εμείς επέστησε φορτίο στο διοικητικό συμβούλιο. 1617 01:14:09,330 --> 01:14:13,230 Και έχουμε καν αρχίσει κωδικοποίησης πολλά εισάγοντας μία συνδεδεμένη λίστα. 1618 01:14:13,230 --> 01:14:18,020 Έτσι, το φορτίο δεν είναι πολύ περισσότερο από ό, τι τι έχουμε μόλις κάνει. 1619 01:14:18,020 --> 01:14:21,070 >> Έλεγχος είναι, αφού έχετε κάτι που φορτώνονται. 1620 01:14:21,070 --> 01:14:22,580 Είναι η ίδια διαδικασία όπως αυτή. 1621 01:14:22,580 --> 01:14:26,845 Τα ίδια τα δύο πρώτα μέρη όπου μπορείτε να ρίξει κάτι στη συνάρτηση κατακερματισμού 1622 01:14:26,845 --> 01:14:29,190 και να πάρει την αξία του. 1623 01:14:29,190 --> 01:14:30,700 Αλλά τώρα δεν είμαστε το τοποθετείτε. 1624 01:14:30,700 --> 01:14:33,350 Τώρα ψάχνουμε για αυτό. 1625 01:14:33,350 --> 01:14:37,130 Έχω δείγμα κώδικα που γράφτηκε για την εξεύρεση κάτι σε μια συνδεδεμένη λίστα. 1626 01:14:37,130 --> 01:14:38,250 Σας ενθαρρύνω να ασκήσετε αυτό. 1627 01:14:38,250 --> 01:14:43,000 Αλλά διαισθητικά εύρεση κάτι αρκετά παρόμοια με την εισαγωγή κάτι. 1628 01:14:43,000 --> 01:14:46,540 Πράγματι, ζωγράφισε μια εικόνα για την εξεύρεση κάτι σε μια συνδεδεμένη λίστα, που διακινούνται 1629 01:14:46,540 --> 01:14:48,910 μέσα μέχρι να φτάσει στο τέλος. 1630 01:14:48,910 --> 01:14:52,430 Και αν έχεις μέχρι το τέλος και δεν θα μπορούσε βρείτε αυτό, τότε δεν είναι εκεί. 1631 01:14:52,430 --> 01:14:55,400 Έτσι, αυτό είναι επιταγή, κατ 'ουσίαν. 1632 01:14:55,400 --> 01:14:57,030 >> Επόμενο είναι το μέγεθος. 1633 01:14:57,030 --> 01:14:57,910 Ας αφήσουμε το μέγεθος. 1634 01:14:57,910 --> 01:15:00,040 Τέλος, έχετε ξεφορτώσουν. 1635 01:15:00,040 --> 01:15:02,890 Αφαίρεσης είναι εκείνη που δεν έχουν καταρτίσει στο διοικητικό συμβούλιο ή κωδικοποιημένες ακόμα. 1636 01:15:02,890 --> 01:15:05,990 Αλλά ήθελα να σας ενθαρρύνω να προσπαθήσετε κωδικοποίησης που στο δείγμα μας που συνδέονται ενδεικτικό κατάλογο. 1637 01:15:05,990 --> 01:15:11,440 Αλλά ξεφορτώσουν διαισθητικά είναι παρόμοια με την ελεύθερη - 1638 01:15:11,440 --> 01:15:14,010 ή θέλω να πω είναι παρόμοια με ελέγξει. 1639 01:15:14,010 --> 01:15:17,350 Εκτός από τώρα κάθε φορά που πάμε μέσα, δεν είστε απλά ελέγχοντας με 1640 01:15:17,350 --> 01:15:19,090 δείτε αν έχετε την αξία σας εκεί. 1641 01:15:19,090 --> 01:15:22,490 Αλλά παίρνετε ότι ο κόμβος και απελευθερώνοντας την, κατ 'ουσίαν. 1642 01:15:22,490 --> 01:15:23,610 Αυτό είναι ό, τι ξεφορτώσουν σας ζητά να κάνετε. 1643 01:15:23,610 --> 01:15:24,670 Δωρεάν ό, τι έχετε malloced. 1644 01:15:24,670 --> 01:15:27,480 Έτσι θα πάμε όλη τη λίστα και πάλι, πηγαίνοντας όλο το hash 1645 01:15:27,480 --> 01:15:27,760 τραπέζι και πάλι. 1646 01:15:27,760 --> 01:15:29,240 Αυτή τη φορά δεν ελέγχουν για να δούμε τι υπάρχει εκεί. 1647 01:15:29,240 --> 01:15:31,080 Μόλις ελευθερώσετε τι υπάρχει εκεί. 1648 01:15:31,080 --> 01:15:33,260 >> Και, τέλος, το μέγεθος. 1649 01:15:33,260 --> 01:15:34,350 Μέγεθος πρέπει να εφαρμοστεί. 1650 01:15:34,350 --> 01:15:35,590 Αν δεν εφαρμόσει το μέγεθος - 1651 01:15:35,590 --> 01:15:36,250 Θα το πω έτσι. 1652 01:15:36,250 --> 01:15:39,740 Αν δεν εφαρμόσει το μέγεθος ακριβώς μία γραμμή κώδικα, συμπεριλαμβανομένης της 1653 01:15:39,740 --> 01:15:43,760 επιστρέφει δήλωση, θα είναι κάνει λάθος μέγεθος. 1654 01:15:43,760 --> 01:15:47,170 Έτσι, βεβαιωθείτε ότι το μέγεθος, για πλήρη σχεδιασμό σημεία, το κάνετε ακριβώς ένα 1655 01:15:47,170 --> 01:15:49,970 γραμμή κώδικα, συμπεριλαμβανομένων των η δήλωση επιστροφής. 1656 01:15:49,970 --> 01:15:52,450 >> Και μην πακετάρω ακόμα, Akchar. 1657 01:15:52,450 --> 01:15:53,700 Πρόθυμος κάστορα. 1658 01:15:53,700 --> 01:15:55,820 1659 01:15:55,820 --> 01:16:01,300 Ήθελα να πω ευχαριστώ παιδιά για τον ερχομό στο τμήμα. 1660 01:16:01,300 --> 01:16:02,550 Έχουν μια ευτυχισμένη Halloween. 1661 01:16:02,550 --> 01:16:05,300 1662 01:16:05,300 --> 01:16:05,960 Αυτό είναι το κοστούμι μου. 1663 01:16:05,960 --> 01:16:08,850 Θα πρέπει να φορούν αυτή την Πέμπτη αν σας βλέπω σε ώρες γραφείου. 1664 01:16:08,850 --> 01:16:14,640 Και αν είστε περίεργοι για λίγο περισσότερο υπόβαθρο ως προς αυτό το κοστούμι, αισθάνονται 1665 01:16:14,640 --> 01:16:19,135 ελεύθερος να ελέγξει έξω το τμήμα 2011 για μια ιστορία σχετικά με το γιατί είμαι 1666 01:16:19,135 --> 01:16:20,900 φορώντας το κοστούμι κολοκύθα. 1667 01:16:20,900 --> 01:16:23,680 Και αυτό είναι μια θλιβερή ιστορία. 1668 01:16:23,680 --> 01:16:27,050 Έτσι, βεβαιωθείτε ότι έχετε ορισμένοι ιστοί γύρω από το ξενοδοχείο. 1669 01:16:27,050 --> 01:16:28,680 Αλλά σε αυτό, αν έχετε οποιαδήποτε ερωτήσεις που θα μείνω 1670 01:16:28,680 --> 01:16:29,960 έξω από το τμήμα. 1671 01:16:29,960 --> 01:16:31,510 Καλή τύχη για το πρόβλημα που έξι. 1672 01:16:31,510 --> 01:16:33,540 Και όπως πάντα, αν έχετε οποιαδήποτε ερωτήσεις, επιτρέψτε μου να ξέρω. 1673 01:16:33,540 --> 01:16:35,584