1 00:00:00,000 --> 00:00:11,460 2 00:00:11,460 --> 00:00:12,250 >> DAVID MALAN: Εντάξει. 3 00:00:12,250 --> 00:00:13,860 Καλώς ήρθατε και πάλι στο CS50. 4 00:00:13,860 --> 00:00:16,190 Αυτή είναι η αρχή της εβδομάδας 8. 5 00:00:16,190 --> 00:00:21,320 Και υπενθυμίζουν ότι το πρόβλημα σύνολο 5 έληξε με ένα μικρό κομμάτι της μια πρόκληση. 6 00:00:21,320 --> 00:00:25,210 Έτσι, με την προϋπόθεση να ανακτηθεί όλες σας Μέλη διδασκαλίας και φωτογραφίες της CA 7 00:00:25,210 --> 00:00:30,480 στο αρχείο card.raw, θα είναι επιλέξιμες να βρούμε τώρα όλους εκείνους τους ανθρώπους, και 8 00:00:30,480 --> 00:00:34,510 ένας τυχερός νικητής θα φύγετε με ένα από αυτά τα πράγματα, η κίνηση άλμα 9 00:00:34,510 --> 00:00:37,450 συσκευής που μπορείτε να χρησιμοποιήσετε για την τελική έργα, για παράδειγμα. 10 00:00:37,450 --> 00:00:39,860 >> Αυτό, κάθε χρόνο, οδηγεί στην ένα κομμάτι της creepiness. 11 00:00:39,860 --> 00:00:43,480 Και έτσι αυτό που σκέφτηκα να κάνουμε είναι να μοιραστώ μαζί σας μερικές από τις σημειώσεις που έχουν 12 00:00:43,480 --> 00:00:47,370 πάει εμπρός και πίσω πάνω ο κατάλογος του προσωπικού των καθυστερήσεων. 13 00:00:47,370 --> 00:00:51,110 Για παράδειγμα, μόλις χθες το βράδυ, απόσπασμα unquote, από ένα από το προσωπικό 14 00:00:51,110 --> 00:00:55,000 μέλη, «είχα μόνο ένα χτύπημα φοιτητή την πόρτα μου για να τραβήξετε μια φωτογραφία μαζί μου. 15 00:00:55,000 --> 00:00:59,020 Stalkers, μπορώ να σας πω ». Ξεκίνησε αρκετά περιγραφική και στη συνέχεια κινηθήκαμε 16 00:00:59,020 --> 00:01:02,830 για να, μια ώρα περίπου αργότερα, "είχα μια φοιτητής με περιμένει μετά το τμήμα 17 00:01:02,830 --> 00:01:06,080 και είχε όλα τα ονόματα και τις φωτογραφίες μας σε μερικά φύλλα χαρτιού. «Εντάξει. 18 00:01:06,080 --> 00:01:09,230 Έτσι, οργανωμένη, αλλά δεν όλα αυτά ανατριχιαστικό ακόμα. 19 00:01:09,230 --> 00:01:12,520 >> Στη συνέχεια, "Ήμουν έξω από την πόλη αυτό το Σαββατοκύριακο, και όταν το πήρα πίσω, υπήρχε ένα στην 20 00:01:12,520 --> 00:01:12,630 μου 21 00:01:12,630 --> 00:01:16,740 υπνοδωμάτιο. »[γέλια] 22 00:01:16,740 --> 00:01:20,410 DAVID MALAN: Next απόσπασμα από το προσωπικό μέλος, "ένας φοιτητής ήρθε στο σπίτι μου 23 00:01:20,410 --> 00:01:25,330 Somerville στις τέσσερις το πρωί. "Next προσωπικού, «Πήρα στο ξενοδοχείο μου στο San 24 00:01:25,330 --> 00:01:30,016 Φρανσίσκο και ένας μαθητής περίμενε μου στο λόμπι με τρεις φωτογραφικές μηχανές DSLR. " 25 00:01:30,016 --> 00:01:31,510 Είδος της κάμερας. 26 00:01:31,510 --> 00:01:34,980 "Δεν είμαι καν για το προσωπικό αυτό το εξάμηνο, αλλά ένας μαθητής έσπασε στο σπίτι μου, αυτό 27 00:01:34,980 --> 00:01:40,480 πρωί και καταγράφεται το όλο θέμα με γυαλί Google. "Και τότε, τέλος, 28 00:01:40,480 --> 00:01:43,650 "Τουλάχιστον 12 άνθρωποι ήταν ανυπόμονα αναμονή για μένα όταν βγήκα από μου 29 00:01:43,650 --> 00:01:44,800 λιμουζίνα, και στη συνέχεια θα 30 00:01:44,800 --> 00:01:46,970 ξύπνησε. «Εντάξει. 31 00:01:46,970 --> 00:01:57,690 Έτσι, ανάμεσα στις φωτογραφίες, όπως μπορείτε να θυμάστε, είναι αυτός ο άνθρωπος εδώ, που σας 32 00:01:57,690 --> 00:02:01,850 θα μπορούσε να γνωρίζει, όπως Milo Μπανάνα, ο οποίος ζει με Lauren Carvalho, το κεφάλι μας 33 00:02:01,850 --> 00:02:02,905 διδασκαλίας Fellow. 34 00:02:02,905 --> 00:02:05,170 Ο Μάιλο, ο Milo, έλα εδώ αγόρι. 35 00:02:05,170 --> 00:02:06,320 Milo. 36 00:02:06,320 --> 00:02:08,650 Milo. 37 00:02:08,650 --> 00:02:12,230 Το μυαλό εσείς, φοράει Google Glass, έτσι θα σας δείξει όλα αυτά μετά. 38 00:02:12,230 --> 00:02:16,190 Έτσι, αυτό είναι Milo, αν θα θέλατε να να λάβει μια φωτογραφία μαζί του αργότερα. 39 00:02:16,190 --> 00:02:18,240 Αν θέλετε να κοιτάξει έξω στο κοινό εκεί. 40 00:02:18,240 --> 00:02:19,430 OK. 41 00:02:19,430 --> 00:02:20,200 Αυτό είναι καλό υλικό. 42 00:02:20,200 --> 00:02:22,556 Λοιπόν, Milo Μπανάνα. 43 00:02:22,556 --> 00:02:23,941 Ω, μην το κάνεις αυτό. 44 00:02:23,941 --> 00:02:29,020 >> [Γέλια] 45 00:02:29,020 --> 00:02:29,470 >> OK. 46 00:02:29,470 --> 00:02:34,550 Έτσι, μια λέξη, στη συνέχεια για το τι μέλλει γενέσθαι, γιατί όπως έχουμε αρχίσει να μετάβασης, 47 00:02:34,550 --> 00:02:38,410 Συγκεκριμένα αυτή την εβδομάδα, από C σε ένα περιβάλλον κειμένου γραμμής εντολών σε PHP και 48 00:02:38,410 --> 00:02:42,720 JavaScript και SQL και HTML και CSS σε μια web-based περιβάλλον, θα είμαστε 49 00:02:42,720 --> 00:02:44,490 εξοπλισμό σας με όλα τα περισσότερες γνώσεις για την 50 00:02:44,490 --> 00:02:46,010 δυνητικών τελικών σχεδίων. 51 00:02:46,010 --> 00:02:49,240 Προς το σκοπό αυτό, το μάθημα έχει παράδοση της διεξαγωγής σεμιναρίων που 52 00:02:49,240 --> 00:02:50,950 είναι εφαπτόμενο σε θέματα στην πορεία. 53 00:02:50,950 --> 00:02:54,330 Πάρα πολύ σχετίζονται με τον προγραμματισμό και την app ανάπτυξη και ούτω καθεξής, αλλά 54 00:02:54,330 --> 00:02:57,010 όχι απαραίτητα διερευνηθεί από δική του διδακτέα ύλη του μαθήματος. 55 00:02:57,010 --> 00:03:00,250 >> Έτσι, αν μπορεί να σας ενδιαφέρει σε ένα ή περισσότερα από τα σεμινάρια της φετινής χρονιάς, 56 00:03:00,250 --> 00:03:02,530 εγγραφείτε στο cs50.net/seminar. 57 00:03:02,530 --> 00:03:06,170 Υπάρχουν μεγάλα σεμινάρια σε cs50.net/seminars. 58 00:03:06,170 --> 00:03:10,620 Και στο ρόστερ μέχρι στιγμής για το τρέχον έτος είναι καταπληκτικές εφαρμογές Web με Ruby on 59 00:03:10,620 --> 00:03:13,580 Σιδηροτροχιές, η οποία είναι μια εναλλακτική λύση γλώσσα PHP. 60 00:03:13,580 --> 00:03:14,900 Υπολογιστική Γλωσσολογία. 61 00:03:14,900 --> 00:03:18,710 Εισαγωγή στην Ίο, η οποία είναι η πλατφόρμας που χρησιμοποιείται για το iPhone και 62 00:03:18,710 --> 00:03:19,850 iPad ανάπτυξη. 63 00:03:19,850 --> 00:03:22,890 JavaScript για Web Apps, θα καλύψουμε αυτό, αλλά σε αυτό το σεμινάριο, θα πάτε 64 00:03:22,890 --> 00:03:24,070 σε περισσότερες λεπτομέρειες. 65 00:03:24,070 --> 00:03:27,390 >> Άλμα κίνησης, οπότε θα έχουμε πραγματικά κάποια από τους φίλους μας από την κίνηση Leap, 66 00:03:27,390 --> 00:03:29,160 η ίδια η εταιρεία, μαζί μας. 67 00:03:29,160 --> 00:03:31,800 Αύριο, στην πραγματικότητα, για την παροχή ένα hands-on σεμινάριο, αν 68 00:03:31,800 --> 00:03:33,320 που σας ενδιαφέρουν. 69 00:03:33,320 --> 00:03:38,770 Meteor.js, μια εναλλακτική τεχνική για τη χρησιμοποιώντας JavaScript δεν είναι σε ένα πρόγραμμα περιήγησης, 70 00:03:38,770 --> 00:03:39,970 αλλά σε ένα διακομιστή. 71 00:03:39,970 --> 00:03:42,110 Node.js, η οποία είναι πάρα πολύ σε αυτό το πνεύμα, καθώς και. 72 00:03:42,110 --> 00:03:43,650 Κομψή σχεδίαση Android. 73 00:03:43,650 --> 00:03:46,990 Android είναι μια πολύ δημοφιλής εναλλακτική λύση σε iOS και Windows Phone 74 00:03:46,990 --> 00:03:48,790 και άλλες κινητές πλατφόρμες. 75 00:03:48,790 --> 00:03:51,180 Και Security Web ενεργητικής άμυνας. 76 00:03:51,180 --> 00:03:54,590 >> Έτσι, στην πραγματικότητα, αν θα θέλατε να συμμετάσχουν σε αυτό, επιτρέψτε μου να 77 00:03:54,590 --> 00:03:55,840 σημειώστε αυτό. 78 00:03:55,840 --> 00:03:57,790 Είμαστε στην ευχάριστη θέση να πω ότι τους φίλους μας στο Leap 79 00:03:57,790 --> 00:03:59,140 Πρόταση, η οποία είναι μια νεοσύστατη εταιρεία - 80 00:03:59,140 --> 00:04:01,300 Αυτή η συσκευή είναι πραγματικά μόλις ήρθε out πριν από λίγους μήνες - 81 00:04:01,300 --> 00:04:05,960 έχει δωρίσει ευγενικά 30 τέτοιες συσκευές στην τάξη για όσες φοιτητές, εάν 82 00:04:05,960 --> 00:04:08,670 θα θέλατε να δανειστεί το υλικό προς το τέλος του εξαμήνου και να το χρησιμοποιούν για 83 00:04:08,670 --> 00:04:10,390 ένα πραγματικό τελικό σχέδιο. 84 00:04:10,390 --> 00:04:11,890 Υποστηρίζουν μια σειρά από γλώσσες. 85 00:04:11,890 --> 00:04:16,040 Κανένας από αυτούς C, κανένας από αυτούς PHP, έτσι υλοποίηση ενός ή περισσότερων από αυτά τα σεμινάρια 86 00:04:16,040 --> 00:04:16,899 θα μπορούσε να αποδειχθεί ενδιαφέρον. 87 00:04:16,899 --> 00:04:19,730 Και όλα αυτά θα γυριστεί στη το γεγονός ότι δεν είστε σε θέση 88 00:04:19,730 --> 00:04:21,380 να παραστεί αυτοπροσώπως. 89 00:04:21,380 --> 00:04:25,000 Το πρόγραμμα θα ανακοινωθεί μέσω του email όπως στερεοποιηθεί δωμάτια. 90 00:04:25,000 --> 00:04:28,460 >> Και τέλος, αν πάτε στο projects.cs.50.net, αυτό είναι μια ιστοσελίδα 91 00:04:28,460 --> 00:04:31,450 διατηρούμε κάθε χρόνο που καλούμε λαοί από την κοινότητα, καθηγητές, 92 00:04:31,450 --> 00:04:36,420 υπηρεσίες, το προσωπικό, και οι δύο σε ένα εξωτερικό των προς CS50 93 00:04:36,420 --> 00:04:37,730 προτείνουν ιδέες του έργου. 94 00:04:37,730 --> 00:04:39,050 Πράγματα που παρουσιάζουν ενδιαφέρον για ομάδες φοιτητών. 95 00:04:39,050 --> 00:04:40,600 Πράγματα που παρουσιάζουν ενδιαφέρον για τις υπηρεσίες. 96 00:04:40,600 --> 00:04:43,990 Έτσι κάνει στροφή εκεί αν είστε αγωνίζονται με την αβεβαιότητα ως προς το τι 97 00:04:43,990 --> 00:04:46,700 τον εαυτό σας θα ήθελε να αντιμετωπίσει. 98 00:04:46,700 --> 00:04:51,760 >> Έτσι, την τελευταία φορά που εισάγεται ένα αναμφισβήτητα πιο σύνθετη δομή δεδομένων ό, τι είχαμε 99 00:04:51,760 --> 00:04:53,300 δει στο παρελθόν εβδομάδες. 100 00:04:53,300 --> 00:04:56,550 Είχαμε ήδη με συστοιχίες αρκετά ευτυχώς ως ένα χρήσιμο, αν 101 00:04:56,550 --> 00:04:58,160 απλοϊκή δομή δεδομένων. 102 00:04:58,160 --> 00:05:00,570 Στη συνέχεια, εισάγαμε αυτά, τα οποία Φυσικά οι συνδεδεμένες λίστες. 103 00:05:00,570 --> 00:05:05,470 Και αυτό ήταν ένα από τα κίνητρα για εισαγωγή αυτής της δομής δεδομένων; 104 00:05:05,470 --> 00:05:06,930 Ναι; 105 00:05:06,930 --> 00:05:07,250 Τι είναι αυτό; 106 00:05:07,250 --> 00:05:08,080 >> ΚΟΙΝΟ: Δυναμική μέγεθος. 107 00:05:08,080 --> 00:05:09,040 >> DAVID MALAN: Δυναμική μέγεθος. 108 00:05:09,040 --> 00:05:11,890 Έτσι, ενώ στην σειρά, θα πρέπει να γνωρίζουμε το μέγεθος της εκ των προτέρων, όταν 109 00:05:11,890 --> 00:05:12,740 να το διαθέσει. 110 00:05:12,740 --> 00:05:14,380 Σε συνδεδεμένη λίστα, δεν το κάνετε Πρέπει να γνωρίζετε ότι. 111 00:05:14,380 --> 00:05:17,610 Μπορείτε απλά malloc, ή, γενικότερα, διαθέσει ένα πρόσθετο 112 00:05:17,610 --> 00:05:20,720 κόμβο, να το πω έτσι, κάθε φορά που θα θέλετε να εισαγάγετε περισσότερα δεδομένα. 113 00:05:20,720 --> 00:05:22,670 Και ο κόμβος έχει προκαθορισμένο κανένα νόημα. 114 00:05:22,670 --> 00:05:25,580 Είναι απλά ένας γενικός όρος που περιγράφει κάποιο είδος του περιέκτη που είμαστε 115 00:05:25,580 --> 00:05:29,610 χρήση στη δομή των δεδομένων μας για να αποθηκεύσετε κάποιες σημείο ενδιαφέροντος, που στην προκειμένη 116 00:05:29,610 --> 00:05:31,750 περίπτωση που τυχαίνει να είναι ακέραιοι. 117 00:05:31,750 --> 00:05:33,160 >> Αλλά υπάρχει πάντα μια ανταλλαγή. 118 00:05:33,160 --> 00:05:38,070 Έτσι έχουμε δυναμική μεγέθη των δεδομένων δομή, αλλά τι τιμή να πληρώνουμε; 119 00:05:38,070 --> 00:05:40,040 Ποιο είναι το μειονέκτημα των συνδεδεμένων λίστες; 120 00:05:40,040 --> 00:05:41,006 Ναι; 121 00:05:41,006 --> 00:05:41,980 >> ΚΟΙΝΟ: Απαιτεί περισσότερη μνήμη. 122 00:05:41,980 --> 00:05:44,240 >> DAVID MALAN: Απαιτεί περισσότερα μνήμης, πώς ακριβώς; 123 00:05:44,240 --> 00:05:46,440 >> ΚΟΙΝΟ: [δεν ακούγεται]. 124 00:05:46,440 --> 00:05:47,050 >> DAVID MALAN: Ακριβώς. 125 00:05:47,050 --> 00:05:50,460 Έτσι τώρα έχουμε δείκτες ανάληψη πρόσθετη μνήμη που στο παρελθόν 126 00:05:50,460 --> 00:05:53,040 δεν χρειάζεται, διότι το πλεονέκτημα ενός πίνακα, βέβαια, είναι ότι 127 00:05:53,040 --> 00:05:54,860 όλα είναι συνεχόμενα, πίσω προς τα πίσω στην πλάτη, η οποία 128 00:05:54,860 --> 00:05:56,380 σας δίνει τυχαία πρόσβαση. 129 00:05:56,380 --> 00:06:00,710 Διότι μόνο με τη χρήση αγκύλη σημειογραφία, ή πιο τεχνικά δείκτη 130 00:06:00,710 --> 00:06:03,580 αριθμητική, πολύ απλή προσθήκη, μπορείτε να έχετε πρόσβαση οποιαδήποτε 131 00:06:03,580 --> 00:06:05,700 στοιχεία σε σταθερό χρόνο. 132 00:06:05,700 --> 00:06:08,975 Και στην πραγματικότητα, αυτό είναι το είδος της υπαινίχθηκε άλλη τιμή που πληρώνουμε με 133 00:06:08,975 --> 00:06:09,760 συνδεδεμένη λίστα. 134 00:06:09,760 --> 00:06:13,890 >> Τι συμβαίνει με το χρόνο λειτουργίας του κάτι σαν αναζήτηση, αν θέλω να 135 00:06:13,890 --> 00:06:17,270 βρείτε κάποια αξία και εσωτερικό από μια συνδεδεμένη λίστα; 136 00:06:17,270 --> 00:06:20,290 Τι τρέχει χρόνο μου να γίνει; 137 00:06:20,290 --> 00:06:21,560 Big O κ. 138 00:06:21,560 --> 00:06:24,060 Αν είναι ταξινομημένο σε; 139 00:06:24,060 --> 00:06:25,440 Τι θα συμβεί αν η δομή των δεδομένων είναι ταξινομημένο; 140 00:06:25,440 --> 00:06:28,640 Μπορώ να κάνω καλύτερα από τις μεγάλες O ν για την αναζήτηση; 141 00:06:28,640 --> 00:06:31,700 Όχι, γιατί στη χειρότερη περίπτωση θα μπορούσε πολύ καλά να ταξινομηθούν, αλλά ο αριθμός 142 00:06:31,700 --> 00:06:32,950 ψάχνετε για να είναι μεγάλο. 143 00:06:32,950 --> 00:06:35,370 Θα μπορούσε να είναι ο αριθμός 100, ο οποίος μπορεί να συμβεί να είναι όλα 144 00:06:35,370 --> 00:06:36,410 ο τρόπος στο τέλος. 145 00:06:36,410 --> 00:06:39,950 Και επειδή μπορείτε να έχετε πρόσβαση μόνο ένα συνδεδεμένο Στον κατάλογο του παρόντος εφαρμογή από 146 00:06:39,950 --> 00:06:42,690 τρόπος πρώτο κόμβο του, είστε ακόμα είδος από την τύχη. 147 00:06:42,690 --> 00:06:47,450 Θα πρέπει να διασχίσει το όλο θέμα από την αρχή μέχρι το τέλος για να βρει 148 00:06:47,450 --> 00:06:49,150 ότι η μεγάλη αξία σαν 100. 149 00:06:49,150 --> 00:06:51,350 Ή, για να διαπιστωθεί εάν είναι δεν είναι καν εκεί. 150 00:06:51,350 --> 00:06:55,960 >> Έτσι, δεν μπορούμε να κάνουμε ό, τι αλγόριθμο σε δεδομένα δομή που μοιάζει με αυτό; 151 00:06:55,960 --> 00:06:59,460 Δεν μπορούμε να κάνουμε δυαδική αναζήτηση, γιατί δυαδική αναζήτηση απαιτεί ότι είχαμε 152 00:06:59,460 --> 00:07:00,740 τυχαίας προσπέλασης. 153 00:07:00,740 --> 00:07:04,500 Θα μπορούσαμε απλά άλμα από τη θέση σε θέση χωρίς να χρειάζεται να ακολουθήσει 154 00:07:04,500 --> 00:07:07,080 αυτά τα ψίχουλα ψωμιού στη μορφή όλων αυτών των δεικτών. 155 00:07:07,080 --> 00:07:08,300 >> Τώρα, πώς θα γίνει αυτό; 156 00:07:08,300 --> 00:07:12,830 Λοιπόν, αν πάμε στην οθόνη εδώ, αν μπορούμε Νέα υλοποίηση γρήγορα αυτά τα δεδομένα 157 00:07:12,830 --> 00:07:13,440 δομή - 158 00:07:13,440 --> 00:07:15,670 χειρόγραφό μου δεν είναι όλα αυτά που μεγάλη εδώ, αλλά εμείς θα προσπαθήσουμε. 159 00:07:15,670 --> 00:07:22,030 Έτσι typedef struct, και τι έκανα θέλετε να καλέσετε αυτό το πράγμα εδώ; 160 00:07:22,030 --> 00:07:22,960 Κόμβου. 161 00:07:22,960 --> 00:07:24,580 Γι 'αυτό θα μας πάρει άρχισε. 162 00:07:24,580 --> 00:07:27,860 Και τώρα, τι πρέπει να είναι μέσα από Η δομή των δεδομένων για το εν λόγω μεμονωμένα 163 00:07:27,860 --> 00:07:28,430 συνδεδεμένη λίστα; 164 00:07:28,430 --> 00:07:29,950 Πώς πολλούς τομείς; 165 00:07:29,950 --> 00:07:30,450 >> Έτσι δύο. 166 00:07:30,450 --> 00:07:31,570 Ένα είναι αρκετά εύκολο. 167 00:07:31,570 --> 00:07:33,050 Έτσι, int n. 168 00:07:33,050 --> 00:07:35,930 Και θα μπορούσαμε να ονομάσουμε n οτιδήποτε θέλουμε, αλλά θα πρέπει να είναι ένα int αν είμαστε 169 00:07:35,930 --> 00:07:37,660 εφαρμογή συνδεδεμένη λίστα για ints. 170 00:07:37,660 --> 00:07:41,920 Και τώρα τι κάνει το δεύτερο τομέα πρέπει να είναι; 171 00:07:41,920 --> 00:07:43,460 Struct κόμβο *. 172 00:07:43,460 --> 00:07:50,570 Έτσι, αν κάνω struct node *, και στη συνέχεια θα να καλέσετε αυτό, επίσης, ό, τι θέλω, 173 00:07:50,570 --> 00:07:53,510 αλλά απλώς να είναι σαφές ότι θα καλέσετε την επόμενη, όπως έχουμε ήδη κάνει. 174 00:07:53,510 --> 00:07:55,270 Και τότε εγώ θα κλείσει άγκιστρα μου. 175 00:07:55,270 --> 00:08:00,700 >> Και τώρα, όπως την τελευταία φορά, Έβαλα κόμβο εδώ κάτω. 176 00:08:00,700 --> 00:08:03,830 Αλλά αν είμαι δηλώνοντας αυτό είναι ως ένα κόμβο, γιατί να κάνω τον κόπο να είναι τόσο 177 00:08:03,830 --> 00:08:07,320 verbose εδώ κηρύσσοντας struct κόμβο * επόμενο, σε αντίθεση 178 00:08:07,320 --> 00:08:09,210 σε μόλις κόμβο * το επόμενο βήμα; 179 00:08:09,210 --> 00:08:09,904 Ναι; 180 00:08:09,904 --> 00:08:12,810 >> ΚΟΙΝΟ: [δεν ακούγεται]. 181 00:08:12,810 --> 00:08:14,050 >> DAVID MALAN: Ακριβώς. 182 00:08:14,050 --> 00:08:14,530 Ακριβώς. 183 00:08:14,530 --> 00:08:18,320 Επειδή C παίρνει πραγματικά κυριολεκτικά και βλέπει μόνο τον ορισμό του κόμβου 184 00:08:18,320 --> 00:08:21,230 μέχρι εδώ, δεν μπορείτε να αναφέρονται σε αυτήν εδώ. 185 00:08:21,230 --> 00:08:24,760 Έτσι έχουμε αυτό το είδος της προτίμησης δήλωση εδώ, το οποίο είναι ομολογουμένως 186 00:08:24,760 --> 00:08:25,390 πιο φλύαρη. 187 00:08:25,390 --> 00:08:27,810 Struct κόμβο, αυτό σημαίνει ότι μπορούμε να έχουμε πρόσβαση τώρα 188 00:08:27,810 --> 00:08:29,760 στο εσωτερικό της δομής των δεδομένων. 189 00:08:29,760 --> 00:08:33,370 >> Και ως ένα μέρος, επειδή αυτό είναι να γίνει λίγο πιο υποκειμενικό τώρα, 190 00:08:33,370 --> 00:08:36,230 το αστέρι μπορεί τεχνικά να πάει εδώ, μπορεί να πάει εδώ, μπορεί να 191 00:08:36,230 --> 00:08:37,179 ακόμη και να πάτε στη μέση. 192 00:08:37,179 --> 00:08:39,890 Έχουμε υιοθέτησε, στο στυλ οδηγό για Η πορεία, η σύμβαση της βάζοντας 193 00:08:39,890 --> 00:08:42,299 το αστέρι δίπλα στα δεδομένα τύπου, η οποία σε αυτή την περίπτωση, 194 00:08:42,299 --> 00:08:43,460 θα είναι κόμβος struct. 195 00:08:43,460 --> 00:08:46,620 Αλλά συνειδητοποιούν σε πολλά εγχειρίδια και σε απευθείας σύνδεση αναφορές, ίσως μάλιστα 196 00:08:46,620 --> 00:08:48,450 δείτε στην άλλη πλευρά. 197 00:08:48,450 --> 00:08:52,200 Αλλά ακριβώς συνειδητοποιούν ότι και οι δύο θα είναι πράγματι εργασία και θα πρέπει απλά να 198 00:08:52,200 --> 00:08:52,970 συνεπής. 199 00:08:52,970 --> 00:08:53,580 >> Εντάξει. 200 00:08:53,580 --> 00:08:55,630 Έτσι που ήταν διακήρυξή μας του κόμβου struct. 201 00:08:55,630 --> 00:08:59,430 Αλλά τότε αρχίσαμε να κάνουμε περισσότερα εξελιγμένα πράγματα. 202 00:08:59,430 --> 00:09:03,410 Για παράδειγμα, αποφάσισε να εισαγάγει κάτι σαν ένα πίνακα κατακερματισμού. 203 00:09:03,410 --> 00:09:08,160 Έτσι, εδώ είναι μια hash πίνακα μεγέθους n, αναπροσαρμόζονται από 0 στην κορυφή αριστερά προς n 204 00:09:08,160 --> 00:09:09,690 μείον 1 στο κάτω μέρος αριστερά. 205 00:09:09,690 --> 00:09:11,640 Αυτό θα μπορούσε να είναι ένα hash τραπέζι για τίποτα. 206 00:09:11,640 --> 00:09:15,340 Αλλά τι είδους πράγματα δεν μιλάμε σχετικά με τη χρήση ενός πίνακα κατακερματισμού για; 207 00:09:15,340 --> 00:09:18,370 Αποθήκευση τι; 208 00:09:18,370 --> 00:09:18,800 >> Ονόματα. 209 00:09:18,800 --> 00:09:20,870 Θα μπορούσαμε να κάνουμε ονόματα όπως κάναμε την τελευταία φορά. 210 00:09:20,870 --> 00:09:22,200 Και πραγματικά, μπορείτε να αποθηκεύσετε οτιδήποτε. 211 00:09:22,200 --> 00:09:24,640 Και θα δούμε πάλι αυτό το PHP και JavaScript. 212 00:09:24,640 --> 00:09:28,550 Μια hash table είναι ένα ωραίο είδος της Ελβετίας Μαχαίρι στρατού που σας επιτρέπει να αποθηκεύετε 213 00:09:28,550 --> 00:09:33,690 λίγο πολύ ό, τι θέλετε στο εσωτερικό της αυτό με τη συμμετοχή κλειδιά με τιμές. 214 00:09:33,690 --> 00:09:34,770 Κλειδιά με τις αξίες. 215 00:09:34,770 --> 00:09:37,800 >> Τώρα, σε αυτή την απλή περίπτωση, μας πλήκτρα είναι απλά αριθμοί. 216 00:09:37,800 --> 00:09:40,380 Είμαστε εφαρμογή μιας hash πίνακας ως πίνακας. 217 00:09:40,380 --> 00:09:43,500 Και έτσι τα πλήκτρα είναι 0, 1, 2, και ούτω καθεξής. 218 00:09:43,500 --> 00:09:47,200 Και έτσι, ως άνθρωποι, αποφάσισε τον περασμένο εβδομάδα ότι ξέρετε τι, αν είμαστε 219 00:09:47,200 --> 00:09:50,410 Θα ονόματα κατάστημα, ας αυθαίρετα, αλλά αρκετά λογικές, 220 00:09:50,410 --> 00:09:54,680 υποθέσουμε ότι η Alice, ένα Ένα όνομα, απλά θα πρέπει να αναπροσαρμόζονται σε 0. 221 00:09:54,680 --> 00:09:58,030 Και ο Bob, ένα όνομα Β, θα πρέπει να αναπροσαρμόζονται μέσα σε 1, και ούτω καθεξής. 222 00:09:58,030 --> 00:10:02,490 Έτσι είχαμε μια χαρτογράφηση μεταξύ των εισόδων, τα οποία είναι χορδές, και το χασίς 223 00:10:02,490 --> 00:10:04,560 περιοχές, οι οποίες είναι αριθμοί. 224 00:10:04,560 --> 00:10:07,740 >> Έτσι, αυτή η διαδικασία είναι γενικά γνωστή ως μια συνάρτηση κατακερματισμού, και μπορείτε πραγματικά να 225 00:10:07,740 --> 00:10:09,130 εφαρμόσει στο κώδικα. 226 00:10:09,130 --> 00:10:12,080 Αν ήθελα να εφαρμόσουν μια συνάρτηση κατακερματισμού που κάνει ακριβώς αυτό που 227 00:10:12,080 --> 00:10:17,070 ακριβώς περιγράφεται από την τελευταία φορά, θα ήθελα να κηρύξει μια λειτουργία που παίρνει, όπως 228 00:10:17,070 --> 00:10:18,330 εισροών για παράδειγμα - 229 00:10:18,330 --> 00:10:22,190 και ας το κάνουμε σε αυτό οθόνη εδώ. 230 00:10:22,190 --> 00:10:26,180 Αν ήθελα να εφαρμόσει ένα hash λειτουργία, θα μπορούσα να πω 231 00:10:26,180 --> 00:10:27,410 κάτι σαν αυτό. 232 00:10:27,410 --> 00:10:29,030 >> Είναι πρόκειται να επιστρέψει ένα int. 233 00:10:29,030 --> 00:10:33,600 Είναι πρόκειται να ονομάζεται hash, και είναι πρόκειται να αποδεχθούν ως επιχείρημα το 234 00:10:33,600 --> 00:10:38,920 string, ή μπορούμε να είμαστε πιο κατάλληλη στιγμή, και να πω char *, θα το ονομάσουμε s. 235 00:10:38,920 --> 00:10:43,840 Και τότε όλη αυτή η λειτουργία έχει να κάνει, σε τελική ανάλυση, είναι η επιστροφή σε int. 236 00:10:43,840 --> 00:10:45,990 Τώρα, πώς το κάνει που θα μπορούσαν να να μην είναι τόσο σαφής. 237 00:10:45,990 --> 00:10:49,510 Πάω να εφαρμόσουν αυτό χωρίς καμία μορφή ελέγχου σφαλμάτων τώρα. 238 00:10:49,510 --> 00:10:55,740 Είμαι ακριβώς πρόκειται να τυφλά πει, επιστροφή Όποια και αν είναι s βραχίονα 0, μείον, 239 00:10:55,740 --> 00:10:58,850 ας πούμε, το κεφάλαιο ένα ερωτηματικό. 240 00:10:58,850 --> 00:10:59,960 >> Εντελώς σπάσει. 241 00:10:59,960 --> 00:11:02,620 Δεν είναι τέλειο, διότι ένα, ό, τι και αν s είναι άκυρη; 242 00:11:02,620 --> 00:11:04,000 Άσχημα είναι τα πράγματα πρόκειται να συμβεί. 243 00:11:04,000 --> 00:11:07,940 Δύο, τι θα γίνει αν το πρώτο γράμμα αυτό όνομα δεν είναι ένα κεφαλαίο γράμμα; 244 00:11:07,940 --> 00:11:09,860 Αυτό δεν πρόκειται να γυρίσει καλά ούτε. 245 00:11:09,860 --> 00:11:11,970 Θα μπορούσε να είναι ένα πεζό γράμμα ή όχι μια επιστολή σε όλα. 246 00:11:11,970 --> 00:11:15,520 Έτσι, εντελώς περιθώριο βελτίωσης εδώ, αλλά αυτή είναι η βασική ιδέα. 247 00:11:15,520 --> 00:11:19,010 >> Αυτό που περιγράφεται περασμένη εβδομάδα προφορικά, όπως απλά μια διαδικασία χαρτογράφησης των Alice να 248 00:11:19,010 --> 00:11:23,360 0 και 1, Bob να μπορεί να εκφραστεί σίγουρα πιο formulaically ως C 249 00:11:23,360 --> 00:11:24,320 λειτουργούν εδώ. 250 00:11:24,320 --> 00:11:28,630 Ονομάζεται και πάλι hash, παίρνει ένα string ως εισόδου, και στη συνέχεια να κάνει με κάποιο τρόπο κάτι 251 00:11:28,630 --> 00:11:31,020 με την εν λόγω είσοδο για να παράγει μία έξοδο. 252 00:11:31,020 --> 00:11:34,130 Δεν σε αντίθεση με μαύρο κουτί περιγραφή μας που έχουμε καιρό κάνει. 253 00:11:34,130 --> 00:11:36,550 Δεν ξέρω πώς αυτό θα μπορούσε να είναι εργάζονται κάτω από το καπό. 254 00:11:36,550 --> 00:11:40,120 >> Για σετ πρόβλημα 6, μία από τις προκλήσεις είναι για σας να αποφασίσετε τι 255 00:11:40,120 --> 00:11:41,920 θα συνάρτηση κατακερματισμού σας είναι; 256 00:11:41,920 --> 00:11:45,760 Τι πρόκειται να είναι μέσα από αυτή τη μαύρη πλαίσιο, και κατά πάσα πιθανότητα, θα είναι ένα 257 00:11:45,760 --> 00:11:50,380 λίγο πιο ενδιαφέρον από αυτό, και σίγουρα πιο επιρρεπής σε λάθη 258 00:11:50,380 --> 00:11:53,180 έλεγχο από ό, τι αυτό το συγκεκριμένο εφαρμογή. 259 00:11:53,180 --> 00:11:54,580 >> Όμως, τα προβλήματα μπορεί να προκύψουν, έτσι δεν είναι; 260 00:11:54,580 --> 00:11:57,760 Αν έχουμε μια δομή δεδομένων, όπως αυτό ένα, τι είναι ένα από τα προβλήματα 261 00:11:57,760 --> 00:12:01,600 μπορείτε να εκτελέσετε σε πάροδο του χρόνου, καθώς θα τοποθετείτε όλο και περισσότερα ονόματα μέσα στο 262 00:12:01,600 --> 00:12:02,880 hash πίνακα; 263 00:12:02,880 --> 00:12:04,630 Μπορείτε να πάρετε συγκρούσεις, έτσι δεν είναι; 264 00:12:04,630 --> 00:12:07,560 Τι γίνεται αν έχετε Alice και ο Ααρών, δύο άτομα των οποίων τα ονόματα που συνέβη 265 00:12:07,560 --> 00:12:08,190 για να ξεκινήσετε με ένα; 266 00:12:08,190 --> 00:12:11,660 Αυτό εγείρει το ερώτημα, όπου μπορείτε θέσει το δεύτερο ένα τέτοιο όνομα; 267 00:12:11,660 --> 00:12:15,050 >> Καλά, ίσως αφελώς θέσω απλά όπου ο Μπομπ ανήκει, αλλά στη συνέχεια ο Bob είναι 268 00:12:15,050 --> 00:12:17,300 το είδος των βιδωτών αν προσπαθήσετε να εισάγετε το όνομά του δίπλα και 269 00:12:17,300 --> 00:12:18,240 δεν υπάρχει χώρος γι 'αυτόν. 270 00:12:18,240 --> 00:12:21,400 Έτσι, μπορείτε να βάλετε Bob, όπου ο Τσάρλι είναι, και μπορείτε να φανταστείτε αυτό πολύ γρήγορα 271 00:12:21,400 --> 00:12:23,020 ανατεθεί σε ένα κομμάτι από ένα χάος. 272 00:12:23,020 --> 00:12:25,600 Κάτι γραμμική στο τέλος, όπου μπορείτε Απλά πρέπει να αναζητήσετε το όλο θέμα 273 00:12:25,600 --> 00:12:28,190 ψάχνει για Alice ή Bob ή Aaron ή Τσάρλι. 274 00:12:28,190 --> 00:12:33,230 >> Έτσι, αντί να προτείνει, και όχι μόνο γραμμικά σχολαστικά για ανοιχτούς χώρους 275 00:12:33,230 --> 00:12:36,450 και plopping τα ονόματα εκεί, πρότεινε ένα πιό φανταχτερό προσέγγιση. 276 00:12:36,450 --> 00:12:41,740 Μια hash table εφαρμοστεί ακόμα με ένα συστοιχία των δεικτών, αλλά ο τύπος δεδομένων 277 00:12:41,740 --> 00:12:44,500 οι δείκτες ήταν τώρα δείκτες. 278 00:12:44,500 --> 00:12:47,360 Δείκτες σε ό, τι; 279 00:12:47,360 --> 00:12:48,730 Δείκτες σε συνδεδεμένες λίστες. 280 00:12:48,730 --> 00:12:53,330 >> Επειδή η ανάκληση ότι μια συνδεδεμένη λίστα είναι πραγματικά ακριβώς ένας δείκτης σε έναν κόμβο, και 281 00:12:53,330 --> 00:12:57,110 ο κόμβος έχει ένα επόμενο πεδίο, και ότι ο κόμβος έχει ένα επόμενο πεδίο, και ούτω καθεξής. 282 00:12:57,110 --> 00:13:00,690 Έτσι μπορείτε τώρα να σκεφτείτε αυτού του πίνακα στο η αριστερή πλευρά του πίνακα κατακερματισμού ως 283 00:13:00,690 --> 00:13:01,820 οδηγεί σε μια συνδεδεμένη λίστα. 284 00:13:01,820 --> 00:13:07,000 Το πλεονέκτημα του οποίου είναι, αν μπορείτε να πάρετε μια σύγκρουση μεταξύ της Alice και του Ααρών, 285 00:13:07,000 --> 00:13:09,300 Τι θα κάνεις με το δεύτερο πρόσωπο; 286 00:13:09,300 --> 00:13:14,150 Μπορείτε να επισυνάψετε αυτόν ακριβώς στην εκπόνηση της άκρο, ή ακόμα και η αρχή 287 00:13:14,150 --> 00:13:15,490 του εν λόγω συνδεδεμένη λίστα. 288 00:13:15,490 --> 00:13:17,340 >> Και στην πραγματικότητα, ας noodle μέσω ότι για μόλις ένα δευτερόλεπτο. 289 00:13:17,340 --> 00:13:18,640 Πού θα κάνουν την πιο λογική; 290 00:13:18,640 --> 00:13:22,060 Αν εισάγω Alice και αυτή καταλήγει στο Η πρώτη θέση, τότε θα προσπαθήσει να 291 00:13:22,060 --> 00:13:25,310 εισάγετε το όνομα του Ααρών, και υπάρχει προφανώς μια σύγκρουση, πρέπει να βάλω 292 00:13:25,310 --> 00:13:27,400 του κατά την έναρξη του συνδεδεμένη λίστα; 293 00:13:27,400 --> 00:13:30,944 Αυτό είναι σε αυτή την πρώτη θέση, ή στο τέλος; 294 00:13:30,944 --> 00:13:31,440 >> ΚΟΙΝΟ: [δεν ακούγεται]. 295 00:13:31,440 --> 00:13:31,990 >> DAVID MALAN: OK. 296 00:13:31,990 --> 00:13:32,490 Άκουσα αρχή. 297 00:13:32,490 --> 00:13:33,903 Γιατί στην αρχή; 298 00:13:33,903 --> 00:13:34,750 >> ΚΟΙΝΟ: [δεν ακούγεται]. 299 00:13:34,750 --> 00:13:34,940 >> DAVID MALAN: OK. 300 00:13:34,940 --> 00:13:36,520 Είναι αλφαβητική σειρά, έτσι ώστε να είναι ωραία. 301 00:13:36,520 --> 00:13:37,330 Αυτό είναι ένα καλό ξενοδοχείο. 302 00:13:37,330 --> 00:13:39,335 Θα σώσει εμένα κάποια στιγμή ενδεχομένως. 303 00:13:39,335 --> 00:13:43,290 Δεν θα επιτρέψτε μου να κάνω δυαδική αναζήτηση, αλλά εγώ θα μπορούσε τουλάχιστον να είναι σε θέση να ξεσπάσει 304 00:13:43,290 --> 00:13:47,340 ενός βρόχου, αν αντιλαμβάνομαι, λοιπόν, είμαι τρόπο παρελθόν ήταν ο Ααρών θα είναι σε αυτό το 305 00:13:47,340 --> 00:13:48,310 ταξινόμηση συνδεδεμένη λίστα. 306 00:13:48,310 --> 00:13:50,360 Δεν πρέπει να χάνουμε χρόνο μου κοιτάζοντας σε όλη τη διαδρομή μέχρι το τέλος. 307 00:13:50,360 --> 00:13:51,530 Έτσι, αυτό είναι λογικό. 308 00:13:51,530 --> 00:13:54,710 Γιατί αλλιώς μπορεί να θέλετε να εισαγάγετε η σύγκρουση στο όνομα του 309 00:13:54,710 --> 00:13:56,660 αρχή της λίστας; 310 00:13:56,660 --> 00:13:57,397 Τι είναι αυτό; 311 00:13:57,397 --> 00:13:58,680 >> ΚΟΙΝΟ: [δεν ακούγεται]. 312 00:13:58,680 --> 00:14:00,820 >> DAVID MALAN: Θα μπορούσε να πάρει πολύ χρόνο για να φτάσουμε στο τέλος της λίστας. 313 00:14:00,820 --> 00:14:02,490 Και στην πραγματικότητα, περισσότερο και περισσότερο. 314 00:14:02,490 --> 00:14:04,920 Τα περισσότερα ονόματα που εισάγετε ότι Ξεκινήστε με ένα, το μεγαλύτερο που 315 00:14:04,920 --> 00:14:06,280 αλυσίδας πρόκειται να πάρει. 316 00:14:06,280 --> 00:14:07,890 Η πλέον ότι συνδέεται λίστα πρόκειται να πάρει. 317 00:14:07,890 --> 00:14:09,420 Έτσι, είστε πραγματικά ακριβώς σπαταλάτε το χρόνο σας. 318 00:14:09,420 --> 00:14:14,070 Ίσως είστε σε καλύτερη θέση διατηρώντας σταθερό χρόνο εισαγωγής, μεγάλη O 1, 319 00:14:14,070 --> 00:14:18,470 από πάντα βάζοντας το όνομα συγκρούονται σε η αρχή του συνδεδεμένη λίστα, 320 00:14:18,470 --> 00:14:21,230 και να μην ανησυχείτε τόσο πολύ σχετικά με την ταξινόμηση. 321 00:14:21,230 --> 00:14:22,600 >> Ποια είναι η καλύτερη απάντηση; 322 00:14:22,600 --> 00:14:23,320 Είναι ασαφές. 323 00:14:23,320 --> 00:14:26,140 Είναι το είδος της εξαρτάται από το τι διανομής είναι, αυτό το πρότυπο είναι 324 00:14:26,140 --> 00:14:27,850 από τα ονόματα που εισάγετε. 325 00:14:27,850 --> 00:14:29,430 Δεν είναι κατ 'ανάγκην μια προφανής απάντηση. 326 00:14:29,430 --> 00:14:33,100 Αλλά εδώ, πάλι, είναι μια ευκαιρία για το σχεδιασμό. 327 00:14:33,100 --> 00:14:37,220 >> Γι 'αυτό και στη συνέχεια κοίταξε αυτό το πράγμα, το οποίο είναι πραγματικά η άλλη μεγάλη ευκαιρία 328 00:14:37,220 --> 00:14:38,180 για την p-set 6. 329 00:14:38,180 --> 00:14:41,770 Και να συνειδητοποιήσουν, αν δεν το έχετε ήδη, Zamyla καταδύσεις σε δύο από αυτές, hash 330 00:14:41,770 --> 00:14:43,260 πίνακες και προσπαθεί, με περισσότερες λεπτομέρειες. 331 00:14:43,260 --> 00:14:45,630 Και το βίντεο που περιγράφει είναι ενσωματωμένα σε ρ-σετ spec. 332 00:14:45,630 --> 00:14:46,590 Αυτό ήταν ένα trie - 333 00:14:46,590 --> 00:14:51,670 Τ-Κ-Ι-Ε. Και αυτό που ήταν ενδιαφέρον για Αυτό ήταν ότι ο χρόνος εκτέλεσης 334 00:14:51,670 --> 00:14:59,510 από την αναζήτηση για ένα όνομα, όπως Maxwell τελευταία φορά, ήταν μεγάλη O από τι; 335 00:14:59,510 --> 00:15:01,040 Τι είναι αυτό; 336 00:15:01,040 --> 00:15:01,920 >> ΚΟΙΝΟ: Ο αριθμός των γραμμάτων. 337 00:15:01,920 --> 00:15:02,550 >> DAVID MALAN: Αριθμός γράμματα. 338 00:15:02,550 --> 00:15:03,210 Άκουσα δύο πράγματα. 339 00:15:03,210 --> 00:15:04,630 Αριθμός των γραμμάτων και σταθερό χρόνο. 340 00:15:04,630 --> 00:15:05,540 Οπότε ας πάμε με το πρώτο. 341 00:15:05,540 --> 00:15:06,410 Ο αριθμός των γραμμάτων. 342 00:15:06,410 --> 00:15:10,195 Λοιπόν, αυτή η δομή δεδομένων, την ανάκληση, είναι σαν ένα δέντρο, ένα δέντρο της οικογένειας, καθένα από 343 00:15:10,195 --> 00:15:12,860 Οι κόμβοι των οποίων αποτελούνται από συστοιχίες. 344 00:15:12,860 --> 00:15:16,300 Και οι συστοιχίες είναι δείκτες άλλα τέτοια κόμβους, ή άλλα τέτοια 345 00:15:16,300 --> 00:15:17,670 συστοιχίες στο δέντρο. 346 00:15:17,670 --> 00:15:22,890 >> Έτσι, αν θέλαμε να στη συνέχεια να καθορίσει αν Maxwell είναι εδώ, θα μπορούσα να πάω 347 00:15:22,890 --> 00:15:26,890 στην πρώτη σειρά, στην κορυφή του το δέντρο, η λεγόμενη ρίζα, κορυφή 348 00:15:26,890 --> 00:15:30,521 η trie, και στη συνέχεια ακολουθήστε το δείκτη m, τότε το ένα δείκτη, τότε x, 349 00:15:30,521 --> 00:15:31,710 W, E, L, l. 350 00:15:31,710 --> 00:15:34,910 Και τότε, όταν βλέπω κάποιο ειδικό σύμβολο, συμβολίζεται εδώ ως ένα τρίγωνο. 351 00:15:34,910 --> 00:15:38,480 Στον κώδικα θα δείτε προτείνουμε να υλοποιείται ως bool, λέγοντας απλώς ναι 352 00:15:38,480 --> 00:15:40,540 ή όχι, μια λέξη σταματά εδώ. 353 00:15:40,540 --> 00:15:45,270 >> Λοιπόν, από τη στιγμή που έχουμε πάει στο Μ-Α-Χ-Π-Ε-L-L, αισθάνεται σαν επτά, ίσως 354 00:15:45,270 --> 00:15:48,910 οκτώ αν πάμε ένα παρελθόν, οκτώ βήματα για να βρείτε Maxwell. 355 00:15:48,910 --> 00:15:53,050 Ή ας το ονομάσουμε Κ. παρά να θυμηθούμε το τελευταίο φορά, υποστήριξε ότι αν υπάρχει 356 00:15:53,050 --> 00:15:57,540 ρεαλιστικά ένα μέγιστο μήκος για μια λέξη, όπως η 40-ορισμένοι-περίεργο χαρακτήρες, ένα 357 00:15:57,540 --> 00:16:00,810 Μέγιστο μήκος συνεπάγεται μια σταθερή τιμή. 358 00:16:00,810 --> 00:16:05,770 Έτσι, πραγματικά, ναι, αυτό είναι τεχνικώς μεγάλη O 8 ή 7, ή πραγματικά μεγάλη O Κ., όμως, 359 00:16:05,770 --> 00:16:09,420 αν υπάρχει ένα πεπερασμένο όριο για το τι Κ θα μπορούσε να είναι, είναι μια σταθερά. 360 00:16:09,420 --> 00:16:12,080 Και γι 'αυτό είναι μεγάλη O 1 στη το τέλος της ημέρας. 361 00:16:12,080 --> 00:16:13,040 >> Όχι στον πραγματικό κόσμο. 362 00:16:13,040 --> 00:16:15,960 Όχι όταν μπορείτε πραγματικά να αρχίσετε να παρακολουθείτε το ρολόι σας ως λειτουργία του προγράμματός σας. 363 00:16:15,960 --> 00:16:20,690 Είναι απολύτως πρόκειται να είναι λίγο βραδύτερη από ό, τι πραγματικά σταθερή 364 00:16:20,690 --> 00:16:21,840 φορά με ένα βήμα. 365 00:16:21,840 --> 00:16:25,540 Είναι πρόκειται να είναι επτά ή οκτώ βήματα, αλλά ακόμα αυτό είναι πολύ, πολύ καλύτερα 366 00:16:25,540 --> 00:16:30,080 από έναν αλγόριθμο, όπως μεγάλη O Ν που εξαρτάται από το μέγεθος του τι είναι στην 367 00:16:30,080 --> 00:16:31,220 δομή δεδομένων. 368 00:16:31,220 --> 00:16:34,970 >> Ανακοίνωση για το ανάποδα εδώ είναι να εισάγουμε ένα εκατομμύριο περισσότερα ονόματα σε αυτό 369 00:16:34,970 --> 00:16:38,170 δομή των δεδομένων, αλλά πόσα περισσότερα βήματα είναι αυτό πρόκειται να μας πάρει για να βρείτε 370 00:16:38,170 --> 00:16:40,480 Maxwell σε αυτή την περίπτωση; 371 00:16:40,480 --> 00:16:40,780 Κανένας. 372 00:16:40,780 --> 00:16:41,820 Είναι ανεπηρέαστη. 373 00:16:41,820 --> 00:16:45,480 Και μέχρι σήμερα, δεν νομίζω ότι έχουμε δει ένα παράδειγμα μιας δομής δεδομένων ή ενός 374 00:16:45,480 --> 00:16:48,560 αλγόριθμο που ήταν εντελώς ανεπηρέαστη από εξωτερικές 375 00:16:48,560 --> 00:16:50,040 συμπεριφορές όπως αυτή. 376 00:16:50,040 --> 00:16:51,160 Αλλά αυτό δεν μπορεί να είναι καταπληκτικό. 377 00:16:51,160 --> 00:16:52,900 Αυτό δεν μπορεί να είναι η μόνη λύση για την p-set 378 00:16:52,900 --> 00:16:53,570 >> Και δεν είναι. 379 00:16:53,570 --> 00:16:55,980 Αυτό δεν είναι απαραίτητα τα δεδομένα δομή θα πρέπει να κλίνουν προς, 380 00:16:55,980 --> 00:16:58,220 γιατί όπως πίνακες κατακερματισμού, δίλημμα. 381 00:16:58,220 --> 00:17:00,500 Ποια είναι η τιμή που πληρώνετε εδώ; 382 00:17:00,500 --> 00:17:00,940 Μνήμη. 383 00:17:00,940 --> 00:17:02,890 Θέλω να πω, αυτό είναι μια φρικτή ποσό της μνήμης. 384 00:17:02,890 --> 00:17:05,569 Και δεν μπορείτε να δείτε αρκετά εδώ γιατί ο συγγραφέας αυτής της εικόνας 385 00:17:05,569 --> 00:17:09,420 προφανώς περικομμένο όλες τις συστοιχίες, και εμείς δεν βλέπουμε πολλά Α και 386 00:17:09,420 --> 00:17:12,700 Του Β και του Γ και του Q και του Y και το Ζ σε αυτές τις συστοιχίες. 387 00:17:12,700 --> 00:17:13,630 Αλλά είναι εκεί. 388 00:17:13,630 --> 00:17:17,660 >> Κάθε ένα από αυτούς τους κόμβους είναι μια ολόκληρη συστοιχία περίπου 26 ή περισσότερα bytes, καθένα από τα 389 00:17:17,660 --> 00:17:19,170 που αντιπροσωπεύει ένα γράμμα. 390 00:17:19,170 --> 00:17:22,920 27 στην περίπτωσή μας, έτσι ώστε να μπορούμε να υποστηρίξουμε αποστρόφους στο σύνολο πρόβλημα. 391 00:17:22,920 --> 00:17:27,030 Έτσι, αυτή η δομή των δεδομένων είναι πραγματικά, πολύ πυκνή και μεγάλη. 392 00:17:27,030 --> 00:17:30,880 Και αυτό από μόνο του θα μπορούσε να καταλήξει επιβράδυνση τα πράγματα κάτω, ή τουλάχιστον να σας κοστίσει ένα 393 00:17:30,880 --> 00:17:32,240 πολύ περισσότερο χώρο. 394 00:17:32,240 --> 00:17:34,020 Αλλά και πάλι, μπορούμε να εξάγουμε συγκρίσεις εδώ. 395 00:17:34,020 --> 00:17:39,190 >> Θυμηθείτε λίγο πίσω, πετύχαμε πολλά πιο συναρπαστική στιγμή τρέχει στη διαλογή 396 00:17:39,190 --> 00:17:42,880 όταν χρησιμοποιούμε συγχώνευση είδους, αλλά η τιμή πληρώσαμε για να επιτευχθεί n log n για συγχώνευση 397 00:17:42,880 --> 00:17:46,930 φύσεως που απαιτεί ότι ξοδεύουμε περισσότερο τι πόρους; 398 00:17:46,930 --> 00:17:47,690 Περισσότερος χώρος. 399 00:17:47,690 --> 00:17:50,530 Χρειαζόμασταν έναν δευτερεύοντα πίνακα για να αντιγραφή τους ανθρώπους σε, όπως ακριβώς 400 00:17:50,530 --> 00:17:51,620 κάναμε εδώ στη σκηνή. 401 00:17:51,620 --> 00:17:55,880 Έτσι και πάλι, δεν υπάρχουν σαφείς νικητές, αλλά μόνο υποκειμενική design 402 00:17:55,880 --> 00:17:57,710 αποφάσεις που πρέπει να γίνουν. 403 00:17:57,710 --> 00:17:58,060 >> Εντάξει. 404 00:17:58,060 --> 00:17:59,130 Πώς, λοιπόν, γι 'αυτό; 405 00:17:59,130 --> 00:18:02,050 Ο καθένας αναγνωρίζει το οποίο D-Hall; 406 00:18:02,050 --> 00:18:02,440 OK. 407 00:18:02,440 --> 00:18:03,170 Έτσι, τρεις από εμάς κάνουμε. 408 00:18:03,170 --> 00:18:03,750 Mather Σώμα. 409 00:18:03,750 --> 00:18:05,070 Έτσι, αυτό είναι για φαγητό Mather του. 410 00:18:05,070 --> 00:18:09,650 Πάω στοίχημα ότι όλοι οι αίθουσες φαγητού έχουν στοίβες των δίσκων όπως αυτό. 411 00:18:09,650 --> 00:18:11,950 Και αυτό είναι πραγματικά αντιπροσωπευτικό του κάτι που έχουμε 412 00:18:11,950 --> 00:18:13,050 προφανώς ήδη δει. 413 00:18:13,050 --> 00:18:14,850 Εμείς αυτό που ονομάζεται κυριολεκτικά μια στοίβα. 414 00:18:14,850 --> 00:18:18,970 Και η στοίβα, από την άποψη της σας μνήμη του υπολογιστή, είναι όπου τα δεδομένα πηγαίνει 415 00:18:18,970 --> 00:18:20,460 ενώ οι λειτουργίες που ονομάζεται. 416 00:18:20,460 --> 00:18:23,410 >> Για παράδειγμα, τι είδους πράγματα πάνε στη στοίβα σε σχέση με τη 417 00:18:23,410 --> 00:18:27,420 Διάταξη μνήμης έχουμε συζητήσει σε εβδομάδες παρελθόν; 418 00:18:27,420 --> 00:18:28,736 Τι είναι αυτό; 419 00:18:28,736 --> 00:18:29,670 >> ΚΟΙΝΟ: Οι κλήσεις σε συναρτήσεις. 420 00:18:29,670 --> 00:18:30,260 >> DAVID MALAN: Λυπάμαι. 421 00:18:30,260 --> 00:18:31,210 >> ΚΟΙΝΟ: Οι κλήσεις σε συναρτήσεις. 422 00:18:31,210 --> 00:18:33,590 >> DAVID MALAN: Κλήσεις προς τις λειτουργίες, αλλά Συγκεκριμένα, αυτό που είναι στο εσωτερικό του καθενός από 423 00:18:33,590 --> 00:18:35,340 αυτά τα πλαίσια; 424 00:18:35,340 --> 00:18:37,220 Τι είδους πράγματα; 425 00:18:37,220 --> 00:18:37,460 Ναι. 426 00:18:37,460 --> 00:18:38,500 Έτσι, οι τοπικές μεταβλητές. 427 00:18:38,500 --> 00:18:43,080 Κάθε φορά που χρειάζεται κάποια τοπική αποθήκευση, σαν ένα επιχείρημα, ή int I, ή int 428 00:18:43,080 --> 00:18:45,940 temp, ή ό, τι η τοπική μεταβλητή, έχουμε ήδη 429 00:18:45,940 --> 00:18:47,210 βάζοντας ότι στη στοίβα. 430 00:18:47,210 --> 00:18:49,610 Και λέμε μια στοίβα, διότι αυτής της ιδέας layering. 431 00:18:49,610 --> 00:18:52,940 Ακριβώς το είδος των αγώνων με την πραγματικότητα, η έννοια αυτού. 432 00:18:52,940 --> 00:18:56,650 >> Αλλά αποδεικνύεται ότι μια στοίβα μπορεί επίσης να να θεωρηθεί ως μια δομή δεδομένων, ένα 433 00:18:56,650 --> 00:19:00,110 εναλλακτική λύση σε μια σειρά, μια εναλλακτική σε μια συνδεδεμένη λίστα. 434 00:19:00,110 --> 00:19:02,770 Κάτι εννοιολογικά πιο ενδιαφέρουσα που μπορεί να είναι ακόμα 435 00:19:02,770 --> 00:19:06,030 υλοποιηθεί με τη χρήση είτε εκείνων τα πράγματα, αλλά αυτό είναι ένα διαφορετικό είδος 436 00:19:06,030 --> 00:19:09,140 δομή δεδομένων υποστηρίζουν, πραγματικά, μόνο δύο πράξεις. 437 00:19:09,140 --> 00:19:11,000 Αλλά μπορείτε να προσθέσετε στο εκτροφέα χαρακτηριστικά από αυτά. 438 00:19:11,000 --> 00:19:12,180 Αλλά αυτά είναι τα βασικά - 439 00:19:12,180 --> 00:19:13,510 ωθήσει και ποπ. 440 00:19:13,510 --> 00:19:19,240 >> Και η ιδέα με μια στοίβα είναι ότι αν έχουμε εδώ, με ή χωρίς Annenberg 441 00:19:19,240 --> 00:19:22,880 γνωρίζοντας, ένα δίσκο από διπλανής πόρτας με τον αριθμό 9 σε αυτό. 442 00:19:22,880 --> 00:19:23,870 Έτσι, μόνο μια int. 443 00:19:23,870 --> 00:19:26,990 Και θέλω να ωθήσει αυτό επάνω τα δεδομένα δομή, η οποία επί του παρόντος είναι άδειο. 444 00:19:26,990 --> 00:19:28,790 Θεωρούν αυτό το κάτω μέρος της στοίβας. 445 00:19:28,790 --> 00:19:33,150 Θα ήθελα να ωθήσει τον αριθμό 9 πάνω στο στοίβα, και τώρα είναι εκεί. 446 00:19:33,150 --> 00:19:36,040 >> Αλλά το ενδιαφέρον πράγμα για μια στοίβα είναι ότι αν θέλω τώρα να πιέσει 447 00:19:36,040 --> 00:19:40,210 κάποια άλλη αξία, όπως το 17, και πατάω αυτό στη στοίβα, Πάω να κάνω 448 00:19:40,210 --> 00:19:43,290 το μόνο έξυπνο πράγμα, είμαι απλώς πρόκειται για να το διορθώσουμε, όπου εμείς οι άνθρωποι 449 00:19:43,290 --> 00:19:45,180 να είναι διατεθειμένος να το βάλει, στην κορυφή. 450 00:19:45,180 --> 00:19:48,850 Αλλά αυτό που είναι ενδιαφέρον τώρα είναι, πώς μπορώ να πάρω στα 9; 451 00:19:48,850 --> 00:19:50,670 Ξέρετε, εγώ δεν κάνω χωρίς κάποια προσπάθεια. 452 00:19:50,670 --> 00:19:54,070 >> Έτσι τι είναι ενδιαφέρον για μια στοίβα είναι ότι με το σχεδιασμό, 453 00:19:54,070 --> 00:19:56,330 Είναι μια δομή δεδομένων LIFO. 454 00:19:56,330 --> 00:19:59,680 Silly τρόπος περιγραφής τελευταία in, first out. 455 00:19:59,680 --> 00:20:03,280 Έτσι, ο τελευταίος αριθμός στο αυτή τη φορά ήταν 17. 456 00:20:03,280 --> 00:20:07,540 Έτσι, αν θέλω να σκάσει κάτι off της στοίβας, μπορεί να είναι μόνο 17. 457 00:20:07,540 --> 00:20:11,890 Έτσι, υπάρχει μια υποχρεωτική σειρά πράξεις εδώ, όπου το τελευταίο στοιχείο 458 00:20:11,890 --> 00:20:14,260 στο πρέπει να είναι η πρώτη έξω. 459 00:20:14,260 --> 00:20:16,440 Εξ ου και το ακρωνύμιο, LIFO. 460 00:20:16,440 --> 00:20:19,160 >> Επομένως, γιατί θα μπορούσε αυτό να είναι χρήσιμο; 461 00:20:19,160 --> 00:20:22,690 Οι πλαίσια τους, στις οποίες είχατε θέλουν μια δομή δεδομένων, όπως αυτό; 462 00:20:22,690 --> 00:20:24,810 Λοιπόν, αυτό είναι σίγουρα χρήσιμο στο εσωτερικό του υπολογιστή. 463 00:20:24,810 --> 00:20:29,050 Έτσι, τα λειτουργικά συστήματα χρησιμοποιούν σαφώς αυτό είδος της δομής δεδομένων για στοίβες. 464 00:20:29,050 --> 00:20:32,800 Θα δούμε επίσης την ίδια ιδέα όταν πρόκειται για ιστοσελίδες. 465 00:20:32,800 --> 00:20:35,890 Έτσι, αυτή την εβδομάδα και την επόμενη εβδομάδα και πέρα, και όπως μπορείτε να αρχίσει η εφαρμογή web 466 00:20:35,890 --> 00:20:39,490 σελίδες σε μια γλώσσα που ονομάζεται HTML, μπορείτε να πραγματικά να χρησιμοποιήσετε μια δομή δεδομένων, όπως 467 00:20:39,490 --> 00:20:42,690 Αυτό για να καθορίσει εάν η σελίδα είναι σωστά διαμορφωμένη. 468 00:20:42,690 --> 00:20:47,170 Επειδή θα δούμε ακολουθήσει όλες τις ιστοσελίδες ένα είδος ιεραρχίας, μια εσοχή 469 00:20:47,170 --> 00:20:52,030 που, στο τέλος της ημέρας, είναι ένα δομή δέντρου κάτω από το καπό. 470 00:20:52,030 --> 00:20:53,620 Έτσι, περισσότερα για αυτό σε ακριβώς ένα κομμάτι. 471 00:20:53,620 --> 00:20:56,560 >> Αλλά για τώρα, ας προτείνουν για μια στιγμή, πώς θα μπορούσαμε να πάμε για 472 00:20:56,560 --> 00:20:58,830 αντιπροσωπεύουν ό, τι μια στοίβα είναι; 473 00:20:58,830 --> 00:21:03,370 Επιτρέψτε μου να σας προτείνω να εφαρμόσουμε μια στοίβα με κωδικό όπως αυτό. 474 00:21:03,370 --> 00:21:07,990 Έτσι, μια στοίβα θα έχει στο εσωτερικό του δύο πράγματα, ένας πίνακας, που ονομάζεται δίσκους, 475 00:21:07,990 --> 00:21:09,510 ακριβώς για να είναι συνεπής με το demo. 476 00:21:09,510 --> 00:21:12,660 Και κάθε ένα από τα στοιχεία αυτού του πίνακα Είναι πρόκειται να είναι μια τύπου int. 477 00:21:12,660 --> 00:21:14,740 Και η ικανότητα είναι προφανώς τι; 478 00:21:14,740 --> 00:21:18,796 Επειδή δεν έχω γράψει το πλήρη ορισμό εδώ. 479 00:21:18,796 --> 00:21:21,535 >> Είναι ίσως η μέγιστη μέγεθος του πίνακα. 480 00:21:21,535 --> 00:21:25,150 Και είναι πιθανώς δηλωθεί ως μια απότομη ορίζουν στην κορυφή του αρχείου, ορισμένοι 481 00:21:25,150 --> 00:21:28,450 το είδος της συνεχούς όπως υπονοείται από η απλή κεφαλαιοποίηση. 482 00:21:28,450 --> 00:21:32,250 Έτσι, κάπου ικανότητα ορίζεται ως το μέγιστο δυνατό μέγεθος. 483 00:21:32,250 --> 00:21:35,590 Εν τω μεταξύ, στο εσωτερικό της δομής των δεδομένων είναι γνωστή ως μια στοίβα θα υπάρχει 484 00:21:35,590 --> 00:21:38,630 είναι ένας ακέραιος μόνο γνωστή απλά το μέγεθος. 485 00:21:38,630 --> 00:21:43,400 >> Έτσι, εάν επρόκειτο να εκπροσωπήσει αυτό τώρα εικονογραφικά, ας υποθέσουμε ότι αυτή η 486 00:21:43,400 --> 00:21:48,070 σύνολό μαύρο κουτί αντιπροσωπεύει το stack μου. 487 00:21:48,070 --> 00:21:50,070 Στο εσωτερικό του είναι δύο μεταβλητές. 488 00:21:50,070 --> 00:21:54,780 Έτσι, Πάω να επιστήσει την πρώτο και το μέγεθος. 489 00:21:54,780 --> 00:21:57,420 Και το δεύτερο Πάω , προκειμένου να καταρτίσουν μια σειρά. 490 00:21:57,420 --> 00:22:01,060 >> Αλλά ακριβώς για να κρατήσει τα πράγματα ομαλή, κανονικά θα ήθελα να επιστήσω μια σειρά, όπως 491 00:22:01,060 --> 00:22:04,910 αυτό, αλλά αυτό είναι το είδος της Νίκαιας αν ταιριάζουν με την πραγματικότητα, ή 492 00:22:04,910 --> 00:22:06,230 ταιριάζουν με το νοητικό μοντέλο. 493 00:22:06,230 --> 00:22:12,880 Έτσι, επιτρέψτε μου να επιστήσω την αντ 'αυτού τη σειρά κάθετα, το οποίο είναι ακριβώς, και πάλι, 494 00:22:12,880 --> 00:22:13,840 απόδοση καλλιτέχνη. 495 00:22:13,840 --> 00:22:16,610 Δεν έχει τόση σημασία τι είναι κάτω από το καπό. 496 00:22:16,610 --> 00:22:20,350 Και εμείς θα πούμε ότι, από προεπιλογή, δυναμικότητα πρόκειται να είναι τρεις. 497 00:22:20,350 --> 00:22:23,480 Έτσι, αυτό θα είναι μηδέν τοποθεσίας, αυτή η θα είναι θέση 1, η παρούσα 498 00:22:23,480 --> 00:22:25,740 θα είναι θέση 2. 499 00:22:25,740 --> 00:22:29,330 >> Αν έχω δωροδοκήσει με μια μπάλα για το άγχος, θα κάποιος ήθελε να έρθει και να τρέξει το 500 00:22:29,330 --> 00:22:30,870 επιβιβαστούν εδώ μόνο για μια στιγμή; 501 00:22:30,870 --> 00:22:31,960 OK, είδε το χέρι σας πρώτα. 502 00:22:31,960 --> 00:22:33,950 Ανέβα. 503 00:22:33,950 --> 00:22:36,500 Εντάξει. 504 00:22:36,500 --> 00:22:38,760 Έτσι, πιστεύω ότι είναι ο Steven. 505 00:22:38,760 --> 00:22:40,035 Ανέβα. 506 00:22:40,035 --> 00:22:40,770 Εντάξει. 507 00:22:40,770 --> 00:22:46,760 >> Αλλά ας υποθέσουμε ότι τώρα έχουμε επαναφορά στην αρχική κατάσταση του κόσμου όπου 508 00:22:46,760 --> 00:22:52,180 έχουν δηλώσει μόνο ένα stack, και είναι πρόκειται να είναι χωρητικότητας τρία. 509 00:22:52,180 --> 00:22:54,470 Αλλά το μέγεθος δεν έχει ακόμη καθοριστεί. 510 00:22:54,470 --> 00:22:56,100 Δίσκοι που δεν έχει ακόμη προσδιοριστεί. 511 00:22:56,100 --> 00:22:57,300 Έτσι, μερικές ερωτήσεις πρώτα. 512 00:22:57,300 --> 00:23:01,310 Και επιτρέψτε μου να σας δώσω μικρόφωνο ώστε να μπορείτε να συμμετέχουν πιο ενεργά σε αυτό. 513 00:23:01,310 --> 00:23:05,190 >> Έτσι, αυτό που είναι μέσα του μεγέθους αυτή τη στιγμή στο χρόνο, αν όλα που έχω κάνει είναι 514 00:23:05,190 --> 00:23:09,340 δηλωθεί μια στοίβα με μία γραμμή κώδικα; 515 00:23:09,340 --> 00:23:10,100 >> STEVEN: Όχι πολύ. 516 00:23:10,100 --> 00:23:12,080 >> DAVID MALAN: Εντάξει, όχι πολύ. 517 00:23:12,080 --> 00:23:14,410 Γνωρίζουμε τι είναι μέσα του μεγέθους, ξέρουμε τι είναι μέσα 518 00:23:14,410 --> 00:23:16,330 αυτού του πίνακα εδώ; 519 00:23:16,330 --> 00:23:18,630 >> STEVEN: Μόνο τυχαίο κωδικό, έτσι δεν είναι; 520 00:23:18,630 --> 00:23:20,220 Απλά - 521 00:23:20,220 --> 00:23:23,230 >> DAVID MALAN: Ναι, είμαι πρόκειται να αποκαλούν κώδικα, αλλά τυχαία - 522 00:23:23,230 --> 00:23:23,820 >> STEVEN: πράγματα. 523 00:23:23,820 --> 00:23:28,290 >> DAVID MALAN: Τα πράγματα όπως τυχαία 524 00:23:28,290 --> 00:23:28,870 >> STEVEN: Bits. 525 00:23:28,870 --> 00:23:29,530 >> DAVID MALAN: Bits, έτσι δεν είναι; 526 00:23:29,530 --> 00:23:31,190 Έτσι, οι τιμές σκουπίδια, έτσι δεν είναι; 527 00:23:31,190 --> 00:23:33,470 Έτσι μεταθέσεις από 0 και 1'S. 528 00:23:33,470 --> 00:23:35,920 Απομεινάρια των προηγούμενων χρήσεων της παρούσας μνήμης. 529 00:23:35,920 --> 00:23:38,150 Και εμείς πραγματικά δεν ξέρω ποιες είναι οι αξίες Οι, έτσι ώστε να επιστήσει τους τυπικά 530 00:23:38,150 --> 00:23:38,930 ως ερωτηματικά. 531 00:23:38,930 --> 00:23:41,990 >> Έτσι, το πρώτο πράγμα είμαστε προφανώς πρόκειται να θέλουν να κάνουν εδώ - 532 00:23:41,990 --> 00:23:46,630 και επιτρέψτε μου να δώσω αυτό το πεδίο στο εσωτερικό του υπάρχει ένα όνομα - δίσκους. 533 00:23:46,630 --> 00:23:49,540 Τι θα πρέπει να προετοιμαστεί κατά πάσα πιθανότητα μέγεθος, αν θέλουμε να 534 00:23:49,540 --> 00:23:51,040 αρχίσετε να χρησιμοποιείτε αυτό στοίβα; 535 00:23:51,040 --> 00:23:53,070 >> STEVEN: Δίσκος είναι sub 3. 536 00:23:53,070 --> 00:23:53,910 >> DAVID MALAN: Λοιπόν, εντάξει. 537 00:23:53,910 --> 00:23:56,710 Για να είμαι σαφής, η ικανότητα δηλώνεται αλλού τρία. 538 00:23:56,710 --> 00:23:58,570 Και αυτό είναι που έχω χρησιμοποιήσει για την κατανομή του πίνακα. 539 00:23:58,570 --> 00:24:03,535 Μέγεθος πρόκειται να αναφερθώ σε πόσες δίσκοι είναι σήμερα στην στοίβα. 540 00:24:03,535 --> 00:24:03,880 >> STEVEN: Zero. 541 00:24:03,880 --> 00:24:04,460 >> DAVID MALAN: Γι 'αυτό πρέπει να είναι μηδέν. 542 00:24:04,460 --> 00:24:07,760 Έτσι προχωρήστε, και με κάθε δάχτυλο, σχεδιάστε ένα μηδενικό σε μέγεθος. 543 00:24:07,760 --> 00:24:08,440 Εντάξει. 544 00:24:08,440 --> 00:24:10,920 Έτσι τώρα, τι είναι μέσα από αυτό το εδώ, δεν ξέρουμε. 545 00:24:10,920 --> 00:24:12,160 Αυτά είναι πραγματικά ακριβώς αξίες σκουπίδια. 546 00:24:12,160 --> 00:24:14,800 Έτσι θα μπορούσαμε να αντλήσει ερωτηματικά, αλλά ας κρατήσουμε το διοικητικό συμβούλιο καθαρά για σήμερα 547 00:24:14,800 --> 00:24:16,300 διότι δεν έχει σημασία τι υπάρχει εκεί. 548 00:24:16,300 --> 00:24:19,130 Δεν χρειάζεται να προετοιμαστεί η συστοιχία σε τίποτα, γιατί αν γνωρίζουμε ότι 549 00:24:19,130 --> 00:24:23,100 το μέγεθος της στοίβας είναι μηδέν, επίσης, μπορούμε δεν θα πρέπει να ψάχνει σε τίποτα 550 00:24:23,100 --> 00:24:25,590 αυτή η συστοιχία έτσι κι αλλιώς σε αυτό το σημείο στο χρόνο. 551 00:24:25,590 --> 00:24:29,970 >> Ας υποθέσουμε ότι πατάω το αριθμό 9 πάνω στη στοίβα. 552 00:24:29,970 --> 00:24:33,750 Πώς θα πρέπει να ενημερώσετε τη δομή των δεδομένων μέσα σε αυτό το μαύρο κουτί; 553 00:24:33,750 --> 00:24:35,540 Ποιες τιμές πρέπει να αλλάξουν; 554 00:24:35,540 --> 00:24:36,200 >> STEVEN: Εντός - 555 00:24:36,200 --> 00:24:37,400 το μέγεθος; 556 00:24:37,400 --> 00:24:37,650 >> DAVID MALAN: OK. 557 00:24:37,650 --> 00:24:38,770 Μέγεθος πρέπει να γίνει αυτό; 558 00:24:38,770 --> 00:24:39,580 >> STEVEN: Μέγεθος θα είναι ένα. 559 00:24:39,580 --> 00:24:39,870 >> DAVID MALAN: OK. 560 00:24:39,870 --> 00:24:41,110 Έτσι, το μέγεθος θα πρέπει να γίνει ένα. 561 00:24:41,110 --> 00:24:42,540 Έτσι, μπορείτε να το κάνετε αυτό σε ένα ζευγάρι τρόπους. 562 00:24:42,540 --> 00:24:46,920 Επιτρέψτε μου να σας δώσω, τώρα σας δάχτυλο είναι μια γόμα. 563 00:24:46,920 --> 00:24:47,260 Εντάξει. 564 00:24:47,260 --> 00:24:49,960 Στη συνέχεια, τώρα το δάχτυλό σας είναι μια βούρτσα. 565 00:24:49,960 --> 00:24:50,330 Εντάξει. 566 00:24:50,330 --> 00:24:52,820 Και τώρα τι άλλο πρέπει να αλλάξει, Προφανώς, στη δομή δεδομένων; 567 00:24:52,820 --> 00:24:57,060 >> STEVEN: Θα πάμε από κάτω μέχρι 9. 568 00:24:57,060 --> 00:24:57,760 >> DAVID MALAN: 9. 569 00:24:57,760 --> 00:24:58,420 Εντάξει, καλή. 570 00:24:58,420 --> 00:25:01,550 Έτσι, ακόμα δεν έχει σημασία τι είναι σε θέση ένα ή δύο επειδή είναι 571 00:25:01,550 --> 00:25:04,520 τιμές σκουπίδια, αλλά δεν θα πρέπει να ενοχλεί ψάχνει εκεί, επειδή το μέγεθος είναι 572 00:25:04,520 --> 00:25:07,540 μας λέει ότι μόνο το πρώτο στοιχείο είναι πραγματικά νόμιμη. 573 00:25:07,540 --> 00:25:10,400 Έτσι τώρα πατάω 17 στην λίστα του. 574 00:25:10,400 --> 00:25:11,830 Τι συμβαίνει με αυτήν την εικόνα; 575 00:25:11,830 --> 00:25:14,720 >> STEVEN: Έτσι, το μέγεθος δεν πρόκειται να πάει σε δύο. 576 00:25:14,720 --> 00:25:15,300 >> DAVID MALAN: OK. 577 00:25:15,300 --> 00:25:16,070 Είσαι γόμα - 578 00:25:16,070 --> 00:25:16,810 ουπς. 579 00:25:16,810 --> 00:25:18,026 Είσαι μια γόμα. 580 00:25:18,026 --> 00:25:18,840 >> STEVEN: Eraser. 581 00:25:18,840 --> 00:25:19,720 >> DAVID MALAN: Είσαι μια βούρτσα. 582 00:25:19,720 --> 00:25:20,560 >> STEVEN: Brush. 583 00:25:20,560 --> 00:25:20,920 >> DAVID MALAN: OK. 584 00:25:20,920 --> 00:25:21,600 Και τι άλλο; 585 00:25:21,600 --> 00:25:22,600 >> STEVEN: Και τότε - 586 00:25:22,600 --> 00:25:22,915 >> DAVID MALAN: Πιέσαμε 17. 587 00:25:22,915 --> 00:25:24,760 >> STEVEN: Έχουμε κολλήσει 17 στην κορυφή, έτσι ώστε - 588 00:25:24,760 --> 00:25:25,710 >> DAVID MALAN: Εντάξει, καλά. 589 00:25:25,710 --> 00:25:27,040 >> STEVEN: - να πέσει κάτω. 590 00:25:27,040 --> 00:25:27,530 >> DAVID MALAN: Εντάξει. 591 00:25:27,530 --> 00:25:27,940 Είναι εύκολο να πάρει. 592 00:25:27,940 --> 00:25:29,300 Είμαι δεν πρόκειται να σας βοηθήσει αυτή τη φορά. 593 00:25:29,300 --> 00:25:30,510 Πιέστε 22. 594 00:25:30,510 --> 00:25:31,720 >> STEVEN: Έγινε. 595 00:25:31,720 --> 00:25:34,870 Να γίνει μια γόμα. 596 00:25:34,870 --> 00:25:37,340 Είμαι γίνεται μια βούρτσα. 597 00:25:37,340 --> 00:25:39,340 Και τότε Βάζω 22. 598 00:25:39,340 --> 00:25:40,100 >> DAVID MALAN: 22. 599 00:25:40,100 --> 00:25:40,620 Εξαιρετικό. 600 00:25:40,620 --> 00:25:41,380 Έτσι, για μια ακόμη φορά. 601 00:25:41,380 --> 00:25:44,280 Είμαι τώρα πρόκειται να πιέσει πάνω στη στοίβα 26. 602 00:25:44,280 --> 00:25:46,350 >> STEVEN: Ooh. 603 00:25:46,350 --> 00:25:50,278 Θεέ μου. 604 00:25:50,278 --> 00:25:52,520 Μπορείτε αλιεύονται με πραγματικά από τη φρουρά. 605 00:25:52,520 --> 00:25:53,703 >> DAVID MALAN: Δεν έκανε δείτε αυτό έρχεται; 606 00:25:53,703 --> 00:25:55,930 >> STEVEN: Δεν είδα αυτό που έρχονται. 607 00:25:55,930 --> 00:25:58,756 Θα μπορούσαμε εκ νέου αρχική ικανότητα; 608 00:25:58,756 --> 00:25:59,790 >> DAVID MALAN: Αυτό είναι μια καλή ερώτηση. 609 00:25:59,790 --> 00:26:02,360 Έτσι, έχουμε το είδος του εαυτού μας ζωγραφισμένα σε μια γωνία εδώ. 610 00:26:02,360 --> 00:26:06,740 Πραγματικά δεν υπάρχει κανένας καλός για Steven επειδή έχουμε διατεθεί αυτό το array 611 00:26:06,740 --> 00:26:09,130 στατικά, να το πω έτσι, μέσα της δομής των δεδομένων. 612 00:26:09,130 --> 00:26:12,170 Και έχουμε ουσιαστικά σκληρό κωδικοποιούνται να είναι το μέγεθος του τρία. 613 00:26:12,170 --> 00:26:14,170 Έτσι, δεν μπορούμε να ανακατανείμει πραγματικά. 614 00:26:14,170 --> 00:26:20,020 >> Θα μπορούσαμε αν πήγαμε πίσω στο, έχουμε επαναπροσδιόρισε δίσκοι να είναι ένας δείκτης που 615 00:26:20,020 --> 00:26:22,300 Στη συνέχεια χρησιμοποιούμε malloc στη μνήμη χέρι. 616 00:26:22,300 --> 00:26:25,050 Διότι, αν πήραμε τη μνήμη ο σωρός μέσω malloc, έχουμε 617 00:26:25,050 --> 00:26:26,430 θα μπορούσε να απελευθερώσει στη συνέχεια. 618 00:26:26,430 --> 00:26:29,630 Αλλά πριν από την απελευθέρωση του, θα μπορούσαμε να ανακατανομή ένα μεγαλύτερο κομμάτι της μνήμης, 619 00:26:29,630 --> 00:26:31,330 ενημέρωση του δείκτη, και ούτω καθεξής. 620 00:26:31,330 --> 00:26:33,500 Αλλά για τώρα, αυτό είναι πραγματικά το καλύτερο που μπορούμε να κάνουμε. 621 00:26:33,500 --> 00:26:36,360 Πιέστε και ποπ είναι κατά πάσα πιθανότητα θα να πρέπει να σηματοδοτήσει κάποιο λάθος. 622 00:26:36,360 --> 00:26:40,270 >> Έτσι, για παράδειγμα, την εφαρμογή μας της ώθησης θα μπορούσε να επιστρέψει μια bool που 623 00:26:40,270 --> 00:26:42,390 προηγουμένως επέστρεψε αλήθεια, αλήθεια, είναι αλήθεια. 624 00:26:42,390 --> 00:26:48,390 Αλλά η τέταρτη φορά, πρόκειται να έχουν να επιστρέψει ψευδείς, για παράδειγμα. 625 00:26:48,390 --> 00:26:48,540 Εντάξει. 626 00:26:48,540 --> 00:26:49,540 Πολύ καλά κάνει. 627 00:26:49,540 --> 00:26:50,060 Συγχαρητήρια. 628 00:26:50,060 --> 00:26:52,160 Έχετε κερδίσει μπάλα για το άγχος σας σήμερα. 629 00:26:52,160 --> 00:26:53,110 >> [Χειροκρότημα] 630 00:26:53,110 --> 00:26:54,382 >> STEVEN: Σας ευχαριστώ. 631 00:26:54,382 --> 00:26:55,680 >> DAVID MALAN: Σας ευχαριστώ. 632 00:26:55,680 --> 00:26:59,740 Εντάξει, έτσι αυτό δεν φαίνεται να είναι πολύ από ένα βήμα προς τα εμπρός, έτσι δεν είναι; 633 00:26:59,740 --> 00:27:01,410 Περιγράψαμε αυτή τη δομή δεδομένων. 634 00:27:01,410 --> 00:27:02,320 Ήταν συναρπαστικό, έτσι δεν είναι; 635 00:27:02,320 --> 00:27:03,200 Λειτουργικά συστήματα αρέσει. 636 00:27:03,200 --> 00:27:06,360 Προφανώς το διαδίκτυο μπορεί να κάνει χρήση αυτής, και άλλες εφαρμογές ακόμα. 637 00:27:06,360 --> 00:27:10,870 Αλλά τι ηλίθιο περιορισμό ότι είμαστε πίσω στο είδος της εβδομάδας δύο όρια 638 00:27:10,870 --> 00:27:12,880 όπου έχουμε ορίσει συστοιχίες μεγέθους. 639 00:27:12,880 --> 00:27:15,010 >> Έτσι, υπάρχουν πράγματι δύο τρόπους που θα μπορούσε να λύσει αυτό. 640 00:27:15,010 --> 00:27:18,750 Θα μπορούσαμε να κατανέμει δυναμικά τον πίνακα, όχι δύσκολο κωδικοποίησης όπως έχω 641 00:27:18,750 --> 00:27:22,600 γίνεται εδώ, αλλά εκ νέου δηλώνοντας Αυτό, ακριβώς για να είναι σαφές, όπως 642 00:27:22,600 --> 00:27:23,830 κάτι σαν αυτό. 643 00:27:23,830 --> 00:27:29,040 Int * δίσκους, δεν αποφασίζουν από την ικανότητα ακόμη. 644 00:27:29,040 --> 00:27:35,460 Αλλά όταν Δηλώνω τη στοίβα αλλού στον κώδικά μου, θα μπορούσα τότε καλέστε malloc, 645 00:27:35,460 --> 00:27:38,250 να πάρει τη διεύθυνση του ένα μεγάλο κομμάτι της μνήμη, και θα μπορούσα να αναθέσει 646 00:27:38,250 --> 00:27:39,980 που απευθύνονται σε δίσκους. 647 00:27:39,980 --> 00:27:43,340 >> Και τότε, γιατί είναι απλά ένα κομμάτι της μνήμη, θα μπορούσε να συνεχίσει να χρησιμοποιεί πλατεία 648 00:27:43,340 --> 00:27:45,450 σημειογραφία βραχίονα με τον συνήθη τρόπο. 649 00:27:45,450 --> 00:27:49,020 Επειδή και πάλι, υπάρχει ένα είδος αυτό λειτουργικό ισοδύναμο των πινάκων και 650 00:27:49,020 --> 00:27:50,820 κομμάτια της μνήμης που έρχονται πίσω από την malloc. 651 00:27:50,820 --> 00:27:53,090 Μπορούμε να αντιμετωπίζουν το ένα ως το άλλο χρήση αριθμητικής δεικτών ή 652 00:27:53,090 --> 00:27:54,440 πλατεία συμβολισμός βραχίονα. 653 00:27:54,440 --> 00:27:55,660 Έτσι, αυτό είναι μια προσέγγιση. 654 00:27:55,660 --> 00:28:00,120 >> Αλλά πώς αλλιώς θα μπορούσαμε να εφαρμόσουν αυτό ίδια δομή δεδομένων, ενδεχομένως; 655 00:28:00,120 --> 00:28:00,280 Σωστά; 656 00:28:00,280 --> 00:28:04,530 Νιώθω σαν να λυθεί μόνο αυτό πρόβλημα, όπως πριν από μία εβδομάδα. 657 00:28:04,530 --> 00:28:08,860 Ποια ήταν η λύση στο πρόβλημα αυτό ότι Steven έτρεξε σε; 658 00:28:08,860 --> 00:28:10,370 Έτσι, συνδεδεμένες λίστες, δεξιά. 659 00:28:10,370 --> 00:28:13,410 >> Αν το πρόβλημα είναι ότι είμαστε ζωγραφική τους εαυτούς μας σε μια γωνία με τη διάθεση 660 00:28:13,410 --> 00:28:17,580 εκ των προτέρων, είναι πολύ μικρή μνήμη που τότε έχουν με κάποιο τρόπο να αντιμετωπίσει, καθώς, 661 00:28:17,580 --> 00:28:19,880 γιατί να μην αποφύγει ακριβώς αυτό ζήτημα συνολικά; 662 00:28:19,880 --> 00:28:26,170 Γιατί όχι μόνο δηλώνουν δίσκους να είναι μια δείκτης σε κόμβο, ergo μια συνδεδεμένη λίστα, 663 00:28:26,170 --> 00:28:30,740 και στη συνέχεια να διαθέσει απλά νέους κόμβους κάθε φορά Steven χρειάζεται για να χωρέσει ένα 664 00:28:30,740 --> 00:28:32,400 αριθμός μέσα στη δομή δεδομένων. 665 00:28:32,400 --> 00:28:34,200 >> Έτσι, η εικόνα θα πρέπει να αλλάξουν. 666 00:28:34,200 --> 00:28:38,220 Δεν πρόκειται να είναι τόσο καθαρό όσο και ως απλή, όπως ακριβώς μια σειρά από τρεις ints. 667 00:28:38,220 --> 00:28:42,970 Τώρα πρόκειται να είναι ένας δείκτης σε μια struct, struct και ότι πρόκειται να 668 00:28:42,970 --> 00:28:44,830 έχουν έναν int και ένα επόμενο δείκτη. 669 00:28:44,830 --> 00:28:47,670 Είναι πρόκειται να οδηγήσει μέσω του εν λόγω δείκτη σε μια άλλη τέτοια struct να 670 00:28:47,670 --> 00:28:48,600 άλλη τέτοια struct. 671 00:28:48,600 --> 00:28:50,560 Έτσι, η εικόνα θα ήταν πραγματικά πάρετε μια Μεσιέ λίγο. 672 00:28:50,560 --> 00:28:52,950 Και θα είχαμε βέλη δέσιμο όλα μαζί. 673 00:28:52,950 --> 00:28:55,280 >> Αλλά αυτό είναι εντάξει, σωστά, γιατί έχουμε δει πώς να το κάνουμε αυτό. 674 00:28:55,280 --> 00:28:58,180 Και τη στιγμή που θα πάρει άνετα εφαρμογή κάτι σαν ένα συνδεδεμένο 675 00:28:58,180 --> 00:29:01,450 λίστα, η οποία θα πρέπει να κάνετε αν επιλέξουν να εφαρμόσουν ένα πίνακα κατακερματισμού με 676 00:29:01,450 --> 00:29:05,120 separate chaining για p-set 6, μπορείτε να να το χρησιμοποιήσετε ως ένα δομικό στοιχείο, ή 677 00:29:05,120 --> 00:29:08,870 συστατικό, ή στο Scratch μιλήσει, ένα διαδικασία, κάτι που βάζετε εσείς, 678 00:29:08,870 --> 00:29:12,560 δημιουργήσει το δικό σας κομμάτι του παζλ που μπορείτε στη συνέχεια να ξαναχρησιμοποιήσετε. 679 00:29:12,560 --> 00:29:17,090 Έτσι, ανταλλαγές, αλλά και πιθανές λύσεις ότι έχουμε πραγματικά δει πριν. 680 00:29:17,090 --> 00:29:20,560 >> Έτσι, αρκετά συχνά, θα δείτε αυτό κάθε ένα ή δύο χρόνια, όταν η Apple απελευθερώνει 681 00:29:20,560 --> 00:29:23,060 κάτι νέο, και όλοι οι άνθρωποι τρελό line up έξω από το Apple 682 00:29:23,060 --> 00:29:27,050 κατάστημα για να αγοράσει οριακό τους αναβάθμιση σε hardware. 683 00:29:27,050 --> 00:29:30,420 Το λέω αυτό, δεν πειράζει, γιατί Είμαι ένας από εκείνους τους ανθρώπους. 684 00:29:30,420 --> 00:29:35,140 Οπότε τι είδους δομή δεδομένων μπορεί να αντιπροσωπεύουν την πραγματικότητα; 685 00:29:35,140 --> 00:29:36,980 >> Λοιπόν, ας το ονομάσουμε μια ουρά, μια γραμμή. 686 00:29:36,980 --> 00:29:40,270 Επομένως, οι Βρετανοί θα αποκαλούν συνήθως ένα ουρά έτσι, αυτό είναι ένα ωραίο όνομα. 687 00:29:40,270 --> 00:29:44,960 Και οι δύο λειτουργίες που μια ουρά υποστηρίζει ότι θα καλέσετε έναν enqueue 688 00:29:44,960 --> 00:29:48,900 λειτουργία και dequeue λειτουργία, οι οποίες είναι παρόμοιες σε 689 00:29:48,900 --> 00:29:50,120 πνεύμα για να πιέσει και να σκάσει. 690 00:29:50,120 --> 00:29:54,060 Είναι ακριβώς το είδος της διαφορετικής σύμβαση, τι είμαστε καλώντας αυτές. 691 00:29:54,060 --> 00:29:57,680 Αλλά για να enqueue σημαίνει κάτι για να προσθέσετε ή εισάγετε με τη δομή των δεδομένων. 692 00:29:57,680 --> 00:29:59,570 Για dequeue μέσα για να το αφαιρέσετε. 693 00:29:59,570 --> 00:30:05,170 Αλλά ενώ μια στοίβα ήταν δεδομένα LIFO δομή, μια ουρά είναι το πρώτο στην, 694 00:30:05,170 --> 00:30:06,740 first out δομή δεδομένων. 695 00:30:06,740 --> 00:30:10,050 >> Αν είστε το πρώτο πρόσωπο στη γραμμή, θα είναι το πρώτο πρόσωπο για να πάρει 696 00:30:10,050 --> 00:30:12,420 από τη γραμμή και να αγοράσει νέα συσκευή σας. 697 00:30:12,420 --> 00:30:18,070 Φανταστείτε πόσο αναστατωμένος αυτοί οι άνθρωποι θα είναι εάν η Apple που χρησιμοποιείται αντ 'αυτού μια στοίβα, για 698 00:30:18,070 --> 00:30:21,250 παράδειγμα, να εφαρμόσει το μάζεμα νέων παιχνιδιών σας. 699 00:30:21,250 --> 00:30:24,310 Έτσι, ουρές νόημα, σίγουρα, και μπορούμε να σκεφτούμε όλα τα είδη της 700 00:30:24,310 --> 00:30:27,480 εφαρμογές, κατά πάσα πιθανότητα, για τις ουρές, ειδικά όταν θέλετε δικαιοσύνη. 701 00:30:27,480 --> 00:30:30,040 Λοιπόν, πώς θα μπορούσαμε να εφαρμόσουν αυτές τις ως δομή δεδομένων; 702 00:30:30,040 --> 00:30:33,680 >> Λοιπόν, προτείνω ότι θα μπορούσαμε πρέπει να το κάνουμε με αυτόν τον τρόπο. 703 00:30:33,680 --> 00:30:35,225 Έτσι, Πάω να έχουν πλέον αριθμούς. 704 00:30:35,225 --> 00:30:38,190 Έτσι θα κρατήσουμε απλή και δεν αναγκαστικά μιλάμε από την άποψη της δίσκους. 705 00:30:38,190 --> 00:30:40,220 Απλά αριθμούς ότι οι άνθρωποι πάρει. 706 00:30:40,220 --> 00:30:43,760 Χωρητικότητα πρόκειται να, και πάλι, να καθορίσει το συνολικός αριθμός των ατόμων που μπορεί να είναι σε 707 00:30:43,760 --> 00:30:46,900 Αυτή η γραμμή, όπως τρεις ή όποια και αν είναι άλλη αξία. 708 00:30:46,900 --> 00:30:50,760 >> Αλλά προτείνω ότι θα πρέπει να παρακολουθείτε όχι μόνο από το μέγεθος της 709 00:30:50,760 --> 00:30:52,370 ουρά, πόσα πράγματα βρίσκονται σε αυτό. 710 00:30:52,370 --> 00:30:56,310 Έτσι, το μέγεθος είναι το σημερινό μέγεθος, η ικανότητα είναι το μέγιστο μέγεθος. 711 00:30:56,310 --> 00:30:58,540 Απλά και πάλι, η ονοματολογία κατά συνθήκη. 712 00:30:58,540 --> 00:31:03,680 Γιατί χρειάζομαι ένα επιπλέον int μέσα του μια ουρά για να παρακολουθείτε ποιος είναι 713 00:31:03,680 --> 00:31:05,365 μπροστά από τη γραμμή; 714 00:31:05,365 --> 00:31:07,930 715 00:31:07,930 --> 00:31:10,910 Γιατί πρέπει να το κάνουμε αυτό σε αυτή την περίπτωση; 716 00:31:10,910 --> 00:31:14,750 717 00:31:14,750 --> 00:31:16,190 >> Λοιπόν, πώς είναι αυτή η εικόνα πρόκειται να αλλάξει; 718 00:31:16,190 --> 00:31:19,280 Μπορώ ίσως επαναχρησιμοποίηση περισσότερα αυτής της εικόνας. 719 00:31:19,280 --> 00:31:21,480 Επιτρέψτε μου να πάμε μπροστά και να διαγράψει ό, τι είναι εδώ. 720 00:31:21,480 --> 00:31:24,580 Θα δώσει σε αυτό μια ελαφρώς διαφορετικό όνομα εδώ. 721 00:31:24,580 --> 00:31:28,930 Ας απαλλαγούμε από το 17, ας απαλλαγούμε του 9, ας απαλλαγούμε από το 3. 722 00:31:28,930 --> 00:31:30,410 Και ας προσθέσουμε ένα άλλο πράγμα. 723 00:31:30,410 --> 00:31:34,710 Προτείνω ότι πρέπει να παρακολουθείτε το μπροστινό μέρος της λίστας, το οποίο είναι ακριβώς 724 00:31:34,710 --> 00:31:35,570 πρόκειται να είναι ένα int, καθώς και. 725 00:31:35,570 --> 00:31:36,550 Και θα πάμε να το κρατήσετε απλό. 726 00:31:36,550 --> 00:31:37,740 Δεν συνδεδεμένη λίστα για τώρα. 727 00:31:37,740 --> 00:31:40,900 >> Θα παραδεχτώ ότι θα πάμε να χτύπημα μέχρι σε αυτό το όριο. 728 00:31:40,900 --> 00:31:43,720 Αλλά αυτό που θέλω να δω συμβεί αυτή τη φορά; 729 00:31:43,720 --> 00:31:47,240 Έτσι, ας υποθέσουμε ότι πάμε μπροστά και το πρώτο πρόσωπο που έρχεται επάνω στη γραμμή, και 730 00:31:47,240 --> 00:31:48,560 Είναι το νούμερο 9. 731 00:31:48,560 --> 00:31:49,680 Έχουμε μπάλες άγχος. 732 00:31:49,680 --> 00:31:51,330 Μπορώ να κλέψει, ας πούμε, δύο ή τρία άτομα; 733 00:31:51,330 --> 00:31:52,690 Ένα, δύο, τρία; 734 00:31:52,690 --> 00:31:53,120 Ανέβα. 735 00:31:53,120 --> 00:31:56,022 Δεξιά από το μέτωπο, γιατί θα κάνουμε αυτό γρήγορα. 736 00:31:56,022 --> 00:31:59,415 >> Κάθε ένας από εσάς είναι τώρα πρόκειται να είναι ένα αγόρι ανεμιστήρα στη γραμμή της Apple. 737 00:31:59,415 --> 00:32:03,970 738 00:32:03,970 --> 00:32:06,210 Δεν θα λαμβάνουν Apple το υλικό στο τέλος του παρόντος όμως. 739 00:32:06,210 --> 00:32:06,500 Εντάξει. 740 00:32:06,500 --> 00:32:09,430 Έτσι είστε αριθμό 9, είστε αριθμός 17, αριθμός 22. 741 00:32:09,430 --> 00:32:12,130 Αυτά είναι αυθαίρετοι αριθμοί, όπως φοιτητής ταυτότητες ή οτιδήποτε. 742 00:32:12,130 --> 00:32:14,550 Και ακριβώς σε μια στιγμή, ας αρχίσουμε να αρχίσουμε να προσθέτουμε πράγματα. 743 00:32:14,550 --> 00:32:16,000 Και θα τρέξει το πλοίο εδώ αυτή τη φορά. 744 00:32:16,000 --> 00:32:19,570 >> Έτσι, σε αυτή την περίπτωση, έχω προετοιμαστεί το μέτωπο να είναι - 745 00:32:19,570 --> 00:32:22,380 Εγώ πραγματικά δεν ενδιαφέρονται πραγματικά ποια είναι η μέτωπο είναι, επειδή το μέγεθος είναι μηδέν. 746 00:32:22,380 --> 00:32:24,480 Έτσι, αυτό ίσως και μόνο να είναι ένα ερωτηματικό. 747 00:32:24,480 --> 00:32:26,170 Αυτά είναι όλα τα ερωτηματικά. 748 00:32:26,170 --> 00:32:29,880 Έτσι τώρα θα αρχίσουμε να βλέπουμε πραγματικά κάποια ανθρώπους που παρατάσσουν στο κατάστημα. 749 00:32:29,880 --> 00:32:33,320 >> Έτσι, εάν ο αριθμός 9, είσαι ο πρώτος εκεί σε πέντε, να προχωρήσει και να παρατάξει, 750 00:32:33,320 --> 00:32:34,210 ή το βράδυ πριν. 751 00:32:34,210 --> 00:32:34,580 OK. 752 00:32:34,580 --> 00:32:35,940 Έτσι τώρα 9 είναι εδώ. 753 00:32:35,940 --> 00:32:37,940 Έτσι 9 είναι στο μπροστινό μέρος της λίστας. 754 00:32:37,940 --> 00:32:41,440 Έτσι, Πάω να πάει μπροστά και να ενημερώσετε το μέγεθος αυτού του ρεύματος δεδομένων 755 00:32:41,440 --> 00:32:44,740 δομή δεν είναι 0 πια, αλλά για να είναι 1. 756 00:32:44,740 --> 00:32:47,630 Πάω να βάλει 9 στο Μπροστά από τη λίστα. 757 00:32:47,630 --> 00:32:51,020 Επιτρέψτε μου να πάω μπροστά και να αλλάξετε την οθόνη ώστε να μπορούμε να δούμε το παρελθόν μας εδώ. 758 00:32:51,020 --> 00:32:53,220 >> Και τώρα τι θέλω να βάλει μπροστά; 759 00:32:53,220 --> 00:32:56,240 Πάω να παρακολουθείτε ότι η μπροστά από την ουρά τώρα 760 00:32:56,240 --> 00:32:58,570 είναι στη θέση 0. 761 00:32:58,570 --> 00:33:00,510 Γιατί αυτό είναι το επόμενο πρόκειται να συμβεί; 762 00:33:00,510 --> 00:33:03,000 Λοιπόν, ας υποθέσουμε τώρα enqueue 17, καθώς και. 763 00:33:03,000 --> 00:33:04,510 Έτσι hop στη γραμμή εκεί. 764 00:33:04,510 --> 00:33:07,060 Και πάλι, το είδος της πόρτας με την κατάστημα πρόκειται να είναι εδώ. 765 00:33:07,060 --> 00:33:08,700 Έτσι τώρα έχω προσθέσει 17. 766 00:33:08,700 --> 00:33:10,810 Και ακόμα κι αν αυτοί οι τύποι αποκλεισμού η οθόνη, αυτό είναι εντάξει, 767 00:33:10,810 --> 00:33:12,300 διότι μπορούμε να δούμε εδώ. 768 00:33:12,300 --> 00:33:12,910 Λυπάμαι. 769 00:33:12,910 --> 00:33:13,810 >> ΚΟΙΝΟ: Μπορούμε να προχωρήσουμε - 770 00:33:13,810 --> 00:33:14,660 >> DAVID MALAN: Όχι, αυτό είναι εντάξει. 771 00:33:14,660 --> 00:33:16,000 Είναι τεράστιο εκεί. 772 00:33:16,000 --> 00:33:18,580 Έτσι, 17 είναι τώρα στο εσωτερικό της ουράς. 773 00:33:18,580 --> 00:33:21,332 Θα πρέπει να ενημερώσετε το οποίο πεδίων τώρα όμως; 774 00:33:21,332 --> 00:33:23,210 Εντάξει, σίγουρα το μέγεθος. 775 00:33:23,210 --> 00:33:26,430 Και τι γίνεται μπροστά; 776 00:33:26,430 --> 00:33:27,040 Εντάξει, όχι. 777 00:33:27,040 --> 00:33:30,200 Μέτωπο δεν πρέπει να αλλάξει, διότι σε αντίθεση με μια στοίβα, έχουμε 778 00:33:30,200 --> 00:33:31,370 θέλουν να διατηρήσουν δικαιοσύνη. 779 00:33:31,370 --> 00:33:35,150 Έτσι, αν 9 ήρθε στην πρώτη, θέλουμε 9 να είναι η πρώτη έξω από τη γραμμή 780 00:33:35,150 --> 00:33:36,420 και μέσα στο κατάστημα. 781 00:33:36,420 --> 00:33:37,220 >> Στην πραγματικότητα, ας δούμε αυτό. 782 00:33:37,220 --> 00:33:42,235 Πριν εισάγουμε 22, ας να προχωρήσει και να dequeue 9. 783 00:33:42,235 --> 00:33:42,970 Ποιο είναι το όνομά σας και πάλι; 784 00:33:42,970 --> 00:33:43,680 >> Κοινό: Jake. 785 00:33:43,680 --> 00:33:45,440 >> DAVID MALAN: Jake πρόκειται να dequeued τώρα. 786 00:33:45,440 --> 00:33:48,050 Έτσι, μπορείτε να πάρετε για να περπατήσει στο κατάστημα. 787 00:33:48,050 --> 00:33:49,880 Και να υποκρινόμαστε ότι το κατάστημα είναι εκεί. 788 00:33:49,880 --> 00:33:51,970 Και τώρα τι χρειάζεται - DIT-dit-dit! 789 00:33:51,970 --> 00:33:53,400 Τι πρέπει να γίνει τώρα; 790 00:33:53,400 --> 00:33:54,490 Απόφαση του σχεδιασμού. 791 00:33:54,490 --> 00:33:56,825 Έτσι, δεν είναι μια κακή ένστικτο, αλλά - τι είναι το όνομά σας και πάλι; 792 00:33:56,825 --> 00:33:57,090 >> Κοινό: David. 793 00:33:57,090 --> 00:33:57,500 >> DAVID MALAN: David. 794 00:33:57,500 --> 00:33:58,810 Έτσι, αυτό που έκανε ο David κάνει; 795 00:33:58,810 --> 00:34:02,590 Προσπαθούσε να ταξινομήσετε από καθοριστούν τα δεδομένα δομή και τη μετακίνηση από τη θέση του 796 00:34:02,590 --> 00:34:04,100 στην προηγούμενη θέση του Τζέικ. 797 00:34:04,100 --> 00:34:06,740 Και αυτό είναι καλό, αν είμαστε πρόθυμοι να γίνει δεκτό ότι ως 798 00:34:06,740 --> 00:34:08,199 λεπτομέρεια εφαρμογής. 799 00:34:08,199 --> 00:34:11,100 Αλλά πρώτα, ας ενημερώσετε τα δεδομένα δομή πριν το κάνουμε αυτό. 800 00:34:11,100 --> 00:34:14,139 Επειδή δεν είμαι αρέσει η ιδέα για όλα οι άνθρωποι στροφή σε αυτή τη γραμμή. 801 00:34:14,139 --> 00:34:17,360 >> Δεν είναι μεγάλη υπόθεση αν ο David κάνει με ένα βήμα, αλλά και πάλι, σκεφτείτε ότι πίσω σε 802 00:34:17,360 --> 00:34:20,360 όταν είχαμε οκτώ εθελοντές σχετικά με την στάδιο και έχουμε κάνει σαν εισαγωγή 803 00:34:20,360 --> 00:34:22,600 ταξινόμησης, όπου θα έπρεπε να ξεκινήσει κινούνται όλοι γύρω. 804 00:34:22,600 --> 00:34:23,790 Αυτό πήρε ακριβά, έτσι δεν είναι; 805 00:34:23,790 --> 00:34:28,330 Αυτό με κάνει να μαζεύομαι για το μεγάλο Ο Ν, μεγάλη O Ν τετράγωνο και πάλι. 806 00:34:28,330 --> 00:34:30,650 Δεν είναι συναίσθημα όπως ένα ιδανικό αποτέλεσμα. 807 00:34:30,650 --> 00:34:32,080 >> Οπότε ας ενημερώσει μόνο αυτό. 808 00:34:32,080 --> 00:34:35,120 Έτσι, το μέγεθος της ουράς δεν είναι πλέον 2. 809 00:34:35,120 --> 00:34:37,090 Είναι τώρα απλά 1. 810 00:34:37,090 --> 00:34:40,360 Αλλά μπορώ να ενημερώσετε τώρα κάτι Δεν είχα ενημερώσει πριν, η 811 00:34:40,360 --> 00:34:41,130 Μπροστά από τη λίστα. 812 00:34:41,130 --> 00:34:45,420 Θα μπορούσα να πω, είναι ότι η θέση 1; 813 00:34:45,420 --> 00:34:49,770 Έτσι τώρα έχουμε αξία σκουπίδια εδώ, αξία σκουπίδια εδώ και David στο 814 00:34:49,770 --> 00:34:51,469 μέση αυτής της σκουπίδια. 815 00:34:51,469 --> 00:34:54,980 Όμως, η δομή δεδομένων είναι ακόμα άθικτο. 816 00:34:54,980 --> 00:34:58,540 >> Και στην πραγματικότητα, δεν χρειάζεται καν να αλλάξετε πρώην νούμερο Τζέικ 817 00:34:58,540 --> 00:35:00,460 9, διότι ποιος νοιάζεται. 818 00:35:00,460 --> 00:35:04,470 Έχω αρκετές πληροφορίες τώρα στο μέγεθος που ξέρω ότι υπάρχει ένα άτομο 819 00:35:04,470 --> 00:35:05,030 Αυτό ουρά. 820 00:35:05,030 --> 00:35:08,340 Και ξέρω ότι το εν λόγω πρόσωπο είναι στη θέση 1 και όχι 0. 821 00:35:08,340 --> 00:35:09,760 Δεν είμαι καταμέτρηση. 822 00:35:09,760 --> 00:35:11,300 So 1, καθώς και. 823 00:35:11,300 --> 00:35:13,410 Έτσι, η δομή των δεδομένων είναι ακόμα εντάξει. 824 00:35:13,410 --> 00:35:14,330 >> Λοιπόν, τι θα συμβεί στη συνέχεια; 825 00:35:14,330 --> 00:35:15,010 Enqueue Ας - 826 00:35:15,010 --> 00:35:15,370 ποιο είναι το όνομά σου; 827 00:35:15,370 --> 00:35:16,160 >> Κοινό: Κάλεν. 828 00:35:16,160 --> 00:35:16,580 >> DAVID MALAN: Κάλεν. 829 00:35:16,580 --> 00:35:20,770 Ας enqueue ένα Κάλεν, και 22 είναι τώρα στην ουρά. 830 00:35:20,770 --> 00:35:22,300 Και τώρα τι πρέπει να αλλάξει εδώ; 831 00:35:22,300 --> 00:35:24,380 Μέτωπο δεν πρόκειται να αλλάξει, προφανώς. 832 00:35:24,380 --> 00:35:27,160 Μέγεθος πρόκειται να αλλάξει για να είναι ξανά 2. 833 00:35:27,160 --> 00:35:31,590 Και 22 τελειώνει εδώ, 9 εξακολουθεί να είναι παρούσα, αλλά είναι ουσιαστικά ένα 834 00:35:31,590 --> 00:35:32,600 αξίας σκουπίδια τώρα. 835 00:35:32,600 --> 00:35:35,910 Είναι απλά ένα απομεινάρι του παρελθόντος Τζέικ. 836 00:35:35,910 --> 00:35:39,200 >> Και τώρα τι θα συμβεί αν I dequeue David; 837 00:35:39,200 --> 00:35:41,560 Μία τελευταία λειτουργία, dequeue David. 838 00:35:41,560 --> 00:35:46,070 Θα μπορούσε να μετατοπίσει, αλλά προτείνω ας κάνει ό, λίγη δουλειά όσο το δυνατόν. 839 00:35:46,070 --> 00:35:50,280 Τώρα δομή δεδομένων μου πηγαίνει πίσω σε μέγεθος 2 - 1. 840 00:35:50,280 --> 00:35:53,730 Αλλά το μπροστινό μέρος της ουράς γίνεται τώρα 2. 841 00:35:53,730 --> 00:35:56,640 Δεν χρειάζεται να αλλάξετε αυτούς τους αριθμούς ακριβώς ακόμα, επειδή είναι 842 00:35:56,640 --> 00:35:58,230 δίκαιων αξιών σκουπίδια. 843 00:35:58,230 --> 00:35:59,720 >> Τώρα, όμως, τι θα συμβεί; 844 00:35:59,720 --> 00:36:03,280 Ας υποθέσουμε ότι εγώ enqueue, 26; 845 00:36:03,280 --> 00:36:05,890 Νιώθω σαν να ανήκω εδώ. 846 00:36:05,890 --> 00:36:06,890 Έτσι είμαι που enqueued. 847 00:36:06,890 --> 00:36:08,760 Γι 'αυτό το είδος ανήκουν εδώ. 848 00:36:08,760 --> 00:36:11,300 Και ακόμα κι αν δεν είναι αρκετά εκτιμώ αυτό οπτικά στη σκηνή, 849 00:36:11,300 --> 00:36:15,075 επειδή έχουμε αρκετό χώρο, θα πρέπει να δεν πρέπει να στέκεται εδώ, γιατί; 850 00:36:15,075 --> 00:36:16,290 >> ΚΟΙΝΟ: Είσαι εκτός ορίων. 851 00:36:16,290 --> 00:36:16,370 >> DAVID MALAN: Σωστά. 852 00:36:16,370 --> 00:36:16,940 Είμαι έξω από τα όρια. 853 00:36:16,940 --> 00:36:19,330 Έχω δείκτη πέρα ​​από την όρια αυτής της συστοιχίας. 854 00:36:19,330 --> 00:36:23,420 Πραγματικά θα πρέπει να είναι σε μία από τις τρεις πιθανές τοποθεσίες. 855 00:36:23,420 --> 00:36:25,150 Τώρα, πού είναι πιο φυσικό να πάτε; 856 00:36:25,150 --> 00:36:27,760 Προτείνω να μόχλευση μια εβδομάδα ένα τέχνασμα. 857 00:36:27,760 --> 00:36:30,150 Ο χειριστής mod, το ποσοστό. 858 00:36:30,150 --> 00:36:36,850 Επειδή είμαι τεχνικά στέκεται σε θέση 3, αλλά να κάνω 3 ικανότητα mod, 859 00:36:36,850 --> 00:36:40,250 έτσι 3, ένα σύμβολο τοις εκατό, 3 - 860 00:36:40,250 --> 00:36:40,970 χωρητικότητα είναι 3. 861 00:36:40,970 --> 00:36:41,720 Τι είναι αυτό; 862 00:36:41,720 --> 00:36:43,700 Ποιο είναι το υπόλοιπο όταν διαιρείτε το 3 επί 3; 863 00:36:43,700 --> 00:36:44,070 0. 864 00:36:44,070 --> 00:36:48,140 >> Έτσι που με βάζει ήταν Jake ήταν, το οποίο είναι πραγματικά καλό. 865 00:36:48,140 --> 00:36:50,370 Έτσι, τώρα είναι η υλοποίηση από αυτό το πράγμα πρόκειται να 866 00:36:50,370 --> 00:36:51,250 να είναι ένα κομμάτι από ένα πονοκέφαλο. 867 00:36:51,250 --> 00:36:53,740 Είναι πραγματικά μία μόνο γραμμή κεφαλαλγίας, του κώδικα. 868 00:36:53,740 --> 00:36:56,580 Αλλά τουλάχιστον τώρα υπάρχει σκουπίδια αξία εδώ, αλλά υπάρχουν δύο 869 00:36:56,580 --> 00:36:57,910 νόμιμο ints εδώ. 870 00:36:57,910 --> 00:37:04,160 Και εγώ ισχυρίζομαι ότι τώρα έχουμε κάνει ακριβώς ό, τι πρέπει να κάνουμε, εφόσον 871 00:37:04,160 --> 00:37:08,600 να αλλάξουμε ό, τι Τζέικ αξία ήταν να είναι 26. 872 00:37:08,600 --> 00:37:12,110 >> Τώρα έχουμε αρκετές πληροφορίες ακόμα να διατηρήσει την ακεραιότητα 873 00:37:12,110 --> 00:37:13,060 αυτής της δομής δεδομένων. 874 00:37:13,060 --> 00:37:17,160 Είμαστε ακόμα είδος από την τύχη όταν θέλετε να εισαγάγετε τέσσερα ή περισσότερα συνολικά 875 00:37:17,160 --> 00:37:20,740 στοιχεία, αλλά μπορώ τουλάχιστον να κάνει αρκετά αποδοτική χρήση αυτής της σταθερής 876 00:37:20,740 --> 00:37:21,740 χρόνο, στην πραγματικότητα. 877 00:37:21,740 --> 00:37:27,150 Δεν χρειάζεται να ανησυχείτε για τη μετατόπιση ο καθένας, όπως κλίση του Δαβίδ ήταν. 878 00:37:27,150 --> 00:37:30,816 >> Οποιεσδήποτε ερωτήσεις σχετικά με στοίβες, ή αυτή η ουρά; 879 00:37:30,816 --> 00:37:32,184 >> ΚΟΙΝΟ: Είναι ο λόγος θα πρέπει να έχετε το μέγεθος, έτσι ώστε να γνωρίζετε 880 00:37:32,184 --> 00:37:34,010 Πού να έχει ένα πρόσωπο; 881 00:37:34,010 --> 00:37:34,770 >> DAVID MALAN: Ακριβώς. 882 00:37:34,770 --> 00:37:38,230 Θα πρέπει να γνωρίζουν το μέγεθος του πίνακα γιατί πρέπει να γνωρίζουμε ακριβώς πώς 883 00:37:38,230 --> 00:37:41,940 πολλές από αυτές τις αξίες είναι νόμιμες, και έτσι ώστε να μπορώ να βρω πού να τεθεί 884 00:37:41,940 --> 00:37:42,800 το επόμενο πρόσωπο. 885 00:37:42,800 --> 00:37:43,300 Ακριβώς. 886 00:37:43,300 --> 00:37:44,580 Το μέγεθος είναι - 887 00:37:44,580 --> 00:37:46,360 στην πραγματικότητα, δεν είχαμε ενημερώσει αυτό ακόμα. 888 00:37:46,360 --> 00:37:48,380 Εγώ ο ίδιος πρόσθεσε σε 26. 889 00:37:48,380 --> 00:37:51,760 Το μέγεθος είναι τώρα, όχι 1, αλλά 2. 890 00:37:51,760 --> 00:37:57,780 Έτσι τώρα αυτό βοηθά πράγματι να βρω το επικεφαλής της λίστας, η οποία δεν είναι 0, δεν 891 00:37:57,780 --> 00:37:59,250 1, αλλά είναι 2. 892 00:37:59,250 --> 00:38:01,665 Το μπροστινό μέρος του καταλόγου είναι πράγματι αριθμό 22. 893 00:38:01,665 --> 00:38:05,120 Επειδή ήρθε στην πρώτη, οπότε θα πρέπει να να επιτραπεί η είσοδος στο κατάστημα πριν από μένα, 894 00:38:05,120 --> 00:38:08,780 παρόλο που οπτικά Στέκομαι πλησιέστερα στο κατάστημα. 895 00:38:08,780 --> 00:38:09,220 >> Εντάξει; 896 00:38:09,220 --> 00:38:12,410 Ένα χειροκρότημα για αυτά τα παιδιά και εμείς θα τους αφήσουμε έξω από εκεί. 897 00:38:12,410 --> 00:38:17,090 >> [Χειροκρότημα] 898 00:38:17,090 --> 00:38:18,150 >> DAVID MALAN: Θα μπορούσα να αφήσει κρατάτε το δίσκο. 899 00:38:18,150 --> 00:38:20,760 Θα μπορούσαμε να δούμε τι θα συμβεί αν θέλετε, αλλά ίσως όχι. 900 00:38:20,760 --> 00:38:21,590 Εντάξει. 901 00:38:21,590 --> 00:38:25,380 Έτσι, αυτό που κάνει τώρα που μας άφησε; 902 00:38:25,380 --> 00:38:28,900 Λοιπόν, επιτρέψτε μου να προτείνω να υπάρχει μια μερικές άλλες δομές δεδομένων θα μπορούσαμε 903 00:38:28,900 --> 00:38:33,810 ξεκινήσετε την προσθήκη στην εργαλειοθήκη μας, που θα πραγματικά να είναι αρκετά, είναι αρκετά σχετική με 904 00:38:33,810 --> 00:38:35,270 έχουμε βουτήξει πράγματα web. 905 00:38:35,270 --> 00:38:38,150 Το οποίο και πάλι, έχει κάποιο είδος της σύνδεσης στα δένδρα, με τη μορφή 906 00:38:38,150 --> 00:38:40,550 κάτι που ονομάζεται DOM, το έγγραφο μοντέλο αντικειμένου. 907 00:38:40,550 --> 00:38:42,370 Αλλά θα δούμε περισσότερα από ότι πριν από καιρό. 908 00:38:42,370 --> 00:38:46,260 >> Επιτρέψτε μου να προτείνω definitionally ότι καλέστε δέντρο τώρα τι ίσως γνωρίζετε, όπως 909 00:38:46,260 --> 00:38:48,820 περισσότερο από ένα οικογενειακό δέντρο, όπου μπορείτε έχουν κάποια πρόγονος Κατά την 910 00:38:48,820 --> 00:38:49,790 ρίζες του δέντρου. 911 00:38:49,790 --> 00:38:54,480 Μια πατριαρχική ή γυναίκα αρχηγός φυλής στην η ίδια η κορυφή του δέντρου. 912 00:38:54,480 --> 00:38:56,700 Χωρίς τον σύζυγό τους, σε αυτή την περίπτωση. 913 00:38:56,700 --> 00:39:00,940 Αλλά τώρα έχουμε ό, τι θα καλέσουμε τα παιδιά, τα οποία είναι κόμβοι που κρέμονται 914 00:39:00,940 --> 00:39:05,480 από το αριστερό παιδί ή το δικαίωμα του παιδιού, βέλη όπως απεικονίζεται εδώ. 915 00:39:05,480 --> 00:39:10,490 >> Με άλλα λόγια, σε μια δομή δεδομένων δέντρου στον υπολογιστή, ένα δέντρο έχει μηδενικό 916 00:39:10,490 --> 00:39:11,480 ή περισσότερους κόμβους. 917 00:39:11,480 --> 00:39:13,500 Αν έχει τουλάχιστον έναν κόμβο, Αυτό ονομάζεται η ρίζα. 918 00:39:13,500 --> 00:39:15,700 Είναι τα πράγματα οπτικά ότι εφιστούμε στην κορυφή. 919 00:39:15,700 --> 00:39:20,280 Και αυτός ο κόμβος, όπως και κάθε άλλο κόμβο, μπορεί να έχει μηδέν, ένα, ή δύο, ή τρία, 920 00:39:20,280 --> 00:39:23,600 ή και περισσότερα παιδιά, το δομή δεδομένων υποστηρίζει. 921 00:39:23,600 --> 00:39:29,150 Σε αυτή την περίπτωση, η ρίζα, η αποθήκευση αξίας ενός, έχει δύο παιδιά, 2 και 3, 922 00:39:29,150 --> 00:39:33,020 οπότε καλούμε γενικά 2 το αριστερό παιδί και 3, το δικαίωμα του παιδιού. 923 00:39:33,020 --> 00:39:36,940 >> Και στη συνέχεια, όταν θα πιάσουμε 5, 6, και 7, 6 θα μπορούσε να ονομαστεί το μεσαίο παιδί. 924 00:39:36,940 --> 00:39:38,940 Αν έχετε τέσσερα παιδιά, γίνεται σύγχυση. 925 00:39:38,940 --> 00:39:42,260 Γι 'αυτό σταματήστε να χρησιμοποιείτε αυτό το είδος της συντόμευσης προφορικά. 926 00:39:42,260 --> 00:39:44,580 Αλλά αυτό είναι πραγματικά ακριβώς ένα οικογενειακό δέντρο. 927 00:39:44,580 --> 00:39:48,880 Και τα φύλλα εδώ είναι οι κόμβοι που οι ίδιοι δεν έχουν παιδιά. 928 00:39:48,880 --> 00:39:52,540 Θα κρέμονται από το κάτω μέρος του δέντρου. 929 00:39:52,540 --> 00:39:56,940 >> Λοιπόν, πώς θα μπορούσαμε να εφαρμόσουν ένα δέντρο που έχει μόνο δύο παιδιά μέγιστη; 930 00:39:56,940 --> 00:39:58,410 Θα το ονομάσουμε ένα δυαδικό δέντρο. 931 00:39:58,410 --> 00:40:00,960 Bi που σημαίνει και πάλι δύο, σε αυτό το περίπτωση, όπως και με δυαδικό. 932 00:40:00,960 --> 00:40:04,830 Και έτσι μπορεί να έχει μηδέν, ένα, ή δύο παιδιά μέγιστα. 933 00:40:04,830 --> 00:40:08,650 >> Θα σας προτείνω να εφαρμόσουμε τον κόμβο για την εν λόγω δομή, με έναν int n, 934 00:40:08,650 --> 00:40:11,910 και στη συνέχεια δύο δείκτες, ένα ονομάζεται αριστερά, το ένα ονομάζεται δεξιά. 935 00:40:11,910 --> 00:40:14,830 Αλλά αυτά είναι μόνο ωραία αυθαίρετες συμβάσεις. 936 00:40:14,830 --> 00:40:18,170 Και τι είναι ωραίο τώρα, ειδικά αν είδος αγωνίστηκε εννοιολογικά με 937 00:40:18,170 --> 00:40:21,300 αναδρομή, ή να σκεφτεί ότι δεν ήταν πραγματικά μια λύση σε τίποτα, 938 00:40:21,300 --> 00:40:23,120 ειδικά αν μπορούσατε ξεμείνει από μνήμη. 939 00:40:23,120 --> 00:40:26,600 Τώρα που μιλάμε για τα δεδομένα δομές και αλγορίθμους που επιτρέπουν 940 00:40:26,600 --> 00:40:31,030 μας να διασχίσει και να τα διαχειριστούμε, Αποδεικνύεται ότι αναδρομή έρχεται πίσω στο 941 00:40:31,030 --> 00:40:34,240 μια πολύ πιο συναρπαστικό αν όχι όμορφο τρόπο. 942 00:40:34,240 --> 00:40:38,670 >> Έτσι, αυτό που προτείνω είναι η εφαρμογή από μια λειτουργία αναζήτησης. 943 00:40:38,670 --> 00:40:39,870 Λαμβάνοντας υπόψη δύο εισόδους - 944 00:40:39,870 --> 00:40:41,570 οπότε σκεφτείτε το σαν ένα μαύρο κουτί. 945 00:40:41,570 --> 00:40:46,560 Δεδομένων δύο εισόδους, n, ένας int, και ένα δείκτης σε ένα δέντρο, ένα δείκτη σε μια 946 00:40:46,560 --> 00:40:50,020 κόμβου, ή πραγματικά η ρίζα ενός δέντρου, I ισχυρίζονται ότι αυτή η λειτουργία μπορεί να επιστρέψει 947 00:40:50,020 --> 00:40:53,530 αληθής ή ψευδής, η αξία n είναι στο εσωτερικό αυτού του δέντρου. 948 00:40:53,530 --> 00:40:55,210 >> Τι υπάρχει μέσα σε αυτό το μαύρο κουτί; 949 00:40:55,210 --> 00:40:57,440 Λοιπόν, τέσσερα υποκαταστήματα. 950 00:40:57,440 --> 00:40:58,385 Η πρώτη απλά ελέγχει. 951 00:40:58,385 --> 00:41:00,490 Αν το δέντρο είναι null, απλά επιστρέφει false. 952 00:41:00,490 --> 00:41:04,580 Αν δεν υπάρχει κόμβος, δεν υπάρχει n, δεν υπάρχει αριθμός, απλά επιστρέφει false. 953 00:41:04,580 --> 00:41:12,330 Αν όμως, n, η αξία που ψάχνετε για, είναι μικρότερο από δέντρο βέλος n, και 954 00:41:12,330 --> 00:41:15,180 ακριβώς για να είναι σαφές, τι σημαίνει αυτό όταν Γράφω δέντρου και στη συνέχεια το βέλος 955 00:41:15,180 --> 00:41:18,150 σημειογραφία, n; 956 00:41:18,150 --> 00:41:18,690 Ακριβώς. 957 00:41:18,690 --> 00:41:21,970 Αυτό σημαίνει ότι dereference δείκτη που ονομάζεται δέντρο. 958 00:41:21,970 --> 00:41:26,750 Πήγαινε εκεί, και στη συνέχεια να πάρει μέσα από αυτό κόμβο και να πάρει το πεδίο που ονομάζεται n. 959 00:41:26,750 --> 00:41:30,810 Και στη συνέχεια συγκρίνει την πραγματική n που ήταν πέρασε στην Αναζήτηση εναντίον της. 960 00:41:30,810 --> 00:41:35,390 >> Έτσι, αν το η είναι μικρότερο από ό, τι, η αξία n στον κόμβο ίδιο το δέντρο, καλά, 961 00:41:35,390 --> 00:41:36,720 Τι σημαίνει αυτό; 962 00:41:36,720 --> 00:41:40,690 Αυτό δεν σημαίνει τίποτα με την πρώτη ματιά. 963 00:41:40,690 --> 00:41:40,900 Σωστά; 964 00:41:40,900 --> 00:41:45,560 Ακριβώς όπως όταν έχετε μια σειρά από αξίες, ίσως θα θέλατε να εφαρμόσει δυαδική 965 00:41:45,560 --> 00:41:48,290 αναζήτηση ως μια μορφή του διαίρει και βασίλευε. 966 00:41:48,290 --> 00:41:51,790 Αλλά τι υπόθεση δεν πρέπει να κάνουμε για την δυαδική αναζήτηση για να εργαστούν σε όλα 967 00:41:51,790 --> 00:41:54,510 στον τηλεφωνικό κατάλογο και Νωρίτερα παραδείγματα; 968 00:41:54,510 --> 00:41:55,530 >> Πώς να διευθετηθεί. 969 00:41:55,530 --> 00:41:59,490 Οπότε ας βελτιώσετε τον ορισμό του δέντρου εδώ δεν είναι μόνο ένα δέντρο, το οποίο μπορεί 970 00:41:59,490 --> 00:42:00,880 έχει οποιοδήποτε αριθμό των παιδιών. 971 00:42:00,880 --> 00:42:04,700 Όχι μόνο ένα δυαδικό δέντρο, το οποίο μπορεί να έχει 0, 1, ή 2 μέγιστα. 972 00:42:04,700 --> 00:42:09,700 Αλλά ως ένα δυαδικό δένδρο αναζήτησης, ή BST, το οποίο είναι μόνο ένα φανταχτερό τρόπο λέγοντας μια 973 00:42:09,700 --> 00:42:15,430 δυαδικό δέντρο τέτοια ώστε κάθε κόμβου αριστερό παιδί, αν υπάρχει, είναι 974 00:42:15,430 --> 00:42:16,830 λιγότερο από τον κόμβο. 975 00:42:16,830 --> 00:42:20,170 Και το δικαίωμα του παιδιού του κάθε κόμβου, εάν υπάρχει, είναι μεγαλύτερο 976 00:42:20,170 --> 00:42:21,740 από τον ίδιο κόμβο. 977 00:42:21,740 --> 00:42:25,200 >> Έτσι, με άλλα λόγια, αν ήταν να επιστήσει το δέντρο έξω, όλοι οι αριθμοί είναι 978 00:42:25,200 --> 00:42:30,620 προσεκτικά με βάση σαν αυτό, έτσι ώστε αν έχετε 55 ως τη ρίζα, 33 μπορεί να πάει 979 00:42:30,620 --> 00:42:33,090 προς τα αριστερά του, διότι είναι λιγότερο από 55. 980 00:42:33,090 --> 00:42:36,430 77 μπορεί να πάει προς τα δεξιά της, διότι είναι μεγαλύτερη από 55. 981 00:42:36,430 --> 00:42:40,750 Αλλά τώρα παρατηρήσετε, τον ίδιο ορισμό, είναι ένα αναδρομικό ορισμό προφορικά, 982 00:42:40,750 --> 00:42:42,600 πρέπει να ισχύει για 33. 983 00:42:42,600 --> 00:42:47,610 Αριστερό παιδί 33 πρέπει να είναι μικρότερη από ό, τι, και το δικαίωμα του παιδιού 33, το 44, πρέπει να 984 00:42:47,610 --> 00:42:48,580 μεγαλύτερο από αυτό. 985 00:42:48,580 --> 00:42:51,670 >> Έτσι, αυτό είναι ένα δυαδικό δένδρο αναζήτησης, και Προτείνω, χρησιμοποιώντας ένα μικρό κομμάτι της 986 00:42:51,670 --> 00:42:53,910 αναδρομή, μπορούμε να βρούμε τώρα n. 987 00:42:53,910 --> 00:42:59,160 Έτσι, αν η είναι μικρότερη από την τιμή Ν που είναι τρέχοντα κόμβο, Πάω να πάει 988 00:42:59,160 --> 00:43:04,090 μπροστά και punt, να το πω έτσι, και μόλις επιστρέψετε ό, τι η απάντηση είναι 989 00:43:04,090 --> 00:43:08,470 ψάχνουν για ν για την Άφησε το παιδί δέντρου. 990 00:43:08,470 --> 00:43:11,370 Παρατηρήστε και πάλι, αυτή η λειτουργία μόνο αναμένει έναν κόμβο αστέρι, μια 991 00:43:11,370 --> 00:43:12,780 δείκτη σε έναν κόμβο. 992 00:43:12,780 --> 00:43:17,360 Έτσι, σίγουρα δεν μπορώ απλά να κάνουμε δέντρο βέλος αριστερά, η οποία θα οδηγήσει 993 00:43:17,360 --> 00:43:18,400 μου σε άλλο κόμβο. 994 00:43:18,400 --> 00:43:19,480 Αλλά τι είναι ο κόμβος; 995 00:43:19,480 --> 00:43:22,820 >> Λοιπόν, σύμφωνα με τη δήλωση αυτή, αριστερά είναι μόνο ένας δείκτης, έτσι ώστε μόνο 996 00:43:22,820 --> 00:43:27,090 σημαίνει ότι περνάω με τη λειτουργία αναζήτησης ένα διαφορετικό δείκτη, δηλαδή 997 00:43:27,090 --> 00:43:30,750 η μία που αντιπροσωπεύει δέντρο αριστερό του παιδιού μου. 998 00:43:30,750 --> 00:43:36,040 Έτσι, σε αυτή την περίπτωση, ο δείκτης 33, εάν αυτή είναι η είσοδος δείγμα μας Εν τω μεταξύ, αν 999 00:43:36,040 --> 00:43:40,740 η είναι μεγαλύτερη από την ν αξία κατά την τρέχοντα κόμβο στο δέντρο, τότε είμαι 1000 00:43:40,740 --> 00:43:43,370 πρόκειται να πάει μπροστά και να punt στο άλλο κατεύθυνση και να πω, δεν το κάνω 1001 00:43:43,370 --> 00:43:47,280 γνωρίζει εάν αυτή η τιμή είναι στο δέντρο, αλλά ξέρω αν είναι, είναι κάτω μου 1002 00:43:47,280 --> 00:43:49,090 δεξιού κλάδου, να το πω έτσι. 1003 00:43:49,090 --> 00:43:53,120 Έτσι, επιτρέψτε μου τηλεφωνήσει αναδρομικά αναζήτηση, περνώντας ένα n και πάλι, αλλά περνώντας ένα 1004 00:43:53,120 --> 00:43:54,580 δείκτη προς τα δεξιά παιδί μου. 1005 00:43:54,580 --> 00:44:00,020 >> Με άλλα λόγια, αν είμαι σήμερα σε 55 και ψάχνω για το 99, ξέρω ότι το 99 1006 00:44:00,020 --> 00:44:04,270 είναι μεγαλύτερη από 55, έτσι ακριβώς όπως εγώ έσκισε οι εβδομάδες τηλεφωνικό πριν και 1007 00:44:04,270 --> 00:44:07,140 πήγε δεξιά, ομοίως είμαστε πρόκειται να πάει εδώ. 1008 00:44:07,140 --> 00:44:11,960 Και δεν ξέρω αν είναι στα δεξιά μου παιδί, και δεν είναι, 77 είναι εκεί, αλλά 1009 00:44:11,960 --> 00:44:13,210 Ξέρω ότι είναι προς αυτή την κατεύθυνση. 1010 00:44:13,210 --> 00:44:18,770 Καλώ λοιπόν αναζήτηση για το δικαίωμα του παιδιού μου, 77, και αφήστε το σχήμα αναζήτησης έξω από 1011 00:44:18,770 --> 00:44:24,950 εκεί αν 99 σε αυτό το αυθαίρετο παράδειγμα είναι στην πραγματικότητα εκεί. 1012 00:44:24,950 --> 00:44:26,900 >> Αλλιώς, ποια είναι η τελική υπόθεση; 1013 00:44:26,900 --> 00:44:28,620 Αν δέντρο είναι null είναι μία περίπτωση. 1014 00:44:28,620 --> 00:44:31,890 Εάν n είναι μικρότερη από την τρέχουσα κόμβου τιμή είναι μια άλλη περίπτωση. 1015 00:44:31,890 --> 00:44:35,120 Εάν το η είναι μεγαλύτερο από την τρέχουσα αξία κόμβου είναι μια τρίτη περίπτωση. 1016 00:44:35,120 --> 00:44:38,250 Ποια είναι η τέταρτη και τελευταία περίπτωση; 1017 00:44:38,250 --> 00:44:39,480 Νομίζω ότι είμαστε από τις περιπτώσεις, έτσι δεν είναι; 1018 00:44:39,480 --> 00:44:44,690 Θα πρέπει να είναι ότι η είναι στην τρέχοντα κόμβο που είμαι. 1019 00:44:44,690 --> 00:44:49,640 >> Έτσι, αν ψάχνω για 55 σε αυτό το σημείο στην ιστορία, αυτός ο κλάδος της 1020 00:44:49,640 --> 00:44:51,780 δέντρο θα επιστρέψει true. 1021 00:44:51,780 --> 00:44:55,380 Έτσι, αυτό που είναι ενδιαφέρον εδώ είναι ότι εμείς στην πραγματικότητα, σε αντίθεση με το παρελθόν εβδομάδες, έχουμε το είδος 1022 00:44:55,380 --> 00:44:56,740 των δύο περιπτώσεων βάσης. 1023 00:44:56,740 --> 00:44:58,300 Και δεν χρειάζεται να είναι όλα στην κορυφή. 1024 00:44:58,300 --> 00:45:01,390 Η κορυφή είναι μια βασική περίπτωση, διότι αν η δέντρου είναι null, δεν υπάρχει τίποτα να κάνω. 1025 00:45:01,390 --> 00:45:03,410 Μόλις επιστρέψει ένα σκληρό κωδικοποιημένο τιμή ΨΕΥΔΕΣ. 1026 00:45:03,410 --> 00:45:07,400 >> Ο κλάδος κάτω μέρος είναι το είδος του default, οπότε αν έχουμε ελέγχονται για 1027 00:45:07,400 --> 00:45:11,550 null, έχουμε ελεγχθεί εάν πρέπει να αριστερά, αλλά δεν θα πρέπει να είναι, έχουμε 1028 00:45:11,550 --> 00:45:14,640 ελεγχθεί αν θα πρέπει να είναι σωστό, αλλά δεν πρέπει να είναι, προφανώς πρέπει να είναι 1029 00:45:14,640 --> 00:45:15,870 ακριβώς εδώ που είμαστε. 1030 00:45:15,870 --> 00:45:16,780 Αυτό είναι μια βασική περίπτωση. 1031 00:45:16,780 --> 00:45:19,920 Έτσι, υπάρχουν δύο αναδρομικές περιπτώσεις στριμώχνεται εκεί στη μέση. 1032 00:45:19,920 --> 00:45:21,630 Αλλά θα μπορούσα να είχα γράψει Αυτό σε οποιαδήποτε σειρά. 1033 00:45:21,630 --> 00:45:24,520 Απλά σκέφτηκα ότι το είδος αισθάνθηκε φυσικό να εξακριβωθεί ενός πιθανού σφάλματος, 1034 00:45:24,520 --> 00:45:28,340 στη συνέχεια, ελέγξτε αριστερά, στη συνέχεια, ελέγξτε το δικαίωμα, στη συνέχεια, υποθέσουμε ότι είστε στον κόμβο 1035 00:45:28,340 --> 00:45:30,630 είστε πραγματικά ψάχνει για. 1036 00:45:30,630 --> 00:45:36,240 >> Επομένως, γιατί θα μπορούσε αυτό να είναι χρήσιμο; 1037 00:45:36,240 --> 00:45:37,910 Έτσι αποδεικνύεται - 1038 00:45:37,910 --> 00:45:42,110 και επιτρέψτε μου να μεταβείτε σε ένα teaser εδώ που είναι στο διαδίκτυο. 1039 00:45:42,110 --> 00:45:44,920 Εμείς πάμε για να αρχίσουν να χρησιμοποιούν όχι γλώσσα προγραμματισμού στην αρχή, αλλά μια 1040 00:45:44,920 --> 00:45:46,030 γλώσσα σήμανσης. 1041 00:45:46,030 --> 00:45:48,740 Μια γλώσσα σήμανσης είναι ένα που είναι παρόμοια στο πνεύμα με τον προγραμματισμό 1042 00:45:48,740 --> 00:45:51,715 γλώσσας, αλλά δεν σας δίνουν την δυνατότητα να εκφράσουν τον εαυτό σας λογικά. 1043 00:45:51,715 --> 00:45:55,070 Θα σας δίνει μόνο τη δυνατότητα να εκφραστείτε δομικά. 1044 00:45:55,070 --> 00:45:57,960 >> Πού θέλετε να βάλετε κάτι στη σελίδα, η ιστοσελίδα; 1045 00:45:57,960 --> 00:45:59,200 Τι χρώμα θέλετε να το κάνετε; 1046 00:45:59,200 --> 00:46:00,950 Τι μέγεθος γραμματοσειράς θέλετε να το κάνετε; 1047 00:46:00,950 --> 00:46:02,970 Λέξεις Αυτό που κάνετε στην πραγματικότητα θέλουν στην ιστοσελίδα; 1048 00:46:02,970 --> 00:46:04,060 Έτσι, αυτό είναι μια γλώσσα σήμανσης. 1049 00:46:04,060 --> 00:46:07,690 Αλλά τότε θα είμαστε πολύ γρήγορα εισαγάγει JavaScript, το οποίο είναι ένα ολοκληρωμένο 1050 00:46:07,690 --> 00:46:08,560 γλώσσα προγραμματισμού. 1051 00:46:08,560 --> 00:46:12,530 Πολύ παρόμοια συντακτικά στην εμφάνιση σε C, αλλά αυτό θα έχει κάποια 1052 00:46:12,530 --> 00:46:15,200 ωραίο, πιο ισχυρή, πιο φιλικό προς το χρήστη χαρακτηριστικά. 1053 00:46:15,200 --> 00:46:18,050 >> Και μία από τις απογοητεύσεις σε αυτό σημείο στο εξάμηνο είναι ότι θα 1054 00:46:18,050 --> 00:46:22,065 Μόλις εφαρμόσουν ορθογράφος σε πολύ λιγότερα γραμμές κώδικα που χρησιμοποιούν άλλες γλώσσες 1055 00:46:22,065 --> 00:46:25,580 από C επιτρέπει στον εαυτό του, αλλά και για λόγους που θα καταλάβετε σύντομα. 1056 00:46:25,580 --> 00:46:27,750 Αυτή θα είναι η πρώτη τέτοια ιστοσελίδα. 1057 00:46:27,750 --> 00:46:30,120 Θα είναι εντελώς απογοητευτικό, το πρώτο που κάνουμε. 1058 00:46:30,120 --> 00:46:31,400 Θα πω απλώς, hello world. 1059 00:46:31,400 --> 00:46:34,010 Αλλά αν δεν έχετε δει πριν, αυτό είναι HTML, 1060 00:46:34,010 --> 00:46:35,670 HyperText Markup Language. 1061 00:46:35,670 --> 00:46:39,310 >> Αν πάτε σε μια συγκεκριμένη επιλογή μενού τα περισσότερα προγράμματα περιήγησης, σε οποιαδήποτε ιστοσελίδα για 1062 00:46:39,310 --> 00:46:43,160 το Διαδίκτυο, μπορείτε να δείτε τον κώδικα HTML ότι μερικοί άνθρωποι έγραψαν στην 1063 00:46:43,160 --> 00:46:44,400 δημιουργήσετε ότι η ιστοσελίδα. 1064 00:46:44,400 --> 00:46:47,850 Και πιθανώς δεν φαίνονται τόσο σύντομη ή σκέτο, όπως αυτό. 1065 00:46:47,850 --> 00:46:51,400 Αλλά θα ακολουθήσουν την πορεία αυτών των ανοιχτή παρένθεση και καθέτους και 1066 00:46:51,400 --> 00:46:53,660 γράμματα και δυνητικά αριθμούς. 1067 00:46:53,660 --> 00:46:56,770 >> Σκέφτηκα να σας δώσω ένα τρέιλερ από ό, τι θα είστε σε θέση να κάνει 1068 00:46:56,770 --> 00:46:57,950 μετά τη λήψη CS50. 1069 00:46:57,950 --> 00:47:02,620 Επιτρέψτε μου να πάω στο cs.harvard.edu / ληστεύουν, homepage δικό Rob Bowden μας. 1070 00:47:02,620 --> 00:47:06,080 Έκανε αυτό για μας. 1071 00:47:06,080 --> 00:47:07,490 Έτσι, θα είναι σύντομα σε θέση να το κάνουμε αυτό. 1072 00:47:07,490 --> 00:47:10,660 Και επίσης, αυτό που ακούσατε σήμερα το πρωί - 1073 00:47:10,660 --> 00:47:12,480 αυτό που ακούσαμε σήμερα το πρωί - 1074 00:47:12,480 --> 00:47:13,780 >> [HAMSTER DANCE MUSIC] 1075 00:47:13,780 --> 00:47:15,702 >> - Εσείς θα είναι σε θέση να κάνουν αυτό. 1076 00:47:15,702 --> 00:47:16,790 Που μας περιμένει την Τετάρτη. 1077 00:47:16,790 --> 00:47:17,791 Θα δούμε τότε. 1078 00:47:17,791 --> 00:47:22,950 >> [HAMSTER DANCE MUSIC] 1079 00:47:22,950 --> 00:47:24,300 DAVID MALAN: Στο επόμενο CS50 - 1080 00:47:24,300 --> 00:47:31,670