1 00:00:00,000 --> 00:00:08,250 2 00:00:08,250 --> 00:00:12,680 >> JASON Hirschhorn: Chào mừng tất cả mọi người với mục Bảy. 3 00:00:12,680 --> 00:00:15,040 Chúng tôi đang trong tuần bảy của khóa học. 4 00:00:15,040 --> 00:00:18,440 Và thứ năm sắp tới Halloween là vì vậy tôi 5 00:00:18,440 --> 00:00:21,420 mặc quần áo lên như một quả bí ngô. 6 00:00:21,420 --> 00:00:23,460 Tôi không thể cúi xuống và đưa vào đôi giày của tôi, vì vậy đó là lý do tại sao tôi 7 00:00:23,460 --> 00:00:25,660 chỉ mang vớ. 8 00:00:25,660 --> 00:00:29,220 Tôi cũng không mặc bất cứ thứ gì dưới này, vì vậy tôi không thể lấy nó ra nếu nó 9 00:00:29,220 --> 00:00:29,950 mất tập trung cho bạn. 10 00:00:29,950 --> 00:00:31,860 Tôi xin lỗi trước cho điều đó. 11 00:00:31,860 --> 00:00:33,170 Bạn không cần phải tưởng tượng những gì đang xảy ra. 12 00:00:33,170 --> 00:00:34,240 Tôi đang mặc quần đùi. 13 00:00:34,240 --> 00:00:36,170 Vì vậy, đó là tất cả tốt. 14 00:00:36,170 --> 00:00:41,120 >> Tôi có một câu chuyện dài về lý do tại sao tôi ăn mặc như một quả bí ngô, nhưng tôi sẽ 15 00:00:41,120 --> 00:00:45,110 tiết kiệm mà cho sau trong phần này bởi vì tôi muốn bắt đầu. 16 00:00:45,110 --> 00:00:47,720 Chúng tôi có rất nhiều điều thú vị đi qua trong tuần này. 17 00:00:47,720 --> 00:00:51,810 Hầu hết trong số họ liên quan trực tiếp đến điều này bộ vấn đề của tuần, lỗi chính tả. 18 00:00:51,810 --> 00:00:54,680 Chúng ta sẽ được đi qua liên kết danh sách và bảng băm 19 00:00:54,680 --> 00:00:57,160 cho toàn bộ phần. 20 00:00:57,160 --> 00:01:02,490 Tôi đưa danh sách này lên mỗi tuần, một danh sách các nguồn lực cho bạn để giúp bạn với 21 00:01:02,490 --> 00:01:04,120 các tài liệu về khóa học này. 22 00:01:04,120 --> 00:01:07,600 Nếu thua lỗ hoặc nếu tìm kiếm một số thêm thông tin, kiểm tra một trong 23 00:01:07,600 --> 00:01:09,930 các nguồn tài nguyên. 24 00:01:09,930 --> 00:01:14,530 >> Một lần nữa, pset6 là lỗi chính tả, pset trong tuần này. 25 00:01:14,530 --> 00:01:17,690 Và nó cũng khuyến khích bạn, và tôi khuyến khích các bạn, sử dụng một số khác 26 00:01:17,690 --> 00:01:20,320 nguồn lực đặc biệt cho pset này. 27 00:01:20,320 --> 00:01:23,390 Đặc biệt, ba tôi đã được liệt kê trên màn hình - 28 00:01:23,390 --> 00:01:27,160 gdb, mà chúng tôi đã quen thuộc với và được sử dụng trong một thời gian bây giờ, là 29 00:01:27,160 --> 00:01:29,270 sẽ rất hữu ích trong tuần này. 30 00:01:29,270 --> 00:01:30,190 Vì vậy, tôi đặt ở đây. 31 00:01:30,190 --> 00:01:32,910 Nhưng bất cứ khi nào bạn đang làm việc với C, bạn nên luôn luôn sử dụng gdb để 32 00:01:32,910 --> 00:01:34,430 debug chương trình của bạn. 33 00:01:34,430 --> 00:01:36,660 Tuần này cũng valgrind. 34 00:01:36,660 --> 00:01:38,535 Không ai biết những gì valgrind không? 35 00:01:38,535 --> 00:01:42,184 36 00:01:42,184 --> 00:01:43,890 >> ĐỐI TƯỢNG: Nó kiểm tra rò rỉ bộ nhớ? 37 00:01:43,890 --> 00:01:45,950 >> JASON Hirschhorn: Valgrind kiểm tra xem có rò rỉ bộ nhớ. 38 00:01:45,950 --> 00:01:49,970 Vì vậy, nếu bạn malloc một cái gì đó trong bạn chương trình, bạn đang yêu cầu bộ nhớ. 39 00:01:49,970 --> 00:01:52,920 Vào cuối chương trình của bạn, bạn có viết miễn phí trên tất cả mọi thứ bạn đã 40 00:01:52,920 --> 00:01:54,800 malloced để cung cấp cho bộ nhớ trở lại. 41 00:01:54,800 --> 00:01:58,420 Nếu bạn không viết tự do ở cuối và chương trình của bạn đến một kết luận, 42 00:01:58,420 --> 00:02:00,000 tất cả mọi thứ sẽ tự động được giải phóng. 43 00:02:00,000 --> 00:02:02,340 Và cho các chương trình nhỏ, đó là một thỏa thuận không phải là lớn. 44 00:02:02,340 --> 00:02:05,250 Nhưng nếu bạn đang viết một chạy lâu hơn chương trình mà không bỏ thuốc lá, 45 00:02:05,250 --> 00:02:09,180 nhất thiết, trong một vài phút hoặc một vài giây, sau đó rò rỉ bộ nhớ 46 00:02:09,180 --> 00:02:10,710 có thể trở thành một việc rất lớn. 47 00:02:10,710 --> 00:02:14,940 >> Vì vậy, cho pset6, kỳ vọng là bạn sẽ có không rò rỉ bộ nhớ với 48 00:02:14,940 --> 00:02:15,910 chương trình của bạn. 49 00:02:15,910 --> 00:02:18,690 Để kiểm tra rò rỉ bộ nhớ, chạy valgrind và nó sẽ cung cấp cho bạn một số đẹp 50 00:02:18,690 --> 00:02:21,190 đầu ra cho bạn biết liệu hay không tất cả mọi thứ được tự do. 51 00:02:21,190 --> 00:02:23,940 Chúng tôi sẽ thực hành với nó sau này hôm nay, hy vọng. 52 00:02:23,940 --> 00:02:25,790 >> Cuối cùng, các lệnh khác. 53 00:02:25,790 --> 00:02:28,900 Bạn sử dụng một cái gì đó tương tự với nó trong pset5 với công cụ peek. 54 00:02:28,900 --> 00:02:30,780 Cho phép bạn nhìn vào bên trong. 55 00:02:30,780 --> 00:02:33,400 Bạn cũng sử dụng khác cũng vậy, mỗi vấn đề đặt spec. 56 00:02:33,400 --> 00:02:35,950 Nhưng trong cho phép bạn so sánh hai tập tin. 57 00:02:35,950 --> 00:02:39,180 Bạn có thể so sánh các tập tin bitmap và tiêu đề thông tin của một giải pháp nhân viên và 58 00:02:39,180 --> 00:02:42,200 giải pháp của bạn trong pset5 nếu bạn đã chọn để sử dụng nó. 59 00:02:42,200 --> 00:02:44,030 Khác sẽ cho phép bạn làm điều đó, là tốt. 60 00:02:44,030 --> 00:02:48,620 Bạn có thể so sánh câu trả lời chính xác cho vấn đề của tuần này thiết lập để câu trả lời của bạn 61 00:02:48,620 --> 00:02:52,210 và xem nếu nó dòng lên hoặc nhìn thấy chỗ nào bị lỗi. 62 00:02:52,210 --> 00:02:55,870 >> Vì vậy, những người đang có ba công cụ tốt mà bạn nên sử dụng trong tuần này, và 63 00:02:55,870 --> 00:02:58,130 chắc chắn kiểm tra chương trình của bạn với ba công cụ 64 00:02:58,130 --> 00:03:00,520 trước khi chuyển nó vào 65 00:03:00,520 --> 00:03:04,650 Một lần nữa, như tôi đã đề cập mỗi tuần, nếu bạn có bất kỳ thông tin phản hồi cho tôi - cả hai 66 00:03:04,650 --> 00:03:06,470 tích cực và mang tính xây dựng - 67 00:03:06,470 --> 00:03:09,930 cảm thấy tự do để đi đến trang web ở dưới cùng của slide này 68 00:03:09,930 --> 00:03:11,270 và đầu vào nó ở đó. 69 00:03:11,270 --> 00:03:13,440 Tôi thực sự đánh giá cao sự và tất cả các thông tin phản hồi. 70 00:03:13,440 --> 00:03:17,360 Và nếu bạn cung cấp cho tôi những điều cụ thể mà Tôi có thể làm gì để cải thiện hoặc rằng tôi 71 00:03:17,360 --> 00:03:21,350 làm tốt mà bạn muốn tôi tiếp tục, tôi đi mà trái tim và 72 00:03:21,350 --> 00:03:24,040 thực sự cố gắng hết sức để lắng nghe phản hồi của bạn. 73 00:03:24,040 --> 00:03:27,720 Tôi không thể hứa tôi sẽ làm tất cả mọi thứ, tuy nhiên, giống như mặc một 74 00:03:27,720 --> 00:03:30,700 bí ngô trang phục mỗi tuần. 75 00:03:30,700 --> 00:03:34,020 >> Vì vậy, chúng tôi sẽ dành phần lớn phần, như tôi đã đề cập, nói về 76 00:03:34,020 --> 00:03:37,240 danh sách liên kết và bảng băm, mà sẽ được áp dụng trực tiếp vào 77 00:03:37,240 --> 00:03:38,780 vấn đề thiết lập trong tuần này. 78 00:03:38,780 --> 00:03:42,580 Danh sách liên kết, chúng tôi sẽ đi qua tương đối một cách nhanh chóng bởi vì chúng tôi đã dành một chút công bằng 79 00:03:42,580 --> 00:03:44,930 thời gian đi qua nó trong phần. 80 00:03:44,930 --> 00:03:48,680 Và vì vậy chúng tôi sẽ nhận được thẳng vào mã hóa vấn đề cho danh sách liên kết. 81 00:03:48,680 --> 00:03:52,740 Và sau đó cuối cùng chúng tôi sẽ nói về băm bảng và làm thế nào họ được áp dụng cho 82 00:03:52,740 --> 00:03:55,280 vấn đề tuần thiết lập. 83 00:03:55,280 --> 00:03:57,560 >> Bạn đã nhìn thấy mã này trước đây. 84 00:03:57,560 --> 00:04:02,730 Đây là một cấu trúc, và nó được xác định một cái gì đó mới được gọi là một nút. 85 00:04:02,730 --> 00:04:10,660 Và bên trong một nút có một số nguyên ngay tại đây và có một con trỏ đến 86 00:04:10,660 --> 00:04:11,830 một nút khác. 87 00:04:11,830 --> 00:04:12,790 Chúng tôi đã nhìn thấy điều này trước đây. 88 00:04:12,790 --> 00:04:14,830 Điều này đã được sắp lên cho một vài tuần nay. 89 00:04:14,830 --> 00:04:18,680 Nó kết hợp con trỏ, và chúng tôi luôn làm việc với, và cấu trúc, cho phép 90 00:04:18,680 --> 00:04:22,079 chúng ta kết hợp hai khác nhau mọi thứ vào một loại dữ liệu. 91 00:04:22,079 --> 00:04:24,830 92 00:04:24,830 --> 00:04:26,490 >> Có rất nhiều đang xảy ra trên màn hình. 93 00:04:26,490 --> 00:04:30,220 Nhưng tất cả của nó cần được tương đối quen thuộc với bạn. 94 00:04:30,220 --> 00:04:33,810 Trên dòng đầu tiên, chúng tôi khai báo một nút mới. 95 00:04:33,810 --> 00:04:41,650 Và bên trong có nút mới, tôi đặt số nguyên trong nút đó để một. 96 00:04:41,650 --> 00:04:44,950 Chúng ta thấy trên dòng tiếp theo, tôi đang làm một printf lệnh, nhưng tôi đã chuyển sang màu xám 97 00:04:44,950 --> 00:04:48,080 lệnh printf vì thực sự Phần quan trọng là dòng này đây - 98 00:04:48,080 --> 00:04:50,020 new_node.n. 99 00:04:50,020 --> 00:04:51,270 Không chấm có nghĩa là gì? 100 00:04:51,270 --> 00:04:53,810 101 00:04:53,810 --> 00:04:57,240 >> ĐỐI TƯỢNG: Đi về nút và đánh giá giá trị n cho nó. 102 00:04:57,240 --> 00:04:58,370 >> JASON Hirschhorn: Đó là chính xác. 103 00:04:58,370 --> 00:05:03,300 Chấm có nghĩa là truy cập vào phần n của nút mới này. 104 00:05:03,300 --> 00:05:05,690 Dòng tiếp theo này làm gì? 105 00:05:05,690 --> 00:05:16,140 106 00:05:16,140 --> 00:05:17,050 Michael. 107 00:05:17,050 --> 00:05:21,910 >> ĐỐI TƯỢNG: Nó tạo ra một nút khác mà sẽ trỏ đến nút mới. 108 00:05:21,910 --> 00:05:24,870 >> JASON Hirschhorn: Vì vậy, nó không tạo ra một nút mới. 109 00:05:24,870 --> 00:05:26,120 Nó tạo ra một cái gì? 110 00:05:26,120 --> 00:05:28,300 111 00:05:28,300 --> 00:05:29,300 >> ĐỐI TƯỢNG: Một con trỏ. 112 00:05:29,300 --> 00:05:33,460 >> JASON Hirschhorn: Một con trỏ tới một nút, như được chỉ ra bởi nút này * đây. 113 00:05:33,460 --> 00:05:34,800 Vì vậy, nó tạo ra một con trỏ tới một nút. 114 00:05:34,800 --> 00:05:37,490 Và đó nút là nó chỉ để, Michael? 115 00:05:37,490 --> 00:05:38,440 >> ĐỐI TƯỢNG: nút mới? 116 00:05:38,440 --> 00:05:39,240 >> JASON Hirschhorn: nút New. 117 00:05:39,240 --> 00:05:43,020 Và nó chỉ có bởi vì chúng tôi đã cho nó địa chỉ của nút mới. 118 00:05:43,020 --> 00:05:45,820 Và bây giờ trong dòng này, chúng ta thấy hai cách khác nhau 119 00:05:45,820 --> 00:05:46,910 thể hiện điều tương tự. 120 00:05:46,910 --> 00:05:49,650 Và tôi muốn chỉ ra làm thế nào những hai điều đều giống nhau. 121 00:05:49,650 --> 00:05:54,740 Trong dòng đầu tiên, chúng tôi tới đích con trỏ. 122 00:05:54,740 --> 00:05:55,830 Vì vậy, chúng tôi đi đến nút. 123 00:05:55,830 --> 00:05:56,830 Đó là những gì có nghĩa là ngôi sao này. 124 00:05:56,830 --> 00:05:57,930 Chúng tôi đã nhìn thấy rằng trước với con trỏ. 125 00:05:57,930 --> 00:05:59,280 Tới nút đó. 126 00:05:59,280 --> 00:06:00,370 Đó là trong dấu ngoặc đơn. 127 00:06:00,370 --> 00:06:04,610 Và sau đó truy cập thông qua các dấu chấm các yếu tố n của nút đó. 128 00:06:04,610 --> 00:06:08,430 >> Vì vậy, đó là tham gia các cú pháp chúng ta đã thấy ngay tại đây và bây giờ 129 00:06:08,430 --> 00:06:09,670 sử dụng nó với một con trỏ. 130 00:06:09,670 --> 00:06:13,730 Tất nhiên, nó được loại bận rộn nếu bạn đang viết những dấu ngoặc đơn - 131 00:06:13,730 --> 00:06:14,940 ngôi sao và dấu chấm đó. 132 00:06:14,940 --> 00:06:16,220 Nó được một chút bận rộn. 133 00:06:16,220 --> 00:06:18,500 Vì vậy, chúng tôi có một số cú pháp đường. 134 00:06:18,500 --> 00:06:19,920 Và dòng này ngay tại đây - 135 00:06:19,920 --> 00:06:21,170 ptr_node-> n. 136 00:06:21,170 --> 00:06:25,400 137 00:06:25,400 --> 00:06:28,000 Điều đó không chính xác. 138 00:06:28,000 --> 00:06:30,840 Vì vậy, hai dòng mã là tương đương và sẽ làm 139 00:06:30,840 --> 00:06:31,650 cùng một điều chính xác. 140 00:06:31,650 --> 00:06:34,210 >> Nhưng tôi muốn chỉ những người ra trước chúng tôi đi thêm nữa để bạn hiểu 141 00:06:34,210 --> 00:06:39,000 mà thực sự điều này đúng ở đây là cú pháp đường cho dereferencing 142 00:06:39,000 --> 00:06:44,200 con trỏ và sau đó sẽ n một phần của cấu trúc đó. 143 00:06:44,200 --> 00:06:45,525 Thắc mắc về slide này? 144 00:06:45,525 --> 00:06:53,020 145 00:06:53,020 --> 00:06:54,390 OK. 146 00:06:54,390 --> 00:06:58,510 >> Vì vậy, chúng ta sẽ đi qua một vài các hoạt động mà bạn có thể làm trên 147 00:06:58,510 --> 00:06:59,730 danh sách liên kết. 148 00:06:59,730 --> 00:07:05,770 Một danh sách liên kết, thu hồi, là một loạt các các nút trỏ đến nhau. 149 00:07:05,770 --> 00:07:12,470 Và chúng tôi thường bắt đầu với một con trỏ được gọi là người đứng đầu, nói chung, mà điểm đến 150 00:07:12,470 --> 00:07:14,040 điều đầu tiên trong danh sách. 151 00:07:14,040 --> 00:07:18,900 Vì vậy, trên dòng đầu tiên ở đây, chúng tôi có L ban đầu của chúng tôi đầu tiên. 152 00:07:18,900 --> 00:07:21,370 Vì vậy, điều mà bạn có thể nghĩ đến - điều này văn bản ngay tại đây bạn có thể nghĩ như 153 00:07:21,370 --> 00:07:23,560 chỉ con trỏ chúng tôi đã được lưu trữ ở đâu đó rằng điểm 154 00:07:23,560 --> 00:07:24,670 đến các yếu tố đầu tiên. 155 00:07:24,670 --> 00:07:27,500 Và trong danh sách liên kết này chúng tôi có bốn nút. 156 00:07:27,500 --> 00:07:29,530 Mỗi nút là một hộp lớn. 157 00:07:29,530 --> 00:07:33,430 Hộp lớn hơn bên trong lớn hộp là một phần số nguyên. 158 00:07:33,430 --> 00:07:37,400 Và sau đó chúng tôi có một phần con trỏ. 159 00:07:37,400 --> 00:07:39,630 >> Những hộp không được rút ra để quy mô lớn như thế nào bởi vì là 160 00:07:39,630 --> 00:07:42,320 một số nguyên trong byte? 161 00:07:42,320 --> 00:07:43,290 Lớn như thế nào bây giờ? 162 00:07:43,290 --> 00:07:43,710 Bốn. 163 00:07:43,710 --> 00:07:45,470 Và lớn như thế nào là một con trỏ? 164 00:07:45,470 --> 00:07:45,940 Bốn. 165 00:07:45,940 --> 00:07:48,180 Vì vậy, thực sự, nếu chúng ta rút ra này để mở rộng cả hai hộp 166 00:07:48,180 --> 00:07:49,690 sẽ có cùng kích thước. 167 00:07:49,690 --> 00:07:52,870 Trong trường hợp này, chúng tôi muốn chèn một cái gì đó vào danh sách liên kết. 168 00:07:52,870 --> 00:07:57,190 Vì vậy, bạn có thể thấy ở đây chúng tôi đang chèn Chúng tôi đi qua năm qua 169 00:07:57,190 --> 00:08:01,310 danh sách liên kết, tìm nơi mà năm đi, và sau đó chèn nó. 170 00:08:01,310 --> 00:08:03,560 >> Hãy phá vỡ đó và đi một chút chậm hơn. 171 00:08:03,560 --> 00:08:05,510 Tôi sẽ chỉ cho Ban. 172 00:08:05,510 --> 00:08:09,930 Vì vậy, chúng tôi có nút của chúng tôi năm đó chúng tôi đã tạo ra trong mallocs. 173 00:08:09,930 --> 00:08:11,190 Tại sao tất cả mọi người cười? 174 00:08:11,190 --> 00:08:12,130 Chỉ đùa thôi. 175 00:08:12,130 --> 00:08:13,310 OK. 176 00:08:13,310 --> 00:08:14,820 Vì vậy, chúng tôi đã malloced năm. 177 00:08:14,820 --> 00:08:16,310 Chúng tôi đã tạo ra nút này ở một nơi khác. 178 00:08:16,310 --> 00:08:17,740 Chúng tôi có nó sẵn sàng để đi. 179 00:08:17,740 --> 00:08:20,130 Chúng tôi bắt đầu ở phía trước danh sách của chúng tôi với hai. 180 00:08:20,130 --> 00:08:22,380 Và chúng tôi muốn chèn trong một thời trang được sắp xếp. 181 00:08:22,380 --> 00:08:27,550 >> Vì vậy, nếu chúng ta thấy hai và chúng tôi muốn đặt trong năm, chúng ta làm gì khi chúng ta thấy 182 00:08:27,550 --> 00:08:28,800 một cái gì đó ít hơn chúng tôi? 183 00:08:28,800 --> 00:08:31,850 184 00:08:31,850 --> 00:08:33,520 Những gì? 185 00:08:33,520 --> 00:08:36,750 Chúng tôi muốn để chèn vào năm này danh sách liên kết, giữ cho nó được sắp xếp. 186 00:08:36,750 --> 00:08:37,520 Chúng ta thấy số hai. 187 00:08:37,520 --> 00:08:38,769 Vì vậy, chúng ta làm gì? 188 00:08:38,769 --> 00:08:39,179 Marcus? 189 00:08:39,179 --> 00:08:40,679 >> ĐỐI TƯỢNG: Hãy gọi cho con trỏ đến nút tiếp theo. 190 00:08:40,679 --> 00:08:42,530 >> JASON Hirschhorn: Và tại sao chúng tôi đi đến tiếp theo? 191 00:08:42,530 --> 00:08:45,970 >> ĐỐI TƯỢNG: Bởi vì đó là nút tiếp theo trong danh sách. 192 00:08:45,970 --> 00:08:48,310 Và chúng tôi chỉ biết rằng vị trí khác. 193 00:08:48,310 --> 00:08:50,410 >> JASON Hirschhorn: Và năm lớn hơn hai, đặc biệt. 194 00:08:50,410 --> 00:08:51,600 Bởi vì chúng tôi muốn giữ nó được sắp xếp. 195 00:08:51,600 --> 00:08:52,730 Vì vậy, năm lớn hơn hai. 196 00:08:52,730 --> 00:08:54,460 Vì vậy, chúng tôi chuyển sang kế tiếp. 197 00:08:54,460 --> 00:08:55,240 Và bây giờ chúng tôi đạt đến bốn. 198 00:08:55,240 --> 00:08:56,490 Và những gì sẽ xảy ra khi chúng ta đạt đến bốn? 199 00:08:56,490 --> 00:08:58,920 200 00:08:58,920 --> 00:09:00,310 >> Năm lớn hơn bốn. 201 00:09:00,310 --> 00:09:01,460 Vì vậy, chúng tôi tiếp tục đi. 202 00:09:01,460 --> 00:09:03,110 Và bây giờ chúng tôi đang ở sáu. 203 00:09:03,110 --> 00:09:04,360 Và làm những gì chúng ta thấy ở sáu? 204 00:09:04,360 --> 00:09:08,672 205 00:09:08,672 --> 00:09:09,608 Có, Carlos? 206 00:09:09,608 --> 00:09:10,544 >> ĐỐI TƯỢNG: Sáu lớn hơn năm. 207 00:09:10,544 --> 00:09:11,480 >> JASON Hirschhorn: Sáu là lớn hơn năm. 208 00:09:11,480 --> 00:09:13,660 Vì vậy, đó là nơi mà chúng ta muốn để chèn năm. 209 00:09:13,660 --> 00:09:17,320 Tuy nhiên, hãy nhớ rằng nếu chúng ta chỉ có một con trỏ ở đây - 210 00:09:17,320 --> 00:09:19,840 đây là con trỏ thêm của chúng tôi đó là đi ngang qua danh sách. 211 00:09:19,840 --> 00:09:21,860 Và chúng tôi chỉ đến sáu. 212 00:09:21,860 --> 00:09:25,010 Chúng tôi đã mất theo dõi những gì đến trước khi sáu. 213 00:09:25,010 --> 00:09:29,130 Vì vậy, nếu chúng ta muốn chèn một cái gì đó vào danh sách này giữ nó được sắp xếp, chúng tôi 214 00:09:29,130 --> 00:09:31,630 có lẽ cần phải có bao nhiêu con trỏ? 215 00:09:31,630 --> 00:09:32,280 >> ĐỐI TƯỢNG: Hai. 216 00:09:32,280 --> 00:09:32,920 >> JASON HIRSCHORN: Hai. 217 00:09:32,920 --> 00:09:35,720 Một để theo dõi các hiện một và một để theo dõi 218 00:09:35,720 --> 00:09:37,050 trước đó. 219 00:09:37,050 --> 00:09:38,450 Đây chỉ là một danh sách liên kết đơn lẻ. 220 00:09:38,450 --> 00:09:39,670 Nó chỉ đi một hướng. 221 00:09:39,670 --> 00:09:43,220 Nếu chúng ta có một danh sách liên kết kép, nơi tất cả mọi thứ đã được trỏ đến điều 222 00:09:43,220 --> 00:09:46,240 sau khi nó và điều trước đó, sau đó chúng tôi sẽ không cần phải làm điều đó. 223 00:09:46,240 --> 00:09:49,350 Nhưng trong trường hợp này chúng tôi không muốn để mất theo dõi những gì đi trước chúng ta trong trường hợp 224 00:09:49,350 --> 00:09:53,350 chúng ta cần phải chèn năm một nơi nào đó ở giữa. 225 00:09:53,350 --> 00:09:55,610 Nói chúng tôi đã chèn chín. 226 00:09:55,610 --> 00:09:57,260 Điều gì sẽ xảy ra khi chúng tôi có đến tám? 227 00:09:57,260 --> 00:10:01,860 228 00:10:01,860 --> 00:10:04,880 >> ĐỐI TƯỢNG: Bạn sẽ phải nhận được rằng điểm null. 229 00:10:04,880 --> 00:10:07,820 Thay vì có điểm vô giá trị bạn muốn có để thêm một yếu tố và sau đó có 230 00:10:07,820 --> 00:10:09,216 nó trỏ đến chín. 231 00:10:09,216 --> 00:10:09,700 >> JASON HIRSCHORN: Chính xác. 232 00:10:09,700 --> 00:10:10,600 Vì vậy, chúng tôi nhận tám. 233 00:10:10,600 --> 00:10:13,140 Chúng tôi đến cuối danh sách bởi vì này được trỏ đến null. 234 00:10:13,140 --> 00:10:16,330 Và bây giờ, thay vì có nó trỏ đến vô giá trị, chúng tôi có nó trỏ đến nút mới của chúng tôi. 235 00:10:16,330 --> 00:10:19,870 Và chúng tôi đặt con trỏ trong nút mới của chúng tôi để null. 236 00:10:19,870 --> 00:10:21,445 Không ai có bất kỳ câu hỏi về chèn? 237 00:10:21,445 --> 00:10:25,620 238 00:10:25,620 --> 00:10:28,100 Nếu tôi không quan tâm giữ danh sách được sắp xếp? 239 00:10:28,100 --> 00:10:31,701 240 00:10:31,701 --> 00:10:34,350 >> ĐỐI TƯỢNG: Stick nó ở bắt đầu hoặc kết thúc. 241 00:10:34,350 --> 00:10:35,510 >> JASON HIRSCHORN: Stick nó tại đầu hoặc kết thúc. 242 00:10:35,510 --> 00:10:37,276 Mà một trong những chúng ta nên làm gì? 243 00:10:37,276 --> 00:10:38,770 Bobby? 244 00:10:38,770 --> 00:10:41,020 Tại sao kết thúc? 245 00:10:41,020 --> 00:10:43,250 >> ĐỐI TƯỢNG: Bởi vì đầu đã được lấp đầy. 246 00:10:43,250 --> 00:10:43,575 >> JASON HIRSCHORN: OK. 247 00:10:43,575 --> 00:10:44,360 Đầu đã được lấp đầy. 248 00:10:44,360 --> 00:10:46,090 Ai muốn tranh luận chống lại Bobby. 249 00:10:46,090 --> 00:10:47,290 Marcus. 250 00:10:47,290 --> 00:10:48,910 >> ĐỐI TƯỢNG: Vâng, bạn có thể muốn dính vào nó ngay từ đầu vì 251 00:10:48,910 --> 00:10:50,140 nếu không nếu bạn đặt nó ở kết thúc bạn phải 252 00:10:50,140 --> 00:10:51,835 đi qua toàn bộ danh sách. 253 00:10:51,835 --> 00:10:52,990 >> JASON HIRSCHORN: Chính xác. 254 00:10:52,990 --> 00:10:57,970 Vì vậy, nếu chúng ta đang suy nghĩ về thời gian chạy, thời gian chạy chèn ở cuối 255 00:10:57,970 --> 00:11:00,110 sẽ là n, kích thước này. 256 00:11:00,110 --> 00:11:03,080 O thời gian chạy lớn chèn là những gì ngay từ đầu? 257 00:11:03,080 --> 00:11:04,170 Thời gian liên tục. 258 00:11:04,170 --> 00:11:07,075 Vì vậy, nếu bạn không quan tâm về việc giữ gìn một cái gì đó sắp xếp, tốt hơn để chỉ 259 00:11:07,075 --> 00:11:08,420 chèn vào đầu danh sách này. 260 00:11:08,420 --> 00:11:10,320 Và có thể được thực hiện trong thời gian liên tục. 261 00:11:10,320 --> 00:11:13,900 262 00:11:13,900 --> 00:11:14,690 >> OK. 263 00:11:14,690 --> 00:11:18,870 Hoạt động tiếp theo được tìm thấy, trong đó khác - chúng tôi đã diễn đạt này như tìm kiếm. 264 00:11:18,870 --> 00:11:22,470 Nhưng chúng ta sẽ xem xét thông qua danh sách liên kết cho một số đối tượng. 265 00:11:22,470 --> 00:11:26,000 Các bạn đã thấy mã cho tìm kiếm trước trong bài giảng. 266 00:11:26,000 --> 00:11:29,490 Nhưng chúng tôi loại chỉ cần làm nó với chèn, hoặc ít nhất là chèn 267 00:11:29,490 --> 00:11:30,580 một cái gì đó được sắp xếp. 268 00:11:30,580 --> 00:11:36,350 Bạn xem xét thông qua, sẽ nút bằng nút, cho đến khi bạn tìm thấy những con số đó bạn 269 00:11:36,350 --> 00:11:37,780 tìm kiếm. 270 00:11:37,780 --> 00:11:39,670 Điều gì xảy ra nếu bạn đạt cuối danh sách? 271 00:11:39,670 --> 00:11:43,020 Nói rằng tôi đang tìm chín và tôi đến cuối danh sách. 272 00:11:43,020 --> 00:11:44,270 Chúng ta phải làm gì? 273 00:11:44,270 --> 00:11:47,147 274 00:11:47,147 --> 00:11:48,110 >> ĐỐI TƯỢNG: Quay trở lại sai? 275 00:11:48,110 --> 00:11:48,690 >> JASON HIRSCHORN: Trở về sai. 276 00:11:48,690 --> 00:11:49,960 Chúng tôi không tìm thấy nó. 277 00:11:49,960 --> 00:11:52,010 Nếu bạn đến cuối danh sách và bạn không tìm thấy số lượng bạn 278 00:11:52,010 --> 00:11:54,170 tìm kiếm, nó không phải ở đó. 279 00:11:54,170 --> 00:11:55,420 Bất kỳ câu hỏi về tìm? 280 00:11:55,420 --> 00:11:59,530 281 00:11:59,530 --> 00:12:04,615 Nếu đây là một danh sách được sắp xếp, điều gì sẽ khác nhau để tìm kiếm của chúng tôi? 282 00:12:04,615 --> 00:12:07,370 283 00:12:07,370 --> 00:12:08,103 Yeah. 284 00:12:08,103 --> 00:12:10,600 >> ĐỐI TƯỢNG: Nó sẽ tìm thấy giá trị đầu tiên đó là lớn hơn một trong những 285 00:12:10,600 --> 00:12:12,390 bạn đang tìm kiếm và sau đó trả về false. 286 00:12:12,390 --> 00:12:13,190 >> JASON HIRSCHORN: Chính xác. 287 00:12:13,190 --> 00:12:17,310 Vì vậy, nếu đó là một danh sách được sắp xếp, nếu chúng tôi nhận được một cái gì đó lớn hơn những gì 288 00:12:17,310 --> 00:12:20,180 chúng tôi đang tìm kiếm, chúng tôi không cần phải tiếp tục đi đến cuối danh sách. 289 00:12:20,180 --> 00:12:24,060 Chúng ta có thể tại thời điểm đó trả về false bởi vì chúng ta sẽ không tìm thấy nó. 290 00:12:24,060 --> 00:12:27,340 Câu hỏi là bây giờ, chúng tôi đã nói chuyện về giữ danh sách liên kết được sắp xếp, 291 00:12:27,340 --> 00:12:28,180 giữ cho chúng được phân loại. 292 00:12:28,180 --> 00:12:30,050 Đó sẽ là một cái gì đó bạn có lẽ sẽ phải suy nghĩ về 293 00:12:30,050 --> 00:12:34,240 khi mã hóa vấn đề thiết lập năm nếu bạn chọn một bảng băm với riêng 294 00:12:34,240 --> 00:12:36,360 chaining cách tiếp cận, mà chúng tôi sẽ nói về sau này. 295 00:12:36,360 --> 00:12:41,400 >> Nhưng nó có giá trị để giữ danh sách sắp xếp và sau đó có thể để có thể có 296 00:12:41,400 --> 00:12:42,310 tìm kiếm nhanh hơn? 297 00:12:42,310 --> 00:12:47,220 Hoặc là nó tốt hơn để nhanh chóng chèn một cái gì đó trong thời gian chạy liên tục nhưng sau đó 298 00:12:47,220 --> 00:12:48,430 có còn tìm kiếm? 299 00:12:48,430 --> 00:12:52,250 Đó là một sự cân bằng ngay đó mà bạn có thể quyết định những gì là thích hợp hơn 300 00:12:52,250 --> 00:12:53,590 cho vấn đề cụ thể của bạn. 301 00:12:53,590 --> 00:12:56,680 Và có không nhất thiết một Câu trả lời hoàn toàn đúng. 302 00:12:56,680 --> 00:12:59,520 Nhưng nó chắc chắn là một quyết định bạn có được để thực hiện, và có lẽ tốt để bảo vệ 303 00:12:59,520 --> 00:13:05,270 trong, nói rằng, một hoặc hai bình luận lý do tại sao bạn chọn một trong khác. 304 00:13:05,270 --> 00:13:06,490 >> Cuối cùng, xóa. 305 00:13:06,490 --> 00:13:08,100 Chúng tôi đã nhìn thấy xóa. 306 00:13:08,100 --> 00:13:09,180 Nó tương tự như tìm kiếm. 307 00:13:09,180 --> 00:13:11,020 Chúng tôi tìm kiếm các phần tử. 308 00:13:11,020 --> 00:13:12,390 Nói rằng chúng tôi đang cố gắng để xóa sáu. 309 00:13:12,390 --> 00:13:14,450 Vì vậy, chúng tôi tìm thấy sáu ngay tại đây. 310 00:13:14,450 --> 00:13:18,860 Điều mà chúng ta phải chắc chắn rằng chúng tôi làm là bất cứ điều gì chỉ để 311 00:13:18,860 --> 00:13:21,220 sáu - như chúng ta thấy trong bước hai xuống đây - 312 00:13:21,220 --> 00:13:26,500 bất cứ điều gì trỏ đến sáu nhu cầu để bỏ qua sáu giờ và được thay đổi để 313 00:13:26,500 --> 00:13:28,160 bất cứ điều gì sáu được trỏ đến. 314 00:13:28,160 --> 00:13:31,410 Chúng tôi không muốn đứa trẻ mồ côi bao giờ phần còn lại của danh sách của chúng tôi bằng cách quên đi để thiết lập mà 315 00:13:31,410 --> 00:13:32,960 con trỏ trước. 316 00:13:32,960 --> 00:13:35,960 Và đôi khi, tùy thuộc về chương trình, họ sẽ chỉ 317 00:13:35,960 --> 00:13:37,380 xóa nút này hoàn toàn. 318 00:13:37,380 --> 00:13:40,135 Đôi khi bạn sẽ muốn quay trở lại giá trị đó là trong nút này. 319 00:13:40,135 --> 00:13:42,490 Vì vậy, đó là cách xóa các công trình. 320 00:13:42,490 --> 00:13:44,610 Bất kỳ câu hỏi về xóa? 321 00:13:44,610 --> 00:13:51,280 322 00:13:51,280 --> 00:13:53,850 >> ĐỐI TƯỢNG: Vì vậy, nếu bạn đang đi để xóa nó, bạn sẽ chỉ sử dụng miễn phí bởi vì 323 00:13:53,850 --> 00:13:55,655 có lẽ nó đã được malloced? 324 00:13:55,655 --> 00:13:57,976 >> JASON HIRSCHORN: Nếu bạn muốn giải phóng một cái gì đó hoàn toàn chính xác và bạn 325 00:13:57,976 --> 00:13:58,540 malloced nó. 326 00:13:58,540 --> 00:14:00,410 Nói rằng chúng ta muốn trở về giá trị này. 327 00:14:00,410 --> 00:14:04,010 Chúng tôi có thể trở lại sáu và sau đó miễn phí nút này và gọi miễn phí trên đó. 328 00:14:04,010 --> 00:14:06,180 Hoặc chúng tôi có lẽ muốn gọi miễn phí đầu tiên và sau đó trở về sáu. 329 00:14:06,180 --> 00:14:11,210 330 00:14:11,210 --> 00:14:11,580 >> OK. 331 00:14:11,580 --> 00:14:14,010 Vì vậy, chúng ta hãy chuyển sang thực hành mã hóa. 332 00:14:14,010 --> 00:14:16,090 Chúng tôi đang đi vào mã ba chức năng. 333 00:14:16,090 --> 00:14:18,260 Người đầu tiên được gọi là insert_node. 334 00:14:18,260 --> 00:14:22,170 Vì vậy, bạn có mã mà tôi gửi qua email bạn, và nếu bạn đang xem cái này sau này 335 00:14:22,170 --> 00:14:28,020 bạn có thể truy cập vào mã trong linked.c trên trang web CS50. 336 00:14:28,020 --> 00:14:30,880 Nhưng trong linked.c, có một số đang bộ xương đó là đã có 337 00:14:30,880 --> 00:14:32,280 được viết cho bạn. 338 00:14:32,280 --> 00:14:34,560 Và sau đó có một vài chức năng bạn cần phải viết. 339 00:14:34,560 --> 00:14:36,380 >> Đầu tiên chúng ta sẽ viết insert_node. 340 00:14:36,380 --> 00:14:39,800 Và những gì không insert_node là chèn một số nguyên. 341 00:14:39,800 --> 00:14:42,440 Và bạn đang đưa ra các số nguyên vào một danh sách liên kết. 342 00:14:42,440 --> 00:14:45,470 Và đặc biệt, bạn cần để giữ cho các danh sách được sắp xếp 343 00:14:45,470 --> 00:14:47,650 từ nhỏ đến lớn. 344 00:14:47,650 --> 00:14:51,360 Ngoài ra, bạn không muốn chèn thêm bất kỳ bản sao. 345 00:14:51,360 --> 00:14:54,600 Cuối cùng, bạn có thể thấy insert_node trả về một bool. 346 00:14:54,600 --> 00:14:57,140 Vì vậy, bạn đang nghĩ để cho người dùng biết hay không chèn là 347 00:14:57,140 --> 00:15:00,800 thành công bằng cách trả lại đúng hay sai. 348 00:15:00,800 --> 00:15:02,580 Vào cuối của chương trình này - 349 00:15:02,580 --> 00:15:05,750 và cho giai đoạn này bạn không cần phải lo lắng về bất cứ điều gì giải phóng. 350 00:15:05,750 --> 00:15:11,790 Vì vậy, tất cả các bạn đang làm là lấy một số nguyên và chèn nó vào một danh sách. 351 00:15:11,790 --> 00:15:13,890 >> Đó là những gì tôi yêu cầu bạn làm bây giờ. 352 00:15:13,890 --> 00:15:17,620 Một lần nữa, trong linked.c, mà bạn tất cả đều có, là mã bộ xương. 353 00:15:17,620 --> 00:15:20,980 Và bạn sẽ thấy hướng về phía dưới khai báo hàm mẫu. 354 00:15:20,980 --> 00:15:27,390 Tuy nhiên, trước khi đi vào mã hóa nó trong C, tôi rất khuyến khích bạn đi 355 00:15:27,390 --> 00:15:29,330 thông qua các bước chúng tôi đã thực hành mỗi tuần. 356 00:15:29,330 --> 00:15:31,100 Chúng ta đã trải qua một bức tranh về điều này. 357 00:15:31,100 --> 00:15:33,380 Vì vậy, bạn cần phải có một số hiểu biết về cách làm việc này. 358 00:15:33,380 --> 00:15:36,590 Nhưng tôi sẽ khuyến khích bạn viết một số giả trước khi lặn in 359 00:15:36,590 --> 00:15:38,640 Và chúng ta sẽ đi qua giả như một nhóm. 360 00:15:38,640 --> 00:15:41,470 Và sau đó một khi bạn đã viết của bạn giả, và một khi chúng tôi đã viết của chúng tôi 361 00:15:41,470 --> 00:15:45,850 giả như một nhóm, bạn có thể đi vào mã hóa nó trong C. 362 00:15:45,850 --> 00:15:49,980 >> Là một người đứng đầu lên, chức năng insert_node có lẽ là khó khăn nhất trong 363 00:15:49,980 --> 00:15:53,550 ba chúng tôi đang đi để viết bởi vì tôi bổ sung một số hạn chế bổ sung cho 364 00:15:53,550 --> 00:15:57,190 lập trình của bạn, đặc biệt là bạn sẽ không chèn thêm bất kỳ 365 00:15:57,190 --> 00:15:59,880 bản sao và danh sách nên vẫn còn được sắp xếp. 366 00:15:59,880 --> 00:16:02,660 Vì vậy, đây là một chương trình không tầm thường mà bạn cần phải viết mã. 367 00:16:02,660 --> 00:16:06,470 Và tại sao bạn không đi 5-7 phút chỉ để làm việc trên 368 00:16:06,470 --> 00:16:07,640 giả và mã. 369 00:16:07,640 --> 00:16:09,460 Và sau đó chúng tôi sẽ bắt đầu đi theo nhóm. 370 00:16:09,460 --> 00:16:11,680 Một lần nữa, nếu bạn có bất kỳ câu hỏi chỉ giơ tay và tôi sẽ đi xung quanh. 371 00:16:11,680 --> 00:16:15,258 372 00:16:15,258 --> 00:16:16,508 . 373 00:16:16,508 --> 00:18:28,370 374 00:18:28,370 --> 00:18:30,120 >> Chúng tôi cũng thường làm những - 375 00:18:30,120 --> 00:18:32,070 hoặc tôi không nói một cách rõ ràng bạn có thể làm việc với mọi người. 376 00:18:32,070 --> 00:18:36,500 Nhưng rõ ràng, tôi rất khuyến khích các bạn, nếu bạn có thắc mắc, yêu cầu các 377 00:18:36,500 --> 00:18:39,840 hàng xóm ngồi bên cạnh bạn hoặc thậm chí làm việc với ai đó 378 00:18:39,840 --> 00:18:40,510 khác nếu bạn muốn. 379 00:18:40,510 --> 00:18:42,600 Điều này không phải là một cá nhân hoạt động im lặng. 380 00:18:42,600 --> 00:20:11,770 381 00:20:11,770 --> 00:20:16,330 >> Hãy bắt đầu với một số văn bản giả trên diễn đàn. 382 00:20:16,330 --> 00:20:19,395 Ai có thể cho tôi những dòng đầu tiên của giả cho chương trình này? 383 00:20:19,395 --> 00:20:22,240 384 00:20:22,240 --> 00:20:23,640 Đối với chức năng này, thay vì - insert_node. 385 00:20:23,640 --> 00:20:29,960 386 00:20:29,960 --> 00:20:31,830 Alden? 387 00:20:31,830 --> 00:20:36,560 >> ĐỐI TƯỢNG: Vì vậy, điều đầu tiên tôi làm là tạo ra một con trỏ đến nút mới và tôi 388 00:20:36,560 --> 00:20:41,320 khởi tạo nó trỏ đến cùng điều mà danh sách được trỏ đến. 389 00:20:41,320 --> 00:20:41,550 >> JASON HIRSCHORN: OK. 390 00:20:41,550 --> 00:20:45,190 Vì vậy, bạn đang tạo ra một con trỏ mới vào danh sách, không để nút. 391 00:20:45,190 --> 00:20:45,420 >> ĐỐI TƯỢNG: Đúng vậy. 392 00:20:45,420 --> 00:20:46,150 Yeah. 393 00:20:46,150 --> 00:20:46,540 >> JASON HIRSCHORN: OK. 394 00:20:46,540 --> 00:20:48,221 Và sau đó những gì chúng ta muốn làm gì? 395 00:20:48,221 --> 00:20:49,163 Có gì sau đó? 396 00:20:49,163 --> 00:20:50,105 Những gì về các nút? 397 00:20:50,105 --> 00:20:51,050 Chúng tôi không có một nút. 398 00:20:51,050 --> 00:20:52,300 Chúng tôi chỉ có một giá trị. 399 00:20:52,300 --> 00:20:55,918 400 00:20:55,918 --> 00:20:58,890 Nếu chúng ta muốn chèn một nút, những gì chúng tôi cần làm đầu tiên trước khi chúng tôi thậm chí có thể 401 00:20:58,890 --> 00:20:59,980 suy nghĩ về chèn nó? 402 00:20:59,980 --> 00:21:00,820 >> ĐỐI TƯỢNG: Ồ, xin lỗi. 403 00:21:00,820 --> 00:21:02,160 chúng ta cần phải malloc không gian cho một nút. 404 00:21:02,160 --> 00:21:02,455 >> JASON HIRSCHORN: Tuyệt vời. 405 00:21:02,455 --> 00:21:03,210 Chúng ta hãy làm - 406 00:21:03,210 --> 00:21:04,628 OK. 407 00:21:04,628 --> 00:21:06,065 Không thể đạt cao. 408 00:21:06,065 --> 00:21:08,939 409 00:21:08,939 --> 00:21:09,897 OK. 410 00:21:09,897 --> 00:21:13,236 Chúng ta sẽ đi xuống, và sau đó chúng tôi đang sử dụng hai cột. 411 00:21:13,236 --> 00:21:13,732 Tôi không thể đi mà - 412 00:21:13,732 --> 00:21:14,982 OK. 413 00:21:14,982 --> 00:21:23,660 414 00:21:23,660 --> 00:21:25,130 Tạo ra một nút mới. 415 00:21:25,130 --> 00:21:29,380 Bạn có thể tạo ra một con trỏ vào danh sách hoặc bạn chỉ có thể sử dụng danh sách như nó tồn tại. 416 00:21:29,380 --> 00:21:30,720 Bạn không thực sự cần phải làm điều đó. 417 00:21:30,720 --> 00:21:31,750 >> Vì vậy, chúng tôi tạo ra một nút mới. 418 00:21:31,750 --> 00:21:32,010 Tuyệt vời. 419 00:21:32,010 --> 00:21:32,840 Đó là những gì chúng tôi làm đầu tiên. 420 00:21:32,840 --> 00:21:34,870 Cái gì tiếp theo? 421 00:21:34,870 --> 00:21:35,080 >> ĐỐI TƯỢNG: Chờ. 422 00:21:35,080 --> 00:21:38,330 Chúng ta nên tạo một nút mới ngay bây giờ hoặc chúng ta nên chờ đợi để chắc chắn rằng 423 00:21:38,330 --> 00:21:42,260 không có bản sao của nút trong danh sách trước khi chúng tôi tạo ra nó? 424 00:21:42,260 --> 00:21:43,100 >> JASON HIRSCHORN: Câu hỏi. 425 00:21:43,100 --> 00:21:47,770 Chúng ta hãy giữ mà cho sau này vì phần lớn thời gian chúng ta sẽ tạo ra 426 00:21:47,770 --> 00:21:48,220 một nút mới. 427 00:21:48,220 --> 00:21:49,110 Vì vậy, chúng tôi sẽ giữ cho rằng đây. 428 00:21:49,110 --> 00:21:51,006 Nhưng đó là một câu hỏi hay. 429 00:21:51,006 --> 00:21:53,250 Nếu chúng ta tạo ra nó và chúng ta tìm thấy một bản sao, những gì nên 430 00:21:53,250 --> 00:21:54,490 chúng tôi làm trước khi trở về? 431 00:21:54,490 --> 00:21:55,190 >> ĐỐI TƯỢNG: Miễn phí nó. 432 00:21:55,190 --> 00:21:55,470 >> JASON HIRSCHORN: Vâng. 433 00:21:55,470 --> 00:21:56,500 Có thể giải phóng nó. 434 00:21:56,500 --> 00:21:56,760 OK. 435 00:21:56,760 --> 00:21:59,850 Chúng ta phải làm gì sau khi chúng tôi tạo ra một nút mới? 436 00:21:59,850 --> 00:22:02,260 Annie? 437 00:22:02,260 --> 00:22:04,780 >> ĐỐI TƯỢNG: Chúng tôi đặt số trong nút? 438 00:22:04,780 --> 00:22:05,140 >> JASON HIRSCHORN: Chính xác. 439 00:22:05,140 --> 00:22:07,190 Chúng tôi đưa số - chúng tôi malloc không gian. 440 00:22:07,190 --> 00:22:08,160 Tôi sẽ rời khỏi đó tất cả như một dòng. 441 00:22:08,160 --> 00:22:08,720 Nhưng bạn nói đúng. 442 00:22:08,720 --> 00:22:10,305 Chúng tôi malloc không gian, và sau đó chúng tôi đặt số lượng in 443 00:22:10,305 --> 00:22:12,585 Chúng tôi thậm chí có thể đặt con trỏ một phần của nó để null. 444 00:22:12,585 --> 00:22:13,720 Đó chính quyền. 445 00:22:13,720 --> 00:22:17,400 Và sau đó những gì về sau không? 446 00:22:17,400 --> 00:22:18,490 Chúng tôi vẽ bức tranh này trên diễn đàn. 447 00:22:18,490 --> 00:22:21,190 Vì vậy, chúng ta làm gì? 448 00:22:21,190 --> 00:22:22,680 >> ĐỐI TƯỢNG: Chúng tôi đi qua danh sách. 449 00:22:22,680 --> 00:22:23,930 >> JASON HIRSCHORN: Đi qua danh sách. 450 00:22:23,930 --> 00:22:30,620 451 00:22:30,620 --> 00:22:31,100 OK. 452 00:22:31,100 --> 00:22:34,280 Và làm những gì chúng tôi kiểm tra tại mỗi nút. 453 00:22:34,280 --> 00:22:35,955 Kurt, những gì chúng tôi kiểm tra cho tại mỗi nút? 454 00:22:35,955 --> 00:22:41,640 >> ĐỐI TƯỢNG: Xem liệu giá trị của n nút đó là lớn hơn giá trị n 455 00:22:41,640 --> 00:22:43,070 của nút của chúng tôi. 456 00:22:43,070 --> 00:22:43,340 >> JASON HIRSCHORN: OK. 457 00:22:43,340 --> 00:22:44,280 Tôi sẽ làm - 458 00:22:44,280 --> 00:22:45,855 yeah, OK. 459 00:22:45,855 --> 00:22:48,160 Vì vậy, nó là n - 460 00:22:48,160 --> 00:22:59,040 Tôi sẽ nói rằng nếu giá trị lớn hơn nút này, sau đó chúng ta làm gì? 461 00:22:59,040 --> 00:23:07,290 >> ĐỐI TƯỢNG: Vâng, sau đó chúng ta chèn điều ngay trước đó. 462 00:23:07,290 --> 00:23:07,970 >> JASON HIRSCHORN: OK. 463 00:23:07,970 --> 00:23:09,410 Vì vậy, nếu nó lớn hơn này, sau đó chúng tôi muốn chèn. 464 00:23:09,410 --> 00:23:14,010 Nhưng chúng tôi muốn chèn nó ngay trước khi bởi vì chúng tôi cũng sẽ cần phải được 465 00:23:14,010 --> 00:23:16,070 theo dõi, sau đó, những gì trước đây. 466 00:23:16,070 --> 00:23:22,690 Vì vậy, trước khi chèn. 467 00:23:22,690 --> 00:23:25,120 Vì vậy, chúng ta có thể bỏ qua một cái gì đó trước đây về. 468 00:23:25,120 --> 00:23:27,770 Chúng tôi có lẽ cần phải được giữ theo dõi những gì đang xảy ra. 469 00:23:27,770 --> 00:23:28,460 Nhưng chúng tôi sẽ lấy lại ở đó. 470 00:23:28,460 --> 00:23:30,160 Vì vậy, những gì giá trị nhỏ hơn? 471 00:23:30,160 --> 00:23:38,030 472 00:23:38,030 --> 00:23:39,710 Kurt, chúng ta làm gì nếu giá trị nhỏ hơn? 473 00:23:39,710 --> 00:23:43,000 >> ĐỐI TƯỢNG: Sau đó, bạn chỉ cần tiếp tục đi trừ khi đó là người cuối cùng. 474 00:23:43,000 --> 00:23:43,550 >> JASON HIRSCHORN: Tôi thích điều đó. 475 00:23:43,550 --> 00:23:44,800 Vì vậy, đi đến nút tiếp theo. 476 00:23:44,800 --> 00:23:47,410 477 00:23:47,410 --> 00:23:48,930 Trừ khi đó là tác phẩm mới nhất - 478 00:23:48,930 --> 00:23:51,100 có lẽ chúng tôi đang kiểm tra cho rằng trong các điều khoản của một điều kiện. 479 00:23:51,100 --> 00:23:54,870 Nhưng yeah, nút tiếp theo. 480 00:23:54,870 --> 00:23:58,680 Và đó là nhận được quá thấp, vì vậy chúng tôi sẽ di chuyển qua đây. 481 00:23:58,680 --> 00:24:02,030 Nhưng nếu - 482 00:24:02,030 --> 00:24:03,280 tất cả mọi người có thể thấy điều này? 483 00:24:03,280 --> 00:24:07,230 484 00:24:07,230 --> 00:24:11,610 Nếu chúng ta bằng những gì chúng ta làm gì? 485 00:24:11,610 --> 00:24:15,740 Nếu giá trị, chúng tôi đang cố gắng để chèn bằng giá trị của nút này? 486 00:24:15,740 --> 00:24:16,320 Yeah? 487 00:24:16,320 --> 00:24:18,400 >> ĐỐI TƯỢNG: [nghe được]. 488 00:24:18,400 --> 00:24:18,850 >> JASON HIRSCHORN: Vâng. 489 00:24:18,850 --> 00:24:19,290 Vì điều này - 490 00:24:19,290 --> 00:24:20,090 Marcus là đúng. 491 00:24:20,090 --> 00:24:21,330 Chúng ta có thể có thể thực hiện một cái gì đó khác nhau. 492 00:24:21,330 --> 00:24:25,360 Nhưng cho rằng chúng tôi đã tạo ra nó, đây chúng ta nên giải phóng và sau đó quay trở lại. 493 00:24:25,360 --> 00:24:26,774 Oh boy. 494 00:24:26,774 --> 00:24:30,080 Là tốt hơn? 495 00:24:30,080 --> 00:24:31,850 Làm thế nào vậy? 496 00:24:31,850 --> 00:24:33,100 OK. 497 00:24:33,100 --> 00:24:35,360 498 00:24:35,360 --> 00:24:37,640 Miễn phí và sau đó làm những gì chúng tôi trở lại, [không nghe được]? 499 00:24:37,640 --> 00:24:41,330 500 00:24:41,330 --> 00:24:44,110 OK. 501 00:24:44,110 --> 00:24:45,360 Chúng ta đang thiếu gì? 502 00:24:45,360 --> 00:24:53,500 503 00:24:53,500 --> 00:24:59,650 Vì vậy, nơi được chúng tôi theo dõi của nút trước? 504 00:24:59,650 --> 00:25:02,370 >> ĐỐI TƯỢNG: Tôi nghĩ rằng nó sẽ đi sau khi tạo ra một nút mới. 505 00:25:02,370 --> 00:25:02,600 >> JASON HIRSCHORN: OK. 506 00:25:02,600 --> 00:25:03,940 Vì vậy, ngay từ đầu chúng ta sẽ có thể - 507 00:25:03,940 --> 00:25:07,175 yeah, chúng tôi có thể tạo ra một con trỏ đến một mới nút, giống như một con trỏ nút trước và 508 00:25:07,175 --> 00:25:09,600 một nút con trỏ hiện hành. 509 00:25:09,600 --> 00:25:12,640 Vì vậy, hãy chèn đó ở đây. 510 00:25:12,640 --> 00:25:15,610 511 00:25:15,610 --> 00:25:26,900 Tạo hiện tại và trước con trỏ đến các nút. 512 00:25:26,900 --> 00:25:28,955 Nhưng khi chúng ta điều chỉnh những con trỏ? 513 00:25:28,955 --> 00:25:30,205 Nơi nào chúng ta làm điều đó trong các mã? 514 00:25:30,205 --> 00:25:33,830 515 00:25:33,830 --> 00:25:34,160 Jeff? 516 00:25:34,160 --> 00:25:35,170 >> ĐỐI TƯỢNG: - Điều kiện giá trị? 517 00:25:35,170 --> 00:25:36,420 >> JASON HIRSCHORN: Những một đặc biệt? 518 00:25:36,420 --> 00:25:39,862 519 00:25:39,862 --> 00:25:40,720 >> ĐỐI TƯỢNG: Tôi chỉ nhầm lẫn. 520 00:25:40,720 --> 00:25:44,200 Nếu giá trị lớn hơn nút này, không có nghĩa là bạn muốn đi 521 00:25:44,200 --> 00:25:45,320 đến nút tiếp theo? 522 00:25:45,320 --> 00:25:49,515 >> JASON Hirschhorn: Vì vậy, nếu giá trị của chúng tôi là lớn hơn giá trị của nút này. 523 00:25:49,515 --> 00:25:52,130 >> ĐỐI TƯỢNG: Vâng, sau đó bạn muốn đi xa hơn xuống dòng, phải không? 524 00:25:52,130 --> 00:25:52,590 >> JASON Hirschhorn: Đúng vậy. 525 00:25:52,590 --> 00:25:53,840 Vì vậy, chúng tôi không chèn nó ở đây. 526 00:25:53,840 --> 00:25:58,430 527 00:25:58,430 --> 00:26:03,240 Nếu giá trị nhỏ hơn nút này, sau đó chúng tôi đi đến nút tiếp theo - hoặc sau đó chúng tôi 528 00:26:03,240 --> 00:26:03,835 chèn trước. 529 00:26:03,835 --> 00:26:05,966 >> ĐỐI TƯỢNG: Chờ đợi, đó là này nút và đó là giá trị? 530 00:26:05,966 --> 00:26:08,510 531 00:26:08,510 --> 00:26:09,280 >> JASON Hirschhorn: Câu hỏi. 532 00:26:09,280 --> 00:26:13,260 Giá trị theo định nghĩa chức năng này là những gì chúng tôi đang đưa ra. 533 00:26:13,260 --> 00:26:16,910 Vì vậy, giá trị là số chúng ta đang đưa ra. 534 00:26:16,910 --> 00:26:21,120 Vì vậy, nếu giá trị nhỏ hơn này nút, chúng tôi cần thời gian để chèn. 535 00:26:21,120 --> 00:26:24,575 Nếu giá trị lớn hơn nút này, chúng tôi đi đến nút tiếp theo. 536 00:26:24,575 --> 00:26:26,790 Và quay trở lại câu hỏi ban đầu, Mặc dù vậy, nơi - 537 00:26:26,790 --> 00:26:29,060 >> ĐỐI TƯỢNG: Nếu giá trị lớn hơn nút này. 538 00:26:29,060 --> 00:26:30,310 >> JASON Hirschhorn: Và như vậy chúng ta làm gì đây? 539 00:26:30,310 --> 00:26:36,790 540 00:26:36,790 --> 00:26:38,160 Ngọt ngào. 541 00:26:38,160 --> 00:26:38,860 Đó là chính xác. 542 00:26:38,860 --> 00:26:41,370 Tôi chỉ sẽ viết cập nhật con trỏ. 543 00:26:41,370 --> 00:26:44,010 Nhưng có, với hiện tại bạn sẽ cập nhật nó để 544 00:26:44,010 --> 00:26:46,080 trỏ đến kế tiếp. 545 00:26:46,080 --> 00:26:47,330 Bất cứ điều gì khác chúng ta đang thiếu? 546 00:26:47,330 --> 00:26:52,710 547 00:26:52,710 --> 00:26:54,940 Vì vậy tôi sẽ để kiểu này mã vào gedit. 548 00:26:54,940 --> 00:26:58,375 Và trong khi tôi làm điều này, bạn có thể có một vài phút nữa để làm việc trên mã hóa 549 00:26:58,375 --> 00:28:19,240 này trong C. 550 00:28:19,240 --> 00:28:20,940 >> Vì vậy, tôi có nhập giả. 551 00:28:20,940 --> 00:28:22,940 Một lưu ý trước khi chúng ta bắt đầu. 552 00:28:22,940 --> 00:28:25,560 Chúng tôi có thể không có khả năng hoàn toàn hoàn thành điều này trong tất cả các 553 00:28:25,560 --> 00:28:27,300 ba chức năng này. 554 00:28:27,300 --> 00:28:30,630 Có giải pháp đúng cho họ mà tôi sẽ gửi email ra đến với bạn 555 00:28:30,630 --> 00:28:33,730 sau khi phần, và nó sẽ được đăng tải trên CS50.net. 556 00:28:33,730 --> 00:28:35,640 Vì vậy tôi không khuyến khích bạn hãy nhìn vào các phần. 557 00:28:35,640 --> 00:28:40,550 Tôi khuyến khích bạn hãy thử các trên của bạn sở hữu, và sau đó sử dụng các thực hành 558 00:28:40,550 --> 00:28:41,760 vấn đề để kiểm tra câu trả lời của bạn. 559 00:28:41,760 --> 00:28:47,070 Những tất cả đều được thiết kế chặt chẽ liên quan đến và tuân thủ những gì 560 00:28:47,070 --> 00:28:48,400 bạn phải làm trong bộ vấn đề. 561 00:28:48,400 --> 00:28:53,820 Vì vậy, tôi khuyến khích bạn thực hành này ngày của riêng bạn và sau đó sử dụng mã để 562 00:28:53,820 --> 00:28:54,660 kiểm tra câu trả lời của bạn. 563 00:28:54,660 --> 00:28:57,060 Bởi vì tôi muốn chuyển sang băm bảng tại một số điểm trong phần này. 564 00:28:57,060 --> 00:28:58,150 Vì vậy, chúng ta có thể không vượt qua được tất cả. 565 00:28:58,150 --> 00:28:59,960 Nhưng chúng tôi sẽ làm càng nhiều chúng tôi có thể bây giờ. 566 00:28:59,960 --> 00:29:00,370 >> OK. 567 00:29:00,370 --> 00:29:01,960 Chúng ta hãy bắt đầu. 568 00:29:01,960 --> 00:29:04,770 Asam, làm thế nào để chúng ta tạo ra một nút mới? 569 00:29:04,770 --> 00:29:06,810 >> ĐỐI TƯỢNG: Bạn struct *. 570 00:29:06,810 --> 00:29:09,640 >> JASON Hirschhorn: Vì vậy, chúng tôi có mà lên đây. 571 00:29:09,640 --> 00:29:10,040 Oh, xin lỗi. 572 00:29:10,040 --> 00:29:13,530 Bạn đang nói cấu trúc *. 573 00:29:13,530 --> 00:29:17,260 >> ĐỐI TƯỢNG: Và sau đó [? loại?] hay nút c. 574 00:29:17,260 --> 00:29:17,780 >> JASON Hirschhorn: OK. 575 00:29:17,780 --> 00:29:19,740 Tôi sẽ gọi nó là new_node vì vậy chúng tôi có thể ở lại quán. 576 00:29:19,740 --> 00:29:22,646 577 00:29:22,646 --> 00:29:33,180 >> ĐỐI TƯỢNG: Và bạn muốn thiết lập mà đứng đầu, nút đầu tiên. 578 00:29:33,180 --> 00:29:33,580 >> JASON Hirschhorn: OK. 579 00:29:33,580 --> 00:29:37,290 Vì vậy bây giờ trỏ này - vì vậy đây đã không tạo ra một nút mới được nêu ra. 580 00:29:37,290 --> 00:29:41,380 Đây chỉ là chỉ tới nút đầu tiên trong danh sách. 581 00:29:41,380 --> 00:29:42,630 Làm thế nào để tạo ra một nút mới? 582 00:29:42,630 --> 00:29:45,490 583 00:29:45,490 --> 00:29:48,070 Nếu tôi cần không gian để tạo ra một nút mới. 584 00:29:48,070 --> 00:29:49,230 Malloc. 585 00:29:49,230 --> 00:29:51,710 Và lớn như thế nào? 586 00:29:51,710 --> 00:30:00,390 >> ĐỐI TƯỢNG: Kích thước của cấu trúc. 587 00:30:00,390 --> 00:30:01,150 >> JASON Hirschhorn: Các kích thước của các cấu trúc. 588 00:30:01,150 --> 00:30:02,400 Và những gì các cấu trúc được gọi là? 589 00:30:02,400 --> 00:30:09,670 590 00:30:09,670 --> 00:30:09,840 >> ĐỐI TƯỢNG: Node? 591 00:30:09,840 --> 00:30:11,640 >> JASON Hirschhorn: Node. 592 00:30:11,640 --> 00:30:17,640 Vì vậy, malloc (sizeof (node)); cho chúng ta không gian. 593 00:30:17,640 --> 00:30:19,740 Và là dòng này - 594 00:30:19,740 --> 00:30:21,740 có một điều không chính xác trên dòng này. 595 00:30:21,740 --> 00:30:24,430 Là new_node một con trỏ đến một cấu trúc? 596 00:30:24,430 --> 00:30:25,650 Đó là một tên chung. 597 00:30:25,650 --> 00:30:26,520 Nó là gì - 598 00:30:26,520 --> 00:30:27,450 nút, chính xác. 599 00:30:27,450 --> 00:30:29,340 Đó là một nút *. 600 00:30:29,340 --> 00:30:33,010 Và làm những gì chúng tôi làm ngay sau khi chúng tôi malloc một cái gì đó, Asan? 601 00:30:33,010 --> 00:30:34,476 Điều đầu tiên chúng tôi làm là những gì? 602 00:30:34,476 --> 00:30:38,850 603 00:30:38,850 --> 00:30:40,320 Nếu nó không hoạt động? 604 00:30:40,320 --> 00:30:42,430 >> ĐỐI TƯỢNG: Oh, kiểm tra xem nó chỉ đến nút? 605 00:30:42,430 --> 00:30:43,310 >> JASON Hirschhorn: Chính xác. 606 00:30:43,310 --> 00:30:46,750 Vì vậy, nếu bạn new_node bằng bình đẳng null, chúng ta làm gì? 607 00:30:46,750 --> 00:30:51,650 608 00:30:51,650 --> 00:30:54,820 Này trả về một bool, chức năng này. 609 00:30:54,820 --> 00:30:57,760 Chính xác. 610 00:30:57,760 --> 00:30:58,450 Có vẻ tốt. 611 00:30:58,450 --> 00:30:59,680 Bất cứ điều gì thêm không? 612 00:30:59,680 --> 00:31:00,670 Chúng tôi sẽ thêm những điều ở cuối. 613 00:31:00,670 --> 00:31:03,160 Nhưng cho đến nay có vẻ tốt. 614 00:31:03,160 --> 00:31:06,170 Tạo con trỏ hiện tại và trước đó. 615 00:31:06,170 --> 00:31:08,650 Michael, làm thế nào để làm điều này? 616 00:31:08,650 --> 00:31:12,810 >> ĐỐI TƯỢNG: Bạn sẽ phải để làm một nút *. 617 00:31:12,810 --> 00:31:21,800 618 00:31:21,800 --> 00:31:25,502 Bạn phải làm cho người ta không cho new_node nhưng đối với các 619 00:31:25,502 --> 00:31:26,905 các nút chúng tôi đã có. 620 00:31:26,905 --> 00:31:27,230 >> JASON Hirschhorn: OK. 621 00:31:27,230 --> 00:31:29,255 Vì vậy, các nút hiện tại chúng tôi đang ở trên. 622 00:31:29,255 --> 00:31:30,505 Tôi sẽ gọi Curr đó. 623 00:31:30,505 --> 00:31:39,650 624 00:31:39,650 --> 00:31:39,770 Được rồi. 625 00:31:39,770 --> 00:31:41,620 Chúng tôi đã quyết định chúng ta muốn giữ hai bởi vì chúng ta cần phải biết 626 00:31:41,620 --> 00:31:42,870 những gì trước khi nó. 627 00:31:42,870 --> 00:31:45,770 628 00:31:45,770 --> 00:31:47,020 Những gì họ nhận được khởi tạo? 629 00:31:47,020 --> 00:31:49,874 630 00:31:49,874 --> 00:31:54,180 >> ĐỐI TƯỢNG: giá trị của họ trong danh sách của chúng tôi. 631 00:31:54,180 --> 00:31:58,090 >> JASON Hirschhorn: là Vì vậy, những gì Điều đầu tiên trong danh sách của chúng tôi? 632 00:31:58,090 --> 00:32:04,050 Hoặc làm thế nào để chúng ta biết nơi bắt đầu của danh sách của chúng tôi là? 633 00:32:04,050 --> 00:32:08,015 >> ĐỐI TƯỢNG: Không phải là nó thông qua vào chức năng? 634 00:32:08,015 --> 00:32:08,466 >> JASON Hirschhorn: Đúng vậy. 635 00:32:08,466 --> 00:32:09,716 Nó đã được thông qua trong ngay tại đây. 636 00:32:09,716 --> 00:32:15,910 637 00:32:15,910 --> 00:32:18,980 Vì vậy, nếu nó được thông qua vào chức năng, bắt đầu của danh sách, chúng tôi những gì nên 638 00:32:18,980 --> 00:32:21,270 thiết lập hiện tại bằng? 639 00:32:21,270 --> 00:32:22,110 >> ĐỐI TƯỢNG: Danh sách. 640 00:32:22,110 --> 00:32:22,900 >> JASON Hirschhorn: Danh sách. 641 00:32:22,900 --> 00:32:24,090 Đó chính quyền. 642 00:32:24,090 --> 00:32:26,290 Bây giờ nó có địa chỉ của khi bắt đầu danh sách của chúng tôi. 643 00:32:26,290 --> 00:32:28,450 Và những gì về trước? 644 00:32:28,450 --> 00:32:31,920 >> ĐỐI TƯỢNG: Danh sách trừ một? 645 00:32:31,920 --> 00:32:32,690 >> JASON Hirschhorn: Có không có gì trước khi nó. 646 00:32:32,690 --> 00:32:34,580 Vì vậy, những gì chúng tôi có thể làm cho sự không có gì? 647 00:32:34,580 --> 00:32:35,050 >> ĐỐI TƯỢNG: Null. 648 00:32:35,050 --> 00:32:35,450 >> JASON Hirschhorn: Vâng. 649 00:32:35,450 --> 00:32:37,950 Nghe có vẻ như một ý tưởng tốt. 650 00:32:37,950 --> 00:32:38,360 Hoàn hảo. 651 00:32:38,360 --> 00:32:39,630 Cảm ơn bạn. 652 00:32:39,630 --> 00:32:42,850 Đi qua danh sách. 653 00:32:42,850 --> 00:32:45,490 Constantine, chúng ta sẽ mất bao lâu đi qua danh sách? 654 00:32:45,490 --> 00:32:49,010 >> ĐỐI TƯỢNG: Cho đến khi chúng tôi đạt được null. 655 00:32:49,010 --> 00:32:49,390 >> JASON Hirschhorn: OK. 656 00:32:49,390 --> 00:32:50,430 Vì vậy, nếu, trong khi, cho vòng lặp. 657 00:32:50,430 --> 00:32:52,200 Chúng tôi đang làm những gì? 658 00:32:52,200 --> 00:32:53,320 >> ĐỐI TƯỢNG: Có lẽ một vòng lặp? 659 00:32:53,320 --> 00:32:53,910 >> JASON Hirschhorn: Hãy làm một vòng lặp. 660 00:32:53,910 --> 00:32:55,870 OK. 661 00:32:55,870 --> 00:33:02,465 >> ĐỐI TƯỢNG: Và chúng ta nói cho - 662 00:33:02,465 --> 00:33:09,764 663 00:33:09,764 --> 00:33:13,390 cho đến khi con trỏ hiện tại không bằng null. 664 00:33:13,390 --> 00:33:19,160 >> JASON Hirschhorn: Vì vậy, nếu chúng ta biết điều kiện, làm thế nào chúng ta có thể viết một vòng lặp 665 00:33:19,160 --> 00:33:21,740 dựa tắt tình trạng đó. 666 00:33:21,740 --> 00:33:24,380 Loại một vòng lặp chúng ta nên sử dụng? 667 00:33:24,380 --> 00:33:25,260 >> ĐỐI TƯỢNG: Trong khi. 668 00:33:25,260 --> 00:33:25,590 >> JASON Hirschhorn: Vâng. 669 00:33:25,590 --> 00:33:27,130 Có ý nghĩa hơn dựa tắt của những gì bạn nói. 670 00:33:27,130 --> 00:33:29,430 Nếu chúng ta chỉ muốn đi vào chúng tôi nó sẽ chỉ biết điều đó, nó sẽ làm cho 671 00:33:29,430 --> 00:33:31,680 tinh thần để làm một vòng lặp while. 672 00:33:31,680 --> 00:33:39,880 Trong khi hiện tại không rỗng không bằng nhau, nếu giá trị nhỏ hơn nút này. 673 00:33:39,880 --> 00:33:41,650 Akshar, cho tôi dòng này. 674 00:33:41,650 --> 00:33:48,810 675 00:33:48,810 --> 00:33:56,955 >> ĐỐI TƯỢNG: Nếu hiện tại-> n n thấp hơn giá trị. 676 00:33:56,955 --> 00:34:00,170 677 00:34:00,170 --> 00:34:03,260 Hoặc đảo ngược. 678 00:34:03,260 --> 00:34:06,140 Chuyển khung đó. 679 00:34:06,140 --> 00:34:06,620 >> JASON Hirschhorn: Xin lỗi. 680 00:34:06,620 --> 00:34:08,760 >> ĐỐI TƯỢNG: Thay đổi khung. 681 00:34:08,760 --> 00:34:10,914 >> JASON Hirschhorn: Vì vậy, nếu nó lớn hơn giá trị. 682 00:34:10,914 --> 00:34:18,719 683 00:34:18,719 --> 00:34:22,120 Bởi vì đó là gây nhầm lẫn với các bình luận ở trên, tôi sẽ làm điều đó. 684 00:34:22,120 --> 00:34:22,480 Nhưng có. 685 00:34:22,480 --> 00:34:25,125 Nếu giá trị của chúng tôi là ít hơn này nút, chúng ta làm gì? 686 00:34:25,125 --> 00:34:25,540 Oh. 687 00:34:25,540 --> 00:34:26,710 Tôi có nó ở đây. 688 00:34:26,710 --> 00:34:27,960 Chèn trước. 689 00:34:27,960 --> 00:34:32,080 690 00:34:32,080 --> 00:34:32,370 OK. 691 00:34:32,370 --> 00:34:33,933 Làm thế nào để chúng tôi làm điều đó? 692 00:34:33,933 --> 00:34:34,900 >> ĐỐI TƯỢNG: Là nó vẫn còn tôi? 693 00:34:34,900 --> 00:34:36,150 >> JASON Hirschhorn: Vâng. 694 00:34:36,150 --> 00:34:38,520 695 00:34:38,520 --> 00:34:39,770 >> ĐỐI TƯỢNG: Bạn - 696 00:34:39,770 --> 00:34:42,909 697 00:34:42,909 --> 00:34:44,159 new_node-> tiếp theo. 698 00:34:44,159 --> 00:34:46,770 699 00:34:46,770 --> 00:34:50,163 >> JASON Hirschhorn: Vậy điều gì mà sẽ bằng? 700 00:34:50,163 --> 00:34:52,070 >> ĐỐI TƯỢNG: Nó sẽ hiện bình đẳng. 701 00:34:52,070 --> 00:34:53,889 >> JASON Hirschhorn: Chính xác. 702 00:34:53,889 --> 00:34:55,730 Và do đó khác - 703 00:34:55,730 --> 00:34:56,730 những gì khác chúng ta cần phải cập nhật? 704 00:34:56,730 --> 00:34:59,982 >> ĐỐI TƯỢNG: Kiểm tra xem trong quá khứ bằng null. 705 00:34:59,982 --> 00:35:01,870 >> JASON Hirschhorn: Nếu prev - 706 00:35:01,870 --> 00:35:03,730 vì vậy nếu trước bằng null. 707 00:35:03,730 --> 00:35:05,990 >> ĐỐI TƯỢNG: Điều đó có nghĩa nó sẽ để trở thành người đứng đầu. 708 00:35:05,990 --> 00:35:06,780 >> JASON Hirschhorn: phương tiện đó nó đã trở thành người đứng đầu. 709 00:35:06,780 --> 00:35:07,620 Vì vậy, sau đó chúng ta làm gì? 710 00:35:07,620 --> 00:35:12,510 >> ĐỐI TƯỢNG: Chúng tôi đầu bằng new_node. 711 00:35:12,510 --> 00:35:16,690 >> JASON Hirschhorn: Head bằng new_node. 712 00:35:16,690 --> 00:35:20,540 Và tại sao đi đây, không liệt kê? 713 00:35:20,540 --> 00:35:24,940 >> ĐỐI TƯỢNG: Bởi vì đầu là một toàn cầu biến, đó là nơi bắt đầu. 714 00:35:24,940 --> 00:35:26,190 >> JASON Hirschhorn: Sweet. 715 00:35:26,190 --> 00:35:33,750 716 00:35:33,750 --> 00:35:34,170 OK. 717 00:35:34,170 --> 00:35:36,150 Và - 718 00:35:36,150 --> 00:35:53,796 >> ĐỐI TƯỢNG: Sau đó, bạn khác prev-> tiếp theo bằng new_node. 719 00:35:53,796 --> 00:35:55,080 Và sau đó bạn trở thành sự thật. 720 00:35:55,080 --> 00:35:59,560 721 00:35:59,560 --> 00:36:02,700 >> JASON Hirschhorn: Nơi nào chúng tôi thiết lập new_node kết thúc? 722 00:36:02,700 --> 00:36:04,850 >> ĐỐI TƯỢNG: Tôi sẽ - 723 00:36:04,850 --> 00:36:06,180 Tôi thiết lập mà lúc đầu. 724 00:36:06,180 --> 00:36:07,430 >> JASON Hirschhorn: Vì vậy, những gì dòng? 725 00:36:07,430 --> 00:36:10,000 726 00:36:10,000 --> 00:36:12,598 >> ĐỐI TƯỢNG: Sau khi tuyên bố nếu kiểm tra nếu nó được biết đến. 727 00:36:12,598 --> 00:36:13,057 >> JASON Hirschhorn: Ngay ở đây? 728 00:36:13,057 --> 00:36:18,335 >> ĐỐI TƯỢNG: tôi muốn làm new_node-> n bằng giá trị. 729 00:36:18,335 --> 00:36:19,585 >> JASON Hirschhorn: Âm thanh tốt. 730 00:36:19,585 --> 00:36:21,740 731 00:36:21,740 --> 00:36:25,090 Có lẽ nó có ý nghĩa - chúng ta không cần biết danh sách những gì chúng ta đang ở trên 732 00:36:25,090 --> 00:36:26,280 bởi vì chúng tôi chỉ giao dịch với một danh sách. 733 00:36:26,280 --> 00:36:29,560 Do đó, một tuyên bố chức năng tốt hơn cho này chỉ là để thoát khỏi điều này 734 00:36:29,560 --> 00:36:34,360 hoàn toàn và chỉ cần chèn một giá trị vào đầu. 735 00:36:34,360 --> 00:36:35,930 Chúng tôi thậm chí không cần biết danh sách những gì chúng tôi đang nhập 736 00:36:35,930 --> 00:36:39,140 Nhưng tôi sẽ giữ nó cho bây giờ và sau đó thay đổi nó khi cập nhật 737 00:36:39,140 --> 00:36:42,590 các slide và mã số. 738 00:36:42,590 --> 00:36:44,980 Vì vậy, đó có vẻ tốt cho bây giờ. 739 00:36:44,980 --> 00:36:46,560 Nếu giá trị - những người có thể làm dòng này? 740 00:36:46,560 --> 00:36:47,810 Nếu - 741 00:36:47,810 --> 00:36:52,240 742 00:36:52,240 --> 00:36:53,840 chúng ta làm gì đây, Noah. 743 00:36:53,840 --> 00:36:57,890 744 00:36:57,890 --> 00:37:07,100 >> ĐỐI TƯỢNG: Nếu giá trị lớn hơn curr-> n - 745 00:37:07,100 --> 00:37:16,830 746 00:37:16,830 --> 00:37:18,240 >> JASON Hirschhorn: Làm thế nào chúng tôi đi đến nút tiếp theo? 747 00:37:18,240 --> 00:37:27,760 748 00:37:27,760 --> 00:37:30,530 >> ĐỐI TƯỢNG: Curr-> n là bằng new_node. 749 00:37:30,530 --> 00:37:37,630 750 00:37:37,630 --> 00:37:39,195 >> JASON Hirschhorn: Vì vậy, n là những gì một phần của cấu trúc? 751 00:37:39,195 --> 00:37:43,065 752 00:37:43,065 --> 00:37:46,020 Các số nguyên. 753 00:37:46,020 --> 00:37:50,420 Và new_node là một con trỏ đến một nút. 754 00:37:50,420 --> 00:37:51,880 Vì vậy, những gì một phần của Curr chúng ta nên cập nhật? 755 00:37:51,880 --> 00:38:03,900 756 00:38:03,900 --> 00:38:05,400 Nếu không n, sau đó một phần khác là gì? 757 00:38:05,400 --> 00:38:21,680 758 00:38:21,680 --> 00:38:22,810 Noah, nhưng phần khác là những gì. 759 00:38:22,810 --> 00:38:23,570 >> ĐỐI TƯỢNG: Oh, tiếp theo. 760 00:38:23,570 --> 00:38:25,645 >> JASON Hirschhorn: Tiếp theo, chính xác. 761 00:38:25,645 --> 00:38:26,410 Chính xác. 762 00:38:26,410 --> 00:38:28,770 Tiếp theo là một trong những quyền. 763 00:38:28,770 --> 00:38:31,540 Và những gì khác chúng ta cần để cập nhật, Noah? 764 00:38:31,540 --> 00:38:32,840 >> ĐỐI TƯỢNG: Các con trỏ. 765 00:38:32,840 --> 00:38:34,840 >> JASON Hirschhorn: Vì vậy, chúng tôi cập nhật hiện tại. 766 00:38:34,840 --> 00:38:36,090 >> ĐỐI TƯỢNG: Trước-> tiếp theo. 767 00:38:36,090 --> 00:38:48,160 768 00:38:48,160 --> 00:38:49,410 >> JASON Hirschhorn: Vâng. 769 00:38:49,410 --> 00:38:57,465 770 00:38:57,465 --> 00:38:58,370 OK, chúng tôi sẽ tạm dừng. 771 00:38:58,370 --> 00:39:02,200 Ai có thể giúp chúng ta ra khỏi đây? 772 00:39:02,200 --> 00:39:03,385 Manu, những gì chúng ta nên làm gì? 773 00:39:03,385 --> 00:39:05,615 >> ĐỐI TƯỢNG: Bạn đã có để thiết lập nó bằng curr-> tiếp theo. 774 00:39:05,615 --> 00:39:09,110 775 00:39:09,110 --> 00:39:11,630 Nhưng làm điều đó trước khi các dòng trước đó. 776 00:39:11,630 --> 00:39:12,880 >> JASON Hirschhorn: OK. 777 00:39:12,880 --> 00:39:16,590 778 00:39:16,590 --> 00:39:18,260 Bất cứ điều gì khác? 779 00:39:18,260 --> 00:39:19,170 Akshar. 780 00:39:19,170 --> 00:39:22,680 >> ĐỐI TƯỢNG: Tôi không nghĩ rằng bạn đang có nghĩa là để thay đổi curr-> tiếp theo. 781 00:39:22,680 --> 00:39:29,270 Tôi nghĩ rằng bạn đang có nghĩa là để làm bình đẳng Curr Curr-> tiếp theo để đi đến nút tiếp theo. 782 00:39:29,270 --> 00:39:30,500 >> JASON Hirschhorn: Vì vậy, xin lỗi, ở đâu? 783 00:39:30,500 --> 00:39:32,680 Trên những dòng? 784 00:39:32,680 --> 00:39:33,420 Dòng này? 785 00:39:33,420 --> 00:39:33,750 >> ĐỐI TƯỢNG: Vâng. 786 00:39:33,750 --> 00:39:35,745 Làm Curr bằng Curr-> tiếp theo. 787 00:39:35,745 --> 00:39:39,690 788 00:39:39,690 --> 00:39:43,360 >> JASON Hirschhorn: Vì vậy, đó là chính xác bởi vì hiện nay là một 789 00:39:43,360 --> 00:39:45,220 con trỏ đến một nút. 790 00:39:45,220 --> 00:39:48,550 Và chúng tôi muốn nó để trỏ đến tiếp theo nút của những gì đang nhận được hiện nay 791 00:39:48,550 --> 00:39:49,930 chỉ vào. 792 00:39:49,930 --> 00:39:54,410 Curr chính nó có một tiếp theo. 793 00:39:54,410 --> 00:39:58,620 Nhưng nếu chúng ta để cập nhật curr.next, chúng tôi sẽ được cập nhật ghi chú thực tế 794 00:39:58,620 --> 00:40:01,430 bản thân, không nơi này con trỏ đang chỉ. 795 00:40:01,430 --> 00:40:02,680 Những gì về dòng này, mặc dù. 796 00:40:02,680 --> 00:40:05,160 797 00:40:05,160 --> 00:40:07,330 Avi? 798 00:40:07,330 --> 00:40:09,590 >> ĐỐI TƯỢNG: Trước-> tiếp theo bằng Curr. 799 00:40:09,590 --> 00:40:12,500 800 00:40:12,500 --> 00:40:19,440 >> JASON Hirschhorn: Vì vậy, một lần nữa, nếu trước là một con trỏ tới một nút, trước-> tiếp theo là 801 00:40:19,440 --> 00:40:23,020 con trỏ thực tế trong nút. 802 00:40:23,020 --> 00:40:27,190 Vì vậy, điều này sẽ được cập nhật một con trỏ trong một nút để Curr. 803 00:40:27,190 --> 00:40:28,570 Chúng tôi không muốn để cập nhật một con trỏ trong một nút. 804 00:40:28,570 --> 00:40:30,570 Chúng tôi muốn để cập nhật trước đó. 805 00:40:30,570 --> 00:40:31,850 Vì vậy, làm thế nào để chúng tôi làm điều đó? 806 00:40:31,850 --> 00:40:34,250 >> ĐỐI TƯỢNG: Nó sẽ chỉ được prev. 807 00:40:34,250 --> 00:40:34,565 >> JASON Hirschhorn: Đúng vậy. 808 00:40:34,565 --> 00:40:35,560 Trước là một con trỏ đến một nút. 809 00:40:35,560 --> 00:40:38,750 Bây giờ chúng ta thay đổi nó vào một con trỏ mới đến một nút. 810 00:40:38,750 --> 00:40:40,830 OK Chúng ta hãy di chuyển xuống. 811 00:40:40,830 --> 00:40:41,940 Cuối cùng, tình trạng cuối cùng này. 812 00:40:41,940 --> 00:40:44,896 Jeff, chúng ta làm gì đây? 813 00:40:44,896 --> 00:40:47,515 >> ĐỐI TƯỢNG: Nếu giá trị bằng curr-> n. 814 00:40:47,515 --> 00:40:51,030 815 00:40:51,030 --> 00:40:51,300 >> JASON Hirschhorn: Xin lỗi. 816 00:40:51,300 --> 00:40:52,372 Ôi trời. 817 00:40:52,372 --> 00:40:54,330 Những gì? 818 00:40:54,330 --> 00:40:55,580 Giá trị == curr-> n. 819 00:40:55,580 --> 00:41:01,050 820 00:41:01,050 --> 00:41:02,300 Chúng ta phải làm gì? 821 00:41:02,300 --> 00:41:04,760 822 00:41:04,760 --> 00:41:10,950 >> ĐỐI TƯỢNG: Bạn muốn giải phóng new_node của chúng tôi, và sau đó bạn sẽ trả về false. 823 00:41:10,950 --> 00:41:21,410 824 00:41:21,410 --> 00:41:23,460 >> JASON Hirschhorn: Đây là những gì chúng ta đã viết cho đến nay. 825 00:41:23,460 --> 00:41:25,710 Không ai có bất cứ điều gì thêm trước khi chúng tôi thực hiện? 826 00:41:25,710 --> 00:41:35,460 827 00:41:35,460 --> 00:41:35,710 OK. 828 00:41:35,710 --> 00:41:36,960 Hãy thử nó. 829 00:41:36,960 --> 00:41:44,180 830 00:41:44,180 --> 00:41:46,110 Kiểm soát có thể đạt được kết thúc của một chức năng không có hiệu lực. 831 00:41:46,110 --> 00:41:48,310 Avi, những gì đang xảy ra? 832 00:41:48,310 --> 00:41:51,380 >> ĐỐI TƯỢNG: Bạn có nghĩa vụ phải đặt trở lại thật bên ngoài vòng lặp trong khi? 833 00:41:51,380 --> 00:41:53,900 834 00:41:53,900 --> 00:41:54,400 >> JASON Hirschhorn: Tôi không biết. 835 00:41:54,400 --> 00:41:54,780 Bạn có muốn tôi? 836 00:41:54,780 --> 00:41:55,520 >> ĐỐI TƯỢNG: Đừng bận tâm. 837 00:41:55,520 --> 00:41:56,350 Không. 838 00:41:56,350 --> 00:41:57,180 >> JASON Hirschhorn: Akshar? 839 00:41:57,180 --> 00:41:59,460 >> ĐỐI TƯỢNG: Tôi nghĩ rằng bạn có nghĩa là để đưa trở lại sai ở cuối 840 00:41:59,460 --> 00:42:02,230 của vòng lặp while. 841 00:42:02,230 --> 00:42:03,270 >> JASON Hirschhorn: Vì vậy, nơi Bạn muốn nó đi đâu? 842 00:42:03,270 --> 00:42:05,270 >> ĐỐI TƯỢNG: Giống như bên ngoài vòng lặp while. 843 00:42:05,270 --> 00:42:08,800 Vì vậy, nếu bạn thoát khỏi vòng lặp trong khi đó phương tiện mà bạn đã đạt đến cuối cùng và 844 00:42:08,800 --> 00:42:09,980 không có gì đã xảy ra. 845 00:42:09,980 --> 00:42:10,410 >> JASON Hirschhorn: OK. 846 00:42:10,410 --> 00:42:12,340 Vì vậy, chúng ta làm gì ở đây? 847 00:42:12,340 --> 00:42:13,702 >> ĐỐI TƯỢNG: Bạn trả về false cũng có. 848 00:42:13,702 --> 00:42:15,040 >> JASON Hirschhorn: Oh, chúng tôi làm điều đó trong cả hai nơi? 849 00:42:15,040 --> 00:42:15,650 >> ĐỐI TƯỢNG: Vâng. 850 00:42:15,650 --> 00:42:16,900 >> JASON Hirschhorn: OK. 851 00:42:16,900 --> 00:42:24,840 852 00:42:24,840 --> 00:42:26,160 Chúng ta nên đi đâu? 853 00:42:26,160 --> 00:42:26,980 Ôi trời. 854 00:42:26,980 --> 00:42:27,290 Tôi xin lỗi. 855 00:42:27,290 --> 00:42:28,480 Tôi xin lỗi vì màn hình. 856 00:42:28,480 --> 00:42:30,530 Nó loại freaking ra vào chúng tôi. 857 00:42:30,530 --> 00:42:31,520 Vì vậy, chọn một tùy chọn. 858 00:42:31,520 --> 00:42:35,260 Bằng không, mỗi mã, bỏ chương trình. 859 00:42:35,260 --> 00:42:36,700 Một cái gì đó chèn. 860 00:42:36,700 --> 00:42:37,990 Chúng ta hãy chèn ba. 861 00:42:37,990 --> 00:42:42,900 862 00:42:42,900 --> 00:42:45,380 Chèn đã không thành công. 863 00:42:45,380 --> 00:42:46,500 Tôi sẽ in ra. 864 00:42:46,500 --> 00:42:48,050 Tôi không có bất cứ điều gì. 865 00:42:48,050 --> 00:42:48,450 OK. 866 00:42:48,450 --> 00:42:50,250 Có lẽ đó chỉ là một sự may mắn. 867 00:42:50,250 --> 00:42:52,810 Chèn một. 868 00:42:52,810 --> 00:42:55,770 Không thành công. 869 00:42:55,770 --> 00:42:57,470 OK. 870 00:42:57,470 --> 00:43:02,400 Chúng ta hãy chạy qua GDB thực sự nhanh chóng để kiểm tra những gì đang xảy ra. 871 00:43:02,400 --> 00:43:06,055 >> Ghi gdb. / Tên của bạn chương trình được chúng tôi vào GDB. 872 00:43:06,055 --> 00:43:07,610 Là rất nhiều để xử lý? 873 00:43:07,610 --> 00:43:08,560 Nhấp nháy? 874 00:43:08,560 --> 00:43:10,400 Có thể. 875 00:43:10,400 --> 00:43:12,760 Nhắm mắt lại và có một số sâu hơi thở nếu bạn cảm thấy mệt mỏi 876 00:43:12,760 --> 00:43:13,580 nhìn vào nó. 877 00:43:13,580 --> 00:43:14,200 Tôi đang trong GDB. 878 00:43:14,200 --> 00:43:15,830 Điều đầu tiên tôi làm trong GDB là gì? 879 00:43:15,830 --> 00:43:17,050 Chúng ta phải tìm ra những gì đang xảy ra ở đây. 880 00:43:17,050 --> 00:43:17,310 Chúng ta hãy xem. 881 00:43:17,310 --> 00:43:21,650 Chúng tôi có sáu phút để con số ra những gì đang xảy ra. 882 00:43:21,650 --> 00:43:22,900 Phá vỡ chính. 883 00:43:22,900 --> 00:43:25,950 884 00:43:25,950 --> 00:43:28,130 Và sau đó tôi phải làm gì? 885 00:43:28,130 --> 00:43:29,180 Carlos? 886 00:43:29,180 --> 00:43:31,060 Chạy. 887 00:43:31,060 --> 00:43:32,250 OK. 888 00:43:32,250 --> 00:43:34,160 Hãy chọn một lựa chọn. 889 00:43:34,160 --> 00:43:36,330 Và những gì N làm gì? 890 00:43:36,330 --> 00:43:38,480 Tiếp theo. 891 00:43:38,480 --> 00:43:38,950 Yeah. 892 00:43:38,950 --> 00:43:39,740 >> ĐỐI TƯỢNG: Bạn đã không đề cập đến - 893 00:43:39,740 --> 00:43:45,230 bạn không nói rằng người đứng đầu, đó là khởi tạo null ở đầu. 894 00:43:45,230 --> 00:43:47,140 Nhưng tôi nghĩ bạn nói đó là OK. 895 00:43:47,140 --> 00:43:50,040 896 00:43:50,040 --> 00:43:52,640 >> JASON Hirschhorn: Hãy đi - chúng ta hãy xem trong GDB, và sau đó chúng tôi sẽ quay trở lại. 897 00:43:52,640 --> 00:43:54,910 Nhưng có vẻ như bạn đã có một số ý tưởng về những gì đang xảy ra. 898 00:43:54,910 --> 00:43:58,340 Vì vậy, chúng tôi muốn chèn một cái gì đó. 899 00:43:58,340 --> 00:43:59,390 OK. 900 00:43:59,390 --> 00:44:00,150 Chúng tôi đã chèn. 901 00:44:00,150 --> 00:44:00,770 Xin vui lòng nhập một int. 902 00:44:00,770 --> 00:44:01,990 Chúng tôi sẽ chèn ba. 903 00:44:01,990 --> 00:44:03,000 Và sau đó tôi đang trên đường này. 904 00:44:03,000 --> 00:44:07,030 Làm thế nào để tôi đi bắt đầu gỡ lỗi chèn chức năng được biết đến? 905 00:44:07,030 --> 00:44:08,280 Ôi trời. 906 00:44:08,280 --> 00:44:10,990 907 00:44:10,990 --> 00:44:12,240 Đó là rất nhiều. 908 00:44:12,240 --> 00:44:14,372 909 00:44:14,372 --> 00:44:16,445 Được rằng freaking ra rất nhiều? 910 00:44:16,445 --> 00:44:19,696 911 00:44:19,696 --> 00:44:21,680 >> ĐỐI TƯỢNG: Oh, nó đã chết. 912 00:44:21,680 --> 00:44:22,930 >> JASON Hirschhorn: Tôi chỉ kéo nó ra. 913 00:44:22,930 --> 00:44:27,364 914 00:44:27,364 --> 00:44:28,310 OK. 915 00:44:28,310 --> 00:44:29,560 >> ĐỐI TƯỢNG: Có lẽ đó là đầu kia của dây. 916 00:44:29,560 --> 00:44:37,000 917 00:44:37,000 --> 00:44:39,470 >> JASON Hirschhorn: Wow. 918 00:44:39,470 --> 00:44:42,330 Vì vậy, dòng dưới cùng - 919 00:44:42,330 --> 00:44:43,470 bạn đã nói những gì? 920 00:44:43,470 --> 00:44:46,040 >> ĐỐI TƯỢNG: Tôi nói sự trớ trêu của kỹ thuật khó khăn trong lớp học này. 921 00:44:46,040 --> 00:44:46,410 >> JASON Hirschhorn: Tôi biết. 922 00:44:46,410 --> 00:44:48,660 Nếu tôi có quyền kiểm soát một phần. 923 00:44:48,660 --> 00:44:49,910 [Nghe được] 924 00:44:49,910 --> 00:44:54,430 925 00:44:54,430 --> 00:44:55,400 Đó là âm thanh tuyệt vời. 926 00:44:55,400 --> 00:44:58,680 Tại sao cậu không bắt đầu nghĩ về những gì chúng tôi có thể đã làm sai, 927 00:44:58,680 --> 00:45:01,140 và chúng tôi sẽ trở lại trong 90 giây. 928 00:45:01,140 --> 00:46:18,160 929 00:46:18,160 --> 00:46:23,010 >> Avica, tôi sẽ yêu cầu bạn làm thế nào để đi insert_node bên trong để gỡ lỗi nó. 930 00:46:23,010 --> 00:46:28,940 931 00:46:28,940 --> 00:46:31,460 Vì vậy, đây là nơi mà chúng tôi cuối cùng rời đi. 932 00:46:31,460 --> 00:46:35,110 Làm thế nào để đi vào bên trong insert_node, Avica, để kiểm tra những gì đang xảy ra? 933 00:46:35,110 --> 00:46:36,360 Lệnh gì GDB? 934 00:46:36,360 --> 00:46:41,050 935 00:46:41,050 --> 00:46:42,390 Phá vỡ sẽ không đưa tôi vào bên trong. 936 00:46:42,390 --> 00:46:46,200 937 00:46:46,200 --> 00:46:47,130 Không Marquise biết? 938 00:46:47,130 --> 00:46:48,240 >> ĐỐI TƯỢNG: Cái gì? 939 00:46:48,240 --> 00:46:51,780 >> JASON Hirschhorn: Lệnh gì GDB Tôi sử dụng để đi vào bên trong chức năng này? 940 00:46:51,780 --> 00:46:52,070 >> ĐỐI TƯỢNG: Bước? 941 00:46:52,070 --> 00:46:55,140 >> JASON Hirschhorn: Bước qua S. Điều đó có tôi bên trong. 942 00:46:55,140 --> 00:46:55,476 OK. 943 00:46:55,476 --> 00:46:58,040 New_node mallocing một số không gian. 944 00:46:58,040 --> 00:46:59,120 Rằng tất cả trông giống như đi của nó. 945 00:46:59,120 --> 00:47:00,370 Hãy kiểm tra new_node. 946 00:47:00,370 --> 00:47:03,270 947 00:47:03,270 --> 00:47:05,410 Nó có một số địa chỉ bộ nhớ. 948 00:47:05,410 --> 00:47:07,440 Hãy kiểm tra - 949 00:47:07,440 --> 00:47:08,500 đó là tất cả đúng. 950 00:47:08,500 --> 00:47:12,220 Vì vậy, tất cả mọi thứ ở đây có vẻ được làm việc một cách chính xác. 951 00:47:12,220 --> 00:47:14,530 >> ĐỐI TƯỢNG: sự khác biệt là gì giữa P và màn hình hiển thị? 952 00:47:14,530 --> 00:47:16,160 >> JASON Hirschhorn: P là viết tắt của in ấn. 953 00:47:16,160 --> 00:47:19,310 Và do đó, bạn đang yêu cầu những gì là sự khác biệt giữa đó và điều này? 954 00:47:19,310 --> 00:47:22,330 Trong trường hợp này, không có gì. 955 00:47:22,330 --> 00:47:26,960 Nhưng nói chung có một số khác biệt. 956 00:47:26,960 --> 00:47:28,220 Và bạn nên tìm trong hướng dẫn GDB. 957 00:47:28,220 --> 00:47:29,560 Nhưng trong trường hợp này, không có gì. 958 00:47:29,560 --> 00:47:31,460 Chúng ta có xu hướng sử dụng in ấn, tuy nhiên, vì chúng tôi không cần phải làm nhiều hơn 959 00:47:31,460 --> 00:47:33,960 in một giá trị duy nhất. 960 00:47:33,960 --> 00:47:34,640 >> OK. 961 00:47:34,640 --> 00:47:40,300 Vì vậy, chúng tôi đang trên đường 80 của mã của chúng tôi, thiết lập node * Curr bằng danh sách. 962 00:47:40,300 --> 00:47:42,500 Chúng ta hãy in ra Curr. 963 00:47:42,500 --> 00:47:45,260 964 00:47:45,260 --> 00:47:46,840 Nó tương đương với danh sách. 965 00:47:46,840 --> 00:47:48,850 Ngọt ngào. 966 00:47:48,850 --> 00:47:49,340 Chờ đợi. 967 00:47:49,340 --> 00:47:50,590 Nó bằng một cái gì đó. 968 00:47:50,590 --> 00:47:53,680 969 00:47:53,680 --> 00:47:56,190 Điều đó dường như không đúng. 970 00:47:56,190 --> 00:47:56,840 Có chúng tôi đi. 971 00:47:56,840 --> 00:47:59,470 Đó là bởi vì trong GDB, phải, nếu đó là dòng bạn đang ở trên nó 972 00:47:59,470 --> 00:48:00,330 đã không được thực hiện được nêu ra. 973 00:48:00,330 --> 00:48:03,100 Vì vậy, bạn cần phải thực sự gõ bên cạnh thực thi các dòng 974 00:48:03,100 --> 00:48:05,230 trước khi nhìn thấy kết quả của nó. 975 00:48:05,230 --> 00:48:06,680 Vì vậy, ở đây chúng tôi đang có. 976 00:48:06,680 --> 00:48:09,490 Chúng tôi chỉ thực hiện dòng này, trước bằng null. 977 00:48:09,490 --> 00:48:13,590 Vì vậy, một lần nữa, nếu chúng ta in trước chúng ta sẽ không nhìn thấy bất cứ điều gì kỳ lạ. 978 00:48:13,590 --> 00:48:18,680 Nhưng nếu chúng ta thực sự thực hiện mà dòng, sau đó chúng ta sẽ thấy 979 00:48:18,680 --> 00:48:20,380 dòng mà làm việc. 980 00:48:20,380 --> 00:48:21,060 >> Vì vậy, chúng tôi có Curr. 981 00:48:21,060 --> 00:48:23,180 Đó là cả hai tốt. 982 00:48:23,180 --> 00:48:24,010 Phải không? 983 00:48:24,010 --> 00:48:28,130 Bây giờ chúng ta đang ở trên dòng này ngay tại đây. 984 00:48:28,130 --> 00:48:29,310 Trong khi Curr không làm vô giá trị như nhau. 985 00:48:29,310 --> 00:48:31,110 Vâng, những gì hiện Curr bằng nhau? 986 00:48:31,110 --> 00:48:32,450 Chúng tôi chỉ thấy nó tương đương null. 987 00:48:32,450 --> 00:48:33,210 Chúng tôi in nó ra. 988 00:48:33,210 --> 00:48:35,110 Tôi sẽ in ra một lần nữa. 989 00:48:35,110 --> 00:48:36,720 Vì vậy, là trong khi vòng lặp sẽ thực hiện? 990 00:48:36,720 --> 00:48:37,270 >> ĐỐI TƯỢNG: số 991 00:48:37,270 --> 00:48:39,790 >> JASON Hirschhorn: Vì vậy, khi tôi đánh máy mà dòng, bạn sẽ thấy chúng tôi đã tăng tất cả các cách 992 00:48:39,790 --> 00:48:41,390 xuống phía dưới, trả về false. 993 00:48:41,390 --> 00:48:44,520 Và sau đó chúng tôi sẽ trả về false và quay trở lại chương trình của chúng tôi và 994 00:48:44,520 --> 00:48:48,020 cuối cùng in ra, như chúng ta đã thấy, chèn đã không thành công. 995 00:48:48,020 --> 00:48:51,010 Vì vậy, bất cứ ai có bất kỳ ý tưởng về những gì chúng ta cần phải làm gì để sửa lỗi này? 996 00:48:51,010 --> 00:48:54,200 997 00:48:54,200 --> 00:48:57,570 Tôi sẽ chờ đợi cho đến khi tôi nhìn thấy một vài tay đi lên. 998 00:48:57,570 --> 00:48:58,830 Chúng tôi đã không thực hiện điều này. 999 00:48:58,830 --> 00:49:01,660 Hãy nhớ, đây là lần đầu tiên điều chúng tôi đã làm. 1000 00:49:01,660 --> 00:49:02,430 Tôi sẽ không để làm một cặp vợ chồng. 1001 00:49:02,430 --> 00:49:03,670 Tôi sẽ làm một vài. 1002 00:49:03,670 --> 00:49:04,830 Bởi vì một vài nghĩa là hai. 1003 00:49:04,830 --> 00:49:07,620 Tôi sẽ chờ đợi nhiều hơn hai. 1004 00:49:07,620 --> 00:49:10,690 >> Chèn đầu tiên, Curr, theo mặc định bằng null. 1005 00:49:10,690 --> 00:49:14,050 Và vòng lặp này chỉ thực hiện nếu Curr không phải là null. 1006 00:49:14,050 --> 00:49:18,740 Vì vậy, làm thế nào tôi có thể làm được việc này? 1007 00:49:18,740 --> 00:49:19,990 Tôi thấy ba tay. 1008 00:49:19,990 --> 00:49:28,490 1009 00:49:28,490 --> 00:49:29,780 Tôi sẽ chờ đợi nhiều hơn ba. 1010 00:49:29,780 --> 00:49:33,460 1011 00:49:33,460 --> 00:49:35,940 Marcus, bạn nghĩ gì? 1012 00:49:35,940 --> 00:49:37,730 >> ĐỐI TƯỢNG: Vâng, nếu bạn cần nó để thực hiện nhiều hơn một lần, bạn chỉ cần 1013 00:49:37,730 --> 00:49:39,948 thay đổi nó vào một vòng lặp do-while. 1014 00:49:39,948 --> 00:49:41,250 >> JASON Hirschhorn: OK. 1015 00:49:41,250 --> 00:49:44,240 Mà sẽ giải quyết vấn đề của chúng tôi, mặc dù? 1016 00:49:44,240 --> 00:49:47,750 >> ĐỐI TƯỢNG: Trong trường hợp này không vì thực tế là danh sách là sản phẩm nào. 1017 00:49:47,750 --> 00:49:52,150 Vì vậy, sau đó bạn có thể chỉ cần thêm một tuyên bố rằng nếu thoát vòng lặp 1018 00:49:52,150 --> 00:49:55,312 sau đó bạn có thể vào cuối năm danh sách, lúc này bạn 1019 00:49:55,312 --> 00:49:56,562 chỉ có thể chèn nó. 1020 00:49:56,562 --> 00:49:58,920 1021 00:49:58,920 --> 00:49:59,680 >> JASON Hirschhorn: Tôi thích điều đó. 1022 00:49:59,680 --> 00:50:00,500 Có ý nghĩa. 1023 00:50:00,500 --> 00:50:03,390 Nếu vòng lặp thoát - 1024 00:50:03,390 --> 00:50:04,800 bởi vì nó sẽ trả về false đây. 1025 00:50:04,800 --> 00:50:08,220 Vì vậy, nếu thoát vòng lặp, sau đó chúng tôi đang ở cuối danh sách, hoặc có thể 1026 00:50:08,220 --> 00:50:10,690 bắt đầu của một danh sách nếu không có gì trong nó, mà là giống như kết thúc. 1027 00:50:10,690 --> 00:50:12,770 Vì vậy, bây giờ chúng tôi muốn chèn cái gì ở đây. 1028 00:50:12,770 --> 00:50:17,380 Vì vậy, làm thế nào để mã nhìn, Marcus? 1029 00:50:17,380 --> 00:50:21,600 >> ĐỐI TƯỢNG: Nếu bạn đã có nút malloced, bạn chỉ có thể nói 1030 00:50:21,600 --> 00:50:25,400 new_node-> tiếp theo bằng vô giá trị vì nó có phải là cuối cùng. 1031 00:50:25,400 --> 00:50:27,510 Hoặc new_node-> tiếp theo bằng null. 1032 00:50:27,510 --> 00:50:27,765 >> JASON Hirschhorn: OK. 1033 00:50:27,765 --> 00:50:28,190 Xin lôi. 1034 00:50:28,190 --> 00:50:35,760 New_node-> tiếp theo bằng vô giá trị bởi vì chúng ta ở cuối. 1035 00:50:35,760 --> 00:50:36,460 Mà không đặt nó vào 1036 00:50:36,460 --> 00:50:37,710 Làm thế nào để chúng tôi đặt nó trong danh sách? 1037 00:50:37,710 --> 00:50:46,130 1038 00:50:46,130 --> 00:50:46,460 Đúng. 1039 00:50:46,460 --> 00:50:47,750 Đó chỉ là đặt nó bằng với. 1040 00:50:47,750 --> 00:50:50,940 Không làm thế nào để chúng tôi thực sự đặt nó trong danh sách? 1041 00:50:50,940 --> 00:50:54,170 Những gì đang trỏ đến cuối danh sách? 1042 00:50:54,170 --> 00:50:56,090 >> ĐỐI TƯỢNG: Trưởng. 1043 00:50:56,090 --> 00:50:57,566 >> JASON Hirschhorn: Xin lỗi? 1044 00:50:57,566 --> 00:50:59,440 >> ĐỐI TƯỢNG: Trưởng trỏ đến cuối danh sách. 1045 00:50:59,440 --> 00:51:01,480 >> JASON Hirschhorn: Nếu không có gì trong danh sách, người đứng đầu là chỉ tới 1046 00:51:01,480 --> 00:51:04,170 cuối danh sách. 1047 00:51:04,170 --> 00:51:06,920 Vì vậy, mà sẽ làm việc cho chèn đầu tiên. 1048 00:51:06,920 --> 00:51:09,810 Những gì về nếu có một vài những thứ trong danh sách? 1049 00:51:09,810 --> 00:51:12,470 Hơn chúng tôi không muốn để thiết lập đầu bằng new_node. 1050 00:51:12,470 --> 00:51:13,790 Những gì chúng tôi muốn làm ở đó? 1051 00:51:13,790 --> 00:51:15,610 Yeah? 1052 00:51:15,610 --> 00:51:16,860 Có lẽ trước đó. 1053 00:51:16,860 --> 00:51:23,560 1054 00:51:23,560 --> 00:51:24,810 Mà sẽ làm việc? 1055 00:51:24,810 --> 00:51:28,950 1056 00:51:28,950 --> 00:51:33,050 Nhớ lại rằng trước đó chỉ là một con trỏ tới một nút. 1057 00:51:33,050 --> 00:51:34,770 Và trước đó là một biến địa phương. 1058 00:51:34,770 --> 00:51:38,080 Vì vậy, dòng này sẽ thiết lập một biến địa phương, trước, bằng hoặc 1059 00:51:38,080 --> 00:51:39,380 trỏ đến nút mới này. 1060 00:51:39,380 --> 00:51:41,500 Điều đó sẽ không thực sự đặt nó trong danh sách của chúng tôi, mặc dù. 1061 00:51:41,500 --> 00:51:44,330 Làm thế nào để chúng tôi đặt nó trong danh sách của chúng tôi? 1062 00:51:44,330 --> 00:51:45,620 Akchar? 1063 00:51:45,620 --> 00:51:46,870 >> ĐỐI TƯỢNG: Tôi nghĩ rằng bạn làm hiện tại-> tiếp theo. 1064 00:51:46,870 --> 00:51:50,186 1065 00:51:50,186 --> 00:51:52,550 >> JASON Hirschhorn: OK. 1066 00:51:52,550 --> 00:51:54,010 Curr-> tiếp theo. 1067 00:51:54,010 --> 00:51:58,768 Vì vậy, một lần nữa, lý do duy nhất chúng tôi đang xuống ở đây là, những gì hiện tại bằng nhau? 1068 00:51:58,768 --> 00:51:59,760 >> ĐỐI TƯỢNG: Bình đẳng null. 1069 00:51:59,760 --> 00:52:01,790 >> JASON Hirschhorn: Và vì vậy những gì sẽ xảy ra nếu chúng ta làm null-> tiếp theo? 1070 00:52:01,790 --> 00:52:02,810 Chúng tôi sẽ nhận được những gì? 1071 00:52:02,810 --> 00:52:04,060 Chúng tôi sẽ nhận được một lỗi phân khúc. 1072 00:52:04,060 --> 00:52:06,600 1073 00:52:06,600 --> 00:52:08,880 >> ĐỐI TƯỢNG: Do Curr bằng null. 1074 00:52:08,880 --> 00:52:10,760 >> JASON Hirschhorn: Đó là điều tương tự như trước, tuy nhiên, bởi vì có 1075 00:52:10,760 --> 00:52:12,820 một biến địa phương, chúng tôi đang thiết bằng nút mới này. 1076 00:52:12,820 --> 00:52:16,680 1077 00:52:16,680 --> 00:52:20,920 Chúng ta hãy quay trở lại hình ảnh của chúng tôi chèn một cái gì đó. 1078 00:52:20,920 --> 00:52:25,500 Nói rằng chúng ta đang chèn vào cuối danh sách, vì vậy ở đây. 1079 00:52:25,500 --> 00:52:30,010 Chúng tôi có một con trỏ hiện tại đó là trỏ đến null và một điểm trước đó 1080 00:52:30,010 --> 00:52:32,800 đó là chỉ vào 8. 1081 00:52:32,800 --> 00:52:35,330 Vì vậy, những gì chúng ta cần phải cập nhật, Avi? 1082 00:52:35,330 --> 00:52:36,680 >> ĐỐI TƯỢNG: Trước-> tiếp theo? 1083 00:52:36,680 --> 00:52:41,980 >> JASON Hirschhorn: Trước-> tiếp theo là gì chúng tôi muốn cập nhật, vì đó 1084 00:52:41,980 --> 00:52:44,960 sẽ thực sự chèn nó vào cuối danh sách. 1085 00:52:44,960 --> 00:52:47,220 Chúng tôi vẫn còn có một lỗi, tuy nhiên, rằng chúng ta sẽ chạy vào. 1086 00:52:47,220 --> 00:52:50,090 Lỗi đó là những gì? 1087 00:52:50,090 --> 00:52:50,790 Yeah? 1088 00:52:50,790 --> 00:52:53,860 >> ĐỐI TƯỢNG: Nó sẽ quay trở lại sai trong trường hợp này? 1089 00:52:53,860 --> 00:52:56,380 >> JASON Hirschhorn: Oh, là được sẽ trả về false. 1090 00:52:56,380 --> 00:52:57,430 Nhưng có lỗi khác. 1091 00:52:57,430 --> 00:52:58,930 Vì vậy, chúng tôi sẽ cần phải đặt lại đúng. 1092 00:52:58,930 --> 00:53:01,370 >> ĐỐI TƯỢNG: Liệu trước vẫn bằng null ở đầu danh sách? 1093 00:53:01,370 --> 00:53:03,645 >> JASON Hirschhorn: vẫn còn Vì vậy, trước bằng null ở đầu. 1094 00:53:03,645 --> 00:53:07,480 1095 00:53:07,480 --> 00:53:10,440 Vậy làm thế nào chúng ta có thể vượt qua được điều đó không? 1096 00:53:10,440 --> 00:53:10,950 Yeah? 1097 00:53:10,950 --> 00:53:15,280 >> ĐỐI TƯỢNG: Tôi nghĩ rằng bạn có thể làm một kiểm tra trước khi vòng lặp trong khi để xem nó 1098 00:53:15,280 --> 00:53:16,610 một danh sách trống. 1099 00:53:16,610 --> 00:53:17,000 >> JASON Hirschhorn: OK. 1100 00:53:17,000 --> 00:53:17,710 Vì vậy, hãy đi đây. 1101 00:53:17,710 --> 00:53:18,530 Làm một kiểm tra. 1102 00:53:18,530 --> 00:53:19,380 Nếu - 1103 00:53:19,380 --> 00:53:20,770 >> ĐỐI TƯỢNG: Vì vậy, nếu đầu bằng bằng null. 1104 00:53:20,770 --> 00:53:24,300 1105 00:53:24,300 --> 00:53:26,320 >> JASON Hirschhorn: Nếu đầu bằng bằng null - 1106 00:53:26,320 --> 00:53:27,790 mà sẽ cho chúng tôi biết nếu nó là một danh sách trống. 1107 00:53:27,790 --> 00:53:31,090 >> ĐỐI TƯỢNG: Và sau đó bạn làm đầu bằng mới. 1108 00:53:31,090 --> 00:53:34,740 >> JASON Hirschhorn: Head bằng new_node? 1109 00:53:34,740 --> 00:53:35,730 Và những gì khác chúng ta cần phải làm gì? 1110 00:53:35,730 --> 00:53:37,020 >> ĐỐI TƯỢNG: Và sau đó bạn trở lại đúng. 1111 00:53:37,020 --> 00:53:37,535 >> JASON Hirschhorn: Không hẳn. 1112 00:53:37,535 --> 00:53:38,785 Chúng ta đang thiếu một bước. 1113 00:53:38,785 --> 00:53:41,590 1114 00:53:41,590 --> 00:53:43,710 >> ĐỐI TƯỢNG: New_node tiếp theo có để trỏ đến null. 1115 00:53:43,710 --> 00:53:44,570 >> JASON Hirschhorn: Chính xác, Alden. 1116 00:53:44,570 --> 00:53:46,600 Và sau đó chúng ta có thể trở thành sự thật. 1117 00:53:46,600 --> 00:53:47,560 OK. 1118 00:53:47,560 --> 00:53:51,630 Nhưng nó vẫn là một ý tưởng tốt để làm những việc ở cuối danh sách, phải không? 1119 00:53:51,630 --> 00:53:51,950 Được rồi. 1120 00:53:51,950 --> 00:53:54,450 Chúng tôi vẫn thực sự có thể nhận được đến cuối danh sách. 1121 00:53:54,450 --> 00:53:57,870 Như vậy là tốt mã này nếu chúng ta đang ở kết thúc của danh sách và có một số 1122 00:53:57,870 --> 00:53:59,120 những thứ trong danh sách? 1123 00:53:59,120 --> 00:54:01,830 1124 00:54:01,830 --> 00:54:02,040 Phải không? 1125 00:54:02,040 --> 00:54:03,540 Bởi vì chúng tôi vẫn còn có ý tưởng của Marcus. 1126 00:54:03,540 --> 00:54:06,870 Chúng ta có thể thoát khỏi vòng lặp này vì chúng tôi đang ở cuối danh sách. 1127 00:54:06,870 --> 00:54:09,308 Vì vậy, chúng tôi vẫn muốn này mã xuống đây? 1128 00:54:09,308 --> 00:54:10,520 >> ĐỐI TƯỢNG: Có. 1129 00:54:10,520 --> 00:54:11,000 >> JASON Hirschhorn: Vâng. 1130 00:54:11,000 --> 00:54:14,190 Và làm những gì chúng ta cần phải thay đổi điều này để? 1131 00:54:14,190 --> 00:54:15,440 Đúng. 1132 00:54:15,440 --> 00:54:19,580 1133 00:54:19,580 --> 00:54:21,640 Không có âm thanh tốt để tất cả mọi người cho đến nay? 1134 00:54:21,640 --> 00:54:22,420 Bất kỳ ai có bất kỳ - 1135 00:54:22,420 --> 00:54:23,480 Avi, bạn có một cái gì đó để thêm? 1136 00:54:23,480 --> 00:54:23,920 >> ĐỐI TƯỢNG: số 1137 00:54:23,920 --> 00:54:25,276 >> JASON Hirschhorn: OK. 1138 00:54:25,276 --> 00:54:27,010 Vì vậy, chúng tôi đã thực hiện một vài thay đổi. 1139 00:54:27,010 --> 00:54:29,540 Chúng tôi đã thực hiện việc kiểm tra này trước khi chúng tôi đã đi vào một danh sách trống. 1140 00:54:29,540 --> 00:54:31,790 Vì vậy, chúng tôi đã đưa về chăm sóc một danh sách trống. 1141 00:54:31,790 --> 00:54:35,500 Và ở đây chúng tôi đã chăm sóc của chèn một cái gì đó ở cuối danh sách. 1142 00:54:35,500 --> 00:54:38,930 Vì vậy, nó có vẻ như trong khi vòng lặp này lấy chăm sóc điều ở giữa, 1143 00:54:38,930 --> 00:54:41,920 một nơi nào đó trong danh sách nếu có những thứ trong danh sách. 1144 00:54:41,920 --> 00:54:42,280 >> OK. 1145 00:54:42,280 --> 00:54:44,310 Chúng ta hãy chạy chương trình này một lần nữa. 1146 00:54:44,310 --> 00:54:50,170 1147 00:54:50,170 --> 00:54:50,755 Không thành công. 1148 00:54:50,755 --> 00:54:52,190 >> ĐỐI TƯỢNG: Bạn đã không làm cho nó. 1149 00:54:52,190 --> 00:54:53,940 >> JASON Hirschhorn: Oh, Tôi đã không làm cho nó. 1150 00:54:53,940 --> 00:54:56,250 Tốt điểm, Michael. 1151 00:54:56,250 --> 00:54:57,500 Chúng ta hãy thêm một làm cho liên kết. 1152 00:54:57,500 --> 00:55:01,590 1153 00:55:01,590 --> 00:55:04,830 Đường 87 có một lỗi. 1154 00:55:04,830 --> 00:55:05,420 Dòng 87. 1155 00:55:05,420 --> 00:55:06,600 Alden, đây là dòng bạn đã cho tôi. 1156 00:55:06,600 --> 00:55:08,962 Chuyện gì vậy? 1157 00:55:08,962 --> 00:55:10,710 >> ĐỐI TƯỢNG: Nó phải được để null. 1158 00:55:10,710 --> 00:55:11,000 >> JASON Hirschhorn: Tuyệt vời. 1159 00:55:11,000 --> 00:55:11,630 Chính xác. 1160 00:55:11,630 --> 00:55:13,290 Nó phải là vô giá trị. 1161 00:55:13,290 --> 00:55:15,210 Chúng ta hãy làm một lần nữa. 1162 00:55:15,210 --> 00:55:17,220 Biên dịch. 1163 00:55:17,220 --> 00:55:17,890 OK. 1164 00:55:17,890 --> 00:55:19,400 Chúng ta hãy chèn ba. 1165 00:55:19,400 --> 00:55:20,570 Chèn đã thành công. 1166 00:55:20,570 --> 00:55:21,660 Hãy in ra. 1167 00:55:21,660 --> 00:55:23,590 Oh, nếu chúng ta chỉ có thể kiểm tra. 1168 00:55:23,590 --> 00:55:25,500 Nhưng chúng tôi đã không thực hiện các in chức năng được nêu ra. 1169 00:55:25,500 --> 00:55:27,840 Hãy nhập một cái gì đó khác. 1170 00:55:27,840 --> 00:55:29,090 Chúng ta nên nhập vào những gì? 1171 00:55:29,090 --> 00:55:31,120 1172 00:55:31,120 --> 00:55:31,940 >> ĐỐI TƯỢNG: Bảy. 1173 00:55:31,940 --> 00:55:33,340 >> JASON Hirschhorn: Bảy? 1174 00:55:33,340 --> 00:55:34,590 >> ĐỐI TƯỢNG: Có. 1175 00:55:34,590 --> 00:55:38,680 1176 00:55:38,680 --> 00:55:39,780 >> JASON Hirschhorn: Chúng tôi có một lỗi seg. 1177 00:55:39,780 --> 00:55:43,760 Vì vậy, chúng tôi có một, nhưng chúng tôi rõ ràng không thể có được hai. 1178 00:55:43,760 --> 00:55:45,690 Nó là 05:07. 1179 00:55:45,690 --> 00:55:48,370 Vì vậy chúng tôi có thể gỡ lỗi này trong ba phút. 1180 00:55:48,370 --> 00:55:51,240 Nhưng tôi sẽ để lại cho chúng tôi ở đây và chuyển sang băm bảng. 1181 00:55:51,240 --> 00:55:54,290 Nhưng một lần nữa, câu trả lời cho các mã này Tôi sẽ gửi email cho bạn một chút. 1182 00:55:54,290 --> 00:55:55,440 Chúng tôi rất gần với nó. 1183 00:55:55,440 --> 00:55:58,300 Tôi rất khuyến khích bạn tìm ra những gì đang xảy ra ở đây và sửa chữa nó. 1184 00:55:58,300 --> 00:56:02,400 Vì vậy, tôi sẽ gửi email cho bạn mã này như cũng cộng với giải pháp - 1185 00:56:02,400 --> 00:56:03,670 có lẽ là giải pháp sau này. 1186 00:56:03,670 --> 00:56:05,110 Đầu tiên mã này. 1187 00:56:05,110 --> 00:56:08,290 >> Một điều khác tôi muốn làm trước khi chúng tôi kết thúc là chúng tôi đã không giải phóng bất cứ điều gì. 1188 00:56:08,290 --> 00:56:10,370 Vì vậy, tôi muốn cho bạn thấy những gì valgrind như thế nào. 1189 00:56:10,370 --> 00:56:14,310 Nếu chúng ta chạy ranh giới valgrind trên chương trình của chúng tôi,. / liên kết. 1190 00:56:14,310 --> 00:56:22,540 Một lần nữa, theo slide này, chúng tôi nên chạy valgrind với một số loại 1191 00:56:22,540 --> 00:56:26,410 lựa chọn, trong trường hợp này - Rò rỉ kiểm tra đầy đủ =. 1192 00:56:26,410 --> 00:56:27,660 Vì vậy, hãy viết valgrind - Rò rỉ kiểm tra đầy đủ =. 1193 00:56:27,660 --> 00:56:31,910 1194 00:56:31,910 --> 00:56:35,080 Vì vậy, đây sẽ chạy valgrind trên chương trình của chúng tôi. 1195 00:56:35,080 --> 00:56:37,000 Và bây giờ là chương trình thực sự chạy. 1196 00:56:37,000 --> 00:56:40,190 Vì vậy, chúng ta sẽ chạy nó giống như trước, đặt một cái gì đó in 1197 00:56:40,190 --> 00:56:40,830 Tôi sẽ đưa ba. 1198 00:56:40,830 --> 00:56:41,790 Điều đó làm việc. 1199 00:56:41,790 --> 00:56:43,202 Tôi sẽ không cố gắng để đưa vào một cái gì đó khác vì chúng ta sẽ 1200 00:56:43,202 --> 00:56:44,710 có được một sai seg trong trường hợp đó. 1201 00:56:44,710 --> 00:56:46,700 Vì vậy, tôi chỉ cần đi để bỏ thuốc lá. 1202 00:56:46,700 --> 00:56:50,160 >> Và bây giờ bạn nhìn thấy ở đây bị rò rỉ và tóm tắt đống. 1203 00:56:50,160 --> 00:56:52,310 Đây là những điều tốt đẹp mà bạn muốn kiểm tra. 1204 00:56:52,310 --> 00:56:56,780 Vì vậy, các bản tóm tắt đống - nó nói, trong sử dụng ở lối ra - tám byte trong một khối. 1205 00:56:56,780 --> 00:56:58,370 Đó là một khối là nút chúng tôi malloced. 1206 00:56:58,370 --> 00:57:02,230 Michael, bạn nói trước khi một nút là tám cắn bởi vì nó có số nguyên 1207 00:57:02,230 --> 00:57:02,680 và con trỏ. 1208 00:57:02,680 --> 00:57:04,550 Vì vậy, đó là nút của chúng tôi. 1209 00:57:04,550 --> 00:57:08,170 Và sau đó nó nói chúng tôi sử dụng malloc bảy lần và chúng tôi tự do 1210 00:57:08,170 --> 00:57:08,940 một cái gì đó sáu lần. 1211 00:57:08,940 --> 00:57:13,680 Nhưng chúng tôi không bao giờ được gọi là miễn phí, vì vậy tôi không có ý tưởng này nói về. 1212 00:57:13,680 --> 00:57:18,490 >> Nhưng nó đủ để nói rằng khi bạn chạy chương trình, malloc đang được gọi là 1213 00:57:18,490 --> 00:57:20,330 ở một số nơi khác mà chúng tôi không cần phải lo lắng. 1214 00:57:20,330 --> 00:57:22,460 Vì vậy, có lẽ gọi là malloc ở một số nơi. 1215 00:57:22,460 --> 00:57:24,480 Chúng tôi không cần phải lo lắng đâu. 1216 00:57:24,480 --> 00:57:26,240 Nhưng điều này thực sự là chúng tôi. 1217 00:57:26,240 --> 00:57:27,380 Dòng đầu tiên là chúng tôi. 1218 00:57:27,380 --> 00:57:28,320 Chúng tôi rời khối. 1219 00:57:28,320 --> 00:57:30,330 Và bạn có thể thấy ở đây trong phần tóm tắt rò rỉ. 1220 00:57:30,330 --> 00:57:31,950 Vẫn có thể truy cập - 1221 00:57:31,950 --> 00:57:32,930 tám byte trong một khối. 1222 00:57:32,930 --> 00:57:34,100 Điều đó có nghĩa bộ nhớ - 1223 00:57:34,100 --> 00:57:35,730 chúng tôi đã bị rò rỉ bộ nhớ. 1224 00:57:35,730 --> 00:57:37,570 Chắc chắn bị mất - 1225 00:57:37,570 --> 00:57:38,770 một cái gì đó bị mất cho tốt. 1226 00:57:38,770 --> 00:57:40,590 Nói chung, bạn sẽ không nhìn thấy bất cứ điều gì đó. 1227 00:57:40,590 --> 00:57:44,780 Vẫn có thể truy cập thường là nơi bạn sẽ thấy mọi thứ, nơi mà bạn sẽ muốn 1228 00:57:44,780 --> 00:57:48,900 để nhìn xem những gì đang bạn nên đã giải phóng nhưng bạn quên để giải phóng. 1229 00:57:48,900 --> 00:57:53,170 >> Và sau đó nếu đây không phải là trường hợp, nếu chúng tôi đã làm tất cả mọi thứ miễn phí, 1230 00:57:53,170 --> 00:57:54,360 chúng tôi có thể kiểm tra. 1231 00:57:54,360 --> 00:57:57,330 Chúng ta hãy chạy chương trình không đưa vào bất cứ điều gì. 1232 00:57:57,330 --> 00:57:59,800 Bạn sẽ thấy ở đây được sử dụng ở lối ra - 1233 00:57:59,800 --> 00:58:01,310 byte trong khối không. 1234 00:58:01,310 --> 00:58:06,310 Điều đó có nghĩa chúng tôi không còn gì khi chương trình này kết thúc. 1235 00:58:06,310 --> 00:58:12,090 Vì vậy, trước khi quay trong pset6, chạy valgrind và chắc chắn rằng bạn không có 1236 00:58:12,090 --> 00:58:15,310 bất kỳ rò rỉ bộ nhớ trong chương trình của bạn. 1237 00:58:15,310 --> 00:58:17,910 Nếu bạn có bất kỳ câu hỏi với valgrind, cảm thấy tự do để tiếp cận. 1238 00:58:17,910 --> 00:58:18,700 Nhưng đây là cách bạn sử dụng nó. 1239 00:58:18,700 --> 00:58:20,890 Rất đơn giản - xem bạn có sử dụng ở lối ra - 1240 00:58:20,890 --> 00:58:22,270 bất kỳ byte trong bất kỳ khối. 1241 00:58:22,270 --> 00:58:27,890 1242 00:58:27,890 --> 00:58:29,580 >> Vì vậy, chúng tôi đã làm việc trên nút chèn. 1243 00:58:29,580 --> 00:58:33,840 Tôi đã có hai chức năng khác ở đây - in các nút và các nút miễn phí. 1244 00:58:33,840 --> 00:58:37,780 Một lần nữa, đây là những chức năng đó sẽ tốt cho bạn để thực hành 1245 00:58:37,780 --> 00:58:40,990 bởi vì họ sẽ giúp bạn không chỉ với các bài tập mẫu mà còn 1246 00:58:40,990 --> 00:58:42,180 về vấn đề thiết lập. 1247 00:58:42,180 --> 00:58:44,230 Họ bản đồ trên khá chặt chẽ để điều bạn sẽ phải làm trong 1248 00:58:44,230 --> 00:58:45,010 vấn đề thiết lập. 1249 00:58:45,010 --> 00:58:47,640 Nhưng tôi muốn chắc chắn chúng ta chạm vào tất cả mọi thứ. 1250 00:58:47,640 --> 00:58:50,400 Và bảng băm cũng rất quan trọng để những gì chúng tôi đang làm trong phần này 1251 00:58:50,400 --> 00:58:51,980 tuần - hoặc trong bộ vấn đề. 1252 00:58:51,980 --> 00:58:55,200 >> Vì vậy, chúng ta sẽ hoàn thành phần nói về bảng băm. 1253 00:58:55,200 --> 00:58:58,140 Nếu bạn nhận thấy tôi đã thực hiện một ít bảng băm. 1254 00:58:58,140 --> 00:59:00,020 Đó không phải là những gì chúng ta đang nói về, tuy nhiên. 1255 00:59:00,020 --> 00:59:03,540 Chúng ta đang nói về một khác nhau loại bảng băm. 1256 00:59:03,540 --> 00:59:07,300 Và cốt lõi, một bảng băm của nó là gì khác hơn một 1257 00:59:07,300 --> 00:59:08,860 mảng cộng với một hàm băm. 1258 00:59:08,860 --> 00:59:11,150 Chúng ta sẽ nói chuyện một chút chỉ để chắc chắn rằng tất cả mọi người hiểu được những gì một 1259 00:59:11,150 --> 00:59:12,110 hàm băm là. 1260 00:59:12,110 --> 00:59:15,420 Và tôi nói với bạn bây giờ mà nó là không có gì hơn hai điều - 1261 00:59:15,420 --> 00:59:18,590 một mảng và một hàm băm. 1262 00:59:18,590 --> 00:59:20,716 Và đây là các bước thông qua mà điều này hoạt động. 1263 00:59:20,716 --> 00:59:31,560 1264 00:59:31,560 --> 00:59:32,810 >> Có mảng của chúng tôi. 1265 00:59:32,810 --> 00:59:38,460 1266 00:59:38,460 --> 00:59:39,460 Có chức năng của chúng tôi. 1267 00:59:39,460 --> 00:59:43,180 Đặc biệt, hàm băm cần làm một vài điều với điều này. 1268 00:59:43,180 --> 00:59:45,040 Tôi sẽ nói chuyện cụ thể về vấn đề này thiết lập. 1269 00:59:45,040 --> 00:59:46,450 Nó có thể sẽ có trong một chuỗi. 1270 00:59:46,450 --> 00:59:50,570 1271 00:59:50,570 --> 00:59:51,770 Và những gì nó sẽ trở lại? 1272 00:59:51,770 --> 00:59:52,640 Dữ liệu loại? 1273 00:59:52,640 --> 00:59:54,260 Alden? 1274 00:59:54,260 --> 00:59:55,760 Hàm băm của bạn trở lại? 1275 00:59:55,760 --> 00:59:58,760 Một số nguyên. 1276 00:59:58,760 --> 01:00:01,700 Vì vậy, đây là những gì băm bảng bao gồm - 1277 01:00:01,700 --> 01:00:05,430 một bảng ở dạng mảng và một hàm băm. 1278 01:00:05,430 --> 01:00:06,010 Làm thế nào nó hoạt động? 1279 01:00:06,010 --> 01:00:07,300 Nó hoạt động trong ba bước. 1280 01:00:07,300 --> 01:00:08,740 Chúng tôi cung cấp cho nó một phím. 1281 01:00:08,740 --> 01:00:11,470 Trong trường hợp này, chúng tôi sẽ cung cấp cho nó một chuỗi. 1282 01:00:11,470 --> 01:00:18,140 Chúng ta gọi là hàm băm mỗi bước một trên phím và chúng tôi có được một giá trị. 1283 01:00:18,140 --> 01:00:20,310 >> Cụ thể, chúng tôi sẽ nói chúng tôi có một số nguyên. 1284 01:00:20,310 --> 01:00:25,630 Số nguyên, có rất cụ thể giới hạn với những gì số nguyên có thể được. 1285 01:00:25,630 --> 01:00:28,880 Trong ví dụ này, mảng của chúng tôi có kích thước ba. 1286 01:00:28,880 --> 01:00:32,330 Vì vậy, những gì con số có thể là số nguyên. 1287 01:00:32,330 --> 01:00:35,970 Phạm vi của các giá trị hợp lệ cho là những gì số nguyên, kiểu trả về của này 1288 01:00:35,970 --> 01:00:37,220 băm chức năng? 1289 01:00:37,220 --> 01:00:40,440 1290 01:00:40,440 --> 01:00:42,110 Không, một và hai. 1291 01:00:42,110 --> 01:00:46,060 Điểm của hàm băm là tìm ra các nơi trong mảng 1292 01:00:46,060 --> 01:00:47,790 nơi quan trọng của chúng tôi là đi. 1293 01:00:47,790 --> 01:00:51,290 Chỉ có ba có thể nơi đây - 1294 01:00:51,290 --> 01:00:52,130 không, một, hoặc hai. 1295 01:00:52,130 --> 01:00:55,360 Vì vậy, chức năng này tốt hơn trở lại không, một, hoặc hai. 1296 01:00:55,360 --> 01:00:58,740 Một số các chỉ tiêu giá trị trong mảng này. 1297 01:00:58,740 --> 01:01:02,770 >> Và sau đó tùy thuộc vào nơi nó trả về, bạn có thể thấy mảng có mở 1298 01:01:02,770 --> 01:01:03,730 ngoặc giá trị. 1299 01:01:03,730 --> 01:01:05,800 Đó là nơi mà chúng tôi đưa chìa khóa. 1300 01:01:05,800 --> 01:01:11,280 Vì vậy, chúng tôi ném trong bí ngô, chúng tôi nhận ra không. 1301 01:01:11,280 --> 01:01:15,540 Tại khung mảng 0, chúng tôi đặt bí ngô. 1302 01:01:15,540 --> 01:01:21,070 Chúng tôi ném vào con mèo, chúng tôi nhận ra một. 1303 01:01:21,070 --> 01:01:24,110 Chúng tôi đặt con mèo ở một. 1304 01:01:24,110 --> 01:01:25,480 Chúng tôi đưa con nhện. 1305 01:01:25,480 --> 01:01:26,710 Chúng tôi nhận ra hai. 1306 01:01:26,710 --> 01:01:30,200 Chúng tôi đặt con nhện ở mảng khung hai. 1307 01:01:30,200 --> 01:01:32,300 Nó sẽ rất tốt đẹp nếu nó làm việc như thế. 1308 01:01:32,300 --> 01:01:35,570 Nhưng không may, như chúng ta sẽ thấy, đó là một chút phức tạp hơn. 1309 01:01:35,570 --> 01:01:37,570 >> Trước khi chúng tôi đến đó, bất kỳ câu hỏi về điều này cơ bản 1310 01:01:37,570 --> 01:01:38,820 thiết lập một bảng băm? 1311 01:01:38,820 --> 01:01:49,050 1312 01:01:49,050 --> 01:01:51,940 Đây là hình ảnh chính xác những gì chúng tôi đã thu hút trên diễn đàn. 1313 01:01:51,940 --> 01:01:55,420 Nhưng vì chúng ta vẽ trên bảng, tôi tôi sẽ không đi vào chi tiết hơn. 1314 01:01:55,420 --> 01:02:00,430 Về cơ bản các phím, hộp đen ma thuật - hoặc trong trường hợp này, teal hộp - một 1315 01:02:00,430 --> 01:02:02,410 hàm băm đặt chúng trong xô. 1316 01:02:02,410 --> 01:02:04,690 Và trong ví dụ này chúng tôi không đặt tên. 1317 01:02:04,690 --> 01:02:07,880 Chúng tôi đang đặt điện thoại liên quan số tên trong xô. 1318 01:02:07,880 --> 01:02:10,430 Nhưng bạn có thể rất tốt chỉ đặt tên trong xô. 1319 01:02:10,430 --> 01:02:12,950 >> Đây chỉ là một hình ảnh của những gì chúng tôi đã thu hút trên diễn đàn. 1320 01:02:12,950 --> 01:02:14,460 Chúng tôi có những cạm bẫy tiềm năng, mặc dù. 1321 01:02:14,460 --> 01:02:17,470 Và có hai đặc biệt trình bày rằng tôi muốn đi qua. 1322 01:02:17,470 --> 01:02:20,230 Người đầu tiên là về một hàm băm. 1323 01:02:20,230 --> 01:02:22,620 Vì vậy, tôi hỏi những câu hỏi, những gì làm cho một hàm băm tốt? 1324 01:02:22,620 --> 01:02:24,220 Tôi đưa ra hai câu trả lời. 1325 01:02:24,220 --> 01:02:26,630 Đầu tiên là nó xác định. 1326 01:02:26,630 --> 01:02:29,660 Trong bối cảnh các hàm băm, điều này có nghĩa là gì? 1327 01:02:29,660 --> 01:02:37,840 1328 01:02:37,840 --> 01:02:39,282 Có? 1329 01:02:39,282 --> 01:02:42,850 >> ĐỐI TƯỢNG: Nó có thể tìm thấy chỉ số trong thời gian liên tục? 1330 01:02:42,850 --> 01:02:43,810 >> JASON Hirschhorn: Đó không phải là những gì nó có nghĩa. 1331 01:02:43,810 --> 01:02:44,725 Nhưng đó là một đoán tốt. 1332 01:02:44,725 --> 01:02:46,100 Bất cứ ai có một đoán để điều này có nghĩa? 1333 01:02:46,100 --> 01:02:47,780 Đó là một hàm băm tốt là xác định? 1334 01:02:47,780 --> 01:02:48,280 Annie? 1335 01:02:48,280 --> 01:02:51,680 >> ĐỐI TƯỢNG: Đó là một chìa khóa duy nhất có thể được ánh xạ đến một nơi trong bảng băm. 1336 01:02:51,680 --> 01:02:53,070 >> JASON Hirschhorn: Đó là chính xác. 1337 01:02:53,070 --> 01:02:57,430 Mỗi khi bạn đưa vào bí ngô, nó luôn luôn trả về số không. 1338 01:02:57,430 --> 01:03:01,660 Nếu bạn đặt trong bí ngô và băm của bạn chức năng trả về số không, nhưng có một 1339 01:03:01,660 --> 01:03:06,060 xác suất trở về một cái gì đó khác lớn hơn không - 1340 01:03:06,060 --> 01:03:09,280 như vậy có lẽ nó có thể trở lại một đôi khi hoặc hai thời điểm khác - 1341 01:03:09,280 --> 01:03:11,100 đó không phải là một hàm băm tốt. 1342 01:03:11,100 --> 01:03:11,800 Bạn đúng. 1343 01:03:11,800 --> 01:03:15,680 Hàm băm của bạn nên trả lại cùng một số nguyên chính xác, trong trường hợp này, 1344 01:03:15,680 --> 01:03:17,780 chuỗi chính xác. 1345 01:03:17,780 --> 01:03:22,210 >> Có thể nó trả về số nguyên chính xác cho chuỗi chính xác 1346 01:03:22,210 --> 01:03:24,430 bất kể vốn. 1347 01:03:24,430 --> 01:03:27,980 Nhưng trong trường hợp đó nó vẫn còn xác định bởi vì nhiều điều 1348 01:03:27,980 --> 01:03:29,350 được ánh xạ vào cùng một giá trị. 1349 01:03:29,350 --> 01:03:30,170 Đó là tốt. 1350 01:03:30,170 --> 01:03:32,615 Miễn là chỉ có một đầu ra cho một đầu vào nhất định. 1351 01:03:32,615 --> 01:03:35,630 1352 01:03:35,630 --> 01:03:36,350 >> OK. 1353 01:03:36,350 --> 01:03:38,340 Điều thứ hai là nó trả về chỉ số hợp lệ. 1354 01:03:38,340 --> 01:03:40,220 Chúng tôi lớn lên mà trước đó. 1355 01:03:40,220 --> 01:03:41,860 Chức năng này băm - 1356 01:03:41,860 --> 01:03:43,710 oh boy - 1357 01:03:43,710 --> 01:03:46,840 một hàm băm nên trở về chỉ số hợp lệ. 1358 01:03:46,840 --> 01:03:47,740 Vì vậy, nói - 1359 01:03:47,740 --> 01:03:48,990 chúng ta hãy quay trở lại ví dụ này. 1360 01:03:48,990 --> 01:03:52,580 1361 01:03:52,580 --> 01:03:57,540 Hàm băm của tôi đếm lên các chữ cái trong từ. 1362 01:03:57,540 --> 01:03:58,380 Đó là hàm băm. 1363 01:03:58,380 --> 01:03:59,740 Và trả về số nguyên. 1364 01:03:59,740 --> 01:04:04,280 Vì vậy, nếu tôi có từ A, đó là sẽ trở lại một. 1365 01:04:04,280 --> 01:04:06,900 Và nó sẽ đặt một ngay tại đây. 1366 01:04:06,900 --> 01:04:09,430 Nếu tôi đặt trong bat từ? 1367 01:04:09,430 --> 01:04:11,310 Nó sẽ trở về ba. 1368 01:04:11,310 --> 01:04:12,560 Trường hợp không dơi đi đâu? 1369 01:04:12,560 --> 01:04:18,730 1370 01:04:18,730 --> 01:04:19,750 >> Nó không phù hợp. 1371 01:04:19,750 --> 01:04:21,000 Nhưng nó cần phải đi đâu đó. 1372 01:04:21,000 --> 01:04:23,340 Đây là bảng băm của tôi sau khi tất cả, và tất cả mọi thứ cần phải đi đâu đó. 1373 01:04:23,340 --> 01:04:24,590 Vì vậy, nơi dơi nên đi đâu? 1374 01:04:24,590 --> 01:04:28,020 1375 01:04:28,020 --> 01:04:28,710 Bất kỳ suy nghĩ? 1376 01:04:28,710 --> 01:04:29,450 Đoán? 1377 01:04:29,450 --> 01:04:30,280 Tốt đoán? 1378 01:04:30,280 --> 01:04:31,220 >> ĐỐI TƯỢNG: Zero. 1379 01:04:31,220 --> 01:04:32,120 >> JASON Hirschhorn: Tại sao không? 1380 01:04:32,120 --> 01:04:35,990 >> ĐỐI TƯỢNG: Bởi vì ba modulo ba là số không? 1381 01:04:35,990 --> 01:04:38,620 >> JASON Hirschhorn: Ba modulo ba là số không. 1382 01:04:38,620 --> 01:04:40,810 Đó là một đoán tuyệt vời, và đó là chính xác. 1383 01:04:40,810 --> 01:04:43,870 Vì vậy, trong trường hợp này là cần có thể đi từ số không. 1384 01:04:43,870 --> 01:04:51,080 Vì vậy, một cách tốt để đảm bảo rằng băm này chức năng chỉ trả về chỉ số hợp lệ 1385 01:04:51,080 --> 01:04:54,580 để modulo nó bởi kích thước của bảng. 1386 01:04:54,580 --> 01:04:57,360 Nếu bạn modulo bất cứ điều gì trở lại này bằng cách ba, bạn sẽ luôn luôn được 1387 01:04:57,360 --> 01:05:00,930 một cái gì đó giữa không, một và hai. 1388 01:05:00,930 --> 01:05:05,160 Và nếu điều này luôn luôn trả về bảy, và bạn luôn modulo ba, bạn 1389 01:05:05,160 --> 01:05:06,030 luôn luôn sẽ nhận được điều tương tự. 1390 01:05:06,030 --> 01:05:09,270 >> Vì vậy, nó vẫn còn xác định nếu bạn modulo. 1391 01:05:09,270 --> 01:05:11,420 Nhưng điều đó sẽ đảm bảo rằng bạn không bao giờ có được một cái gì đó - 1392 01:05:11,420 --> 01:05:12,940 một ngành công nghiệp không hợp lệ. 1393 01:05:12,940 --> 01:05:16,840 Nói chung, theo modulo đó nên xảy ra bên trong hàm băm của bạn. 1394 01:05:16,840 --> 01:05:18,240 Vì vậy, bạn không cần phải lo lắng về điều này. 1395 01:05:18,240 --> 01:05:20,555 Bạn chỉ có thể đảm bảo rằng đây là một các chỉ tiêu hợp lệ. 1396 01:05:20,555 --> 01:05:23,700 1397 01:05:23,700 --> 01:05:26,700 Bất kỳ câu hỏi này cạm bẫy tiềm năng? 1398 01:05:26,700 --> 01:05:36,590 1399 01:05:36,590 --> 01:05:39,060 >> OK. 1400 01:05:39,060 --> 01:05:40,290 Và có chúng tôi đi. 1401 01:05:40,290 --> 01:05:42,890 Tiếp cạm bẫy tiềm năng, và đây là một trong những lớn. 1402 01:05:42,890 --> 01:05:46,880 Nếu hai phím bản đồ với giá trị giống nhau không? 1403 01:05:46,880 --> 01:05:49,350 Vì vậy, có hai cách để xử lý này. 1404 01:05:49,350 --> 01:05:53,140 1405 01:05:53,140 --> 01:05:56,020 Người đầu tiên được gọi là tuyến tính thăm dò, mà tôi 1406 01:05:56,020 --> 01:05:57,300 không sẽ đi qua. 1407 01:05:57,300 --> 01:06:01,120 Nhưng bạn nên quen thuộc với cách làm việc và đó là những gì. 1408 01:06:01,120 --> 01:06:05,610 >> Điều thứ hai tôi sẽ đi qua bởi vì đó là một trong đó nhiều 1409 01:06:05,610 --> 01:06:08,290 mọi người có thể sẽ kết thúc quyết định để sử dụng trong bộ vấn đề của họ. 1410 01:06:08,290 --> 01:06:09,820 Tất nhiên, bạn không cần phải. 1411 01:06:09,820 --> 01:06:15,280 Nhưng đối với các bộ vấn đề, nhiều người có xu hướng chọn để tạo ra một bảng băm 1412 01:06:15,280 --> 01:06:17,950 với chain riêng biệt để thực hiện từ điển của họ. 1413 01:06:17,950 --> 01:06:21,390 Vì vậy, chúng ta sẽ đi qua những gì nó có nghĩa là để tạo ra một bảng băm với 1414 01:06:21,390 --> 01:06:23,890 chain riêng biệt. 1415 01:06:23,890 --> 01:06:26,260 >> Vì vậy tôi đặt trong bí ngô. 1416 01:06:26,260 --> 01:06:29,560 Nó trả về số không. 1417 01:06:29,560 --> 01:06:31,410 Và tôi đặt bí ngô ở đây. 1418 01:06:31,410 --> 01:06:35,880 1419 01:06:35,880 --> 01:06:37,930 Sau đó, tôi đưa vào - 1420 01:06:37,930 --> 01:06:39,922 một điều Halloween với chủ đề là gì? 1421 01:06:39,922 --> 01:06:42,200 >> ĐỐI TƯỢNG: Kẹo. 1422 01:06:42,200 --> 01:06:42,770 >> JASON Hirschhorn: Kẹo! 1423 01:06:42,770 --> 01:06:43,910 Đó là một tuyệt vời nhất. 1424 01:06:43,910 --> 01:06:47,760 Tôi đặt trong bánh kẹo, và kẹo cũng mang lại cho tôi không. 1425 01:06:47,760 --> 01:06:49,350 Tôi phải làm gì? 1426 01:06:49,350 --> 01:06:51,940 Bất kỳ ý tưởng? 1427 01:06:51,940 --> 01:06:53,940 Bởi vì bạn biết tất cả các loại những gì chain riêng là. 1428 01:06:53,940 --> 01:06:55,190 Vì vậy, bất kỳ ý tưởng phải làm gì? 1429 01:06:55,190 --> 01:06:58,170 1430 01:06:58,170 --> 01:06:59,110 Yeah. 1431 01:06:59,110 --> 01:07:03,810 >> ĐỐI TƯỢNG: Đưa chuỗi thực sự trong bảng băm. 1432 01:07:03,810 --> 01:07:08,910 >> JASON Hirschhorn: Vì vậy, chúng ta sẽ rút ra những ý tưởng tốt hơn ở đây. 1433 01:07:08,910 --> 01:07:09,340 OK. 1434 01:07:09,340 --> 01:07:12,290 >> ĐỐI TƯỢNG: Có hashtable [Nghe được] 1435 01:07:12,290 --> 01:07:16,640 con trỏ trỏ đến khởi đầu của một danh sách. 1436 01:07:16,640 --> 01:07:20,930 Và sau đó đã bí ngô có giá trị đầu tiên trong đó danh sách liên kết và kẹo được 1437 01:07:20,930 --> 01:07:22,800 giá trị thứ hai trong danh sách liên kết mà. 1438 01:07:22,800 --> 01:07:23,420 >> JASON Hirschhorn: OK. 1439 01:07:23,420 --> 01:07:24,670 Marcus, đó là nổi bật. 1440 01:07:24,670 --> 01:07:26,160 Tôi sẽ phá vỡ xuống. 1441 01:07:26,160 --> 01:07:28,890 Marcus đang nói không ghi đè lên quả bí ngô. 1442 01:07:28,890 --> 01:07:30,660 Đó sẽ là xấu. 1443 01:07:30,660 --> 01:07:33,640 Không đặt kẹo ở một nơi khác. 1444 01:07:33,640 --> 01:07:35,390 Chúng ta sẽ đặt chúng cả ở số không. 1445 01:07:35,390 --> 01:07:37,770 Nhưng chúng ta sẽ đối phó với đặt chúng ở số không bởi 1446 01:07:37,770 --> 01:07:39,395 tạo ra một danh sách ở số không. 1447 01:07:39,395 --> 01:07:42,430 Và chúng ta sẽ tạo ra một danh sách các tất cả mọi thứ mà ánh xạ tới không. 1448 01:07:42,430 --> 01:07:47,960 Và cách tốt nhất chúng tôi đã học để tạo ra một danh sách có thể phát triển và thu nhỏ 1449 01:07:47,960 --> 01:07:49,840 động không nằm trong một mảng. 1450 01:07:49,840 --> 01:07:51,510 Vì vậy, không phải là một mảng đa chiều. 1451 01:07:51,510 --> 01:07:54,080 Nhưng chỉ cần tạo ra một danh sách liên kết. 1452 01:07:54,080 --> 01:07:55,330 >> Vì vậy, những gì ông đề xuất - 1453 01:07:55,330 --> 01:07:57,950 1454 01:07:57,950 --> 01:07:59,200 Tôi sẽ có được một mới - 1455 01:07:59,200 --> 01:08:15,380 1456 01:08:15,380 --> 01:08:19,689 là tạo ra một mảng với con trỏ, một mảng của con trỏ. 1457 01:08:19,689 --> 01:08:20,580 OK. 1458 01:08:20,580 --> 01:08:24,180 Bất kỳ ý tưởng hoặc gợi ý những gì các loại của con trỏ này nên được? 1459 01:08:24,180 --> 01:08:26,290 Marcus? 1460 01:08:26,290 --> 01:08:27,250 >> ĐỐI TƯỢNG: Con trỏ tới - 1461 01:08:27,250 --> 01:08:28,609 >> JASON Hirschhorn: Bởi vì bạn cho biết một danh sách liên kết, vì vậy - 1462 01:08:28,609 --> 01:08:29,520 >> ĐỐI TƯỢNG: con trỏ Node? 1463 01:08:29,520 --> 01:08:30,670 >> JASON Hirschhorn: con trỏ Node. 1464 01:08:30,670 --> 01:08:32,830 Nếu những điều trong liên kết của chúng tôi danh sách là các nút sau đó họ 1465 01:08:32,830 --> 01:08:34,370 nên con trỏ nút. 1466 01:08:34,370 --> 01:08:35,939 Và những gì họ bằng ban đầu? 1467 01:08:35,939 --> 01:08:36,990 >> ĐỐI TƯỢNG: Null. 1468 01:08:36,990 --> 01:08:38,240 >> JASON Hirschhorn: Null. 1469 01:08:38,240 --> 01:08:44,540 1470 01:08:44,540 --> 01:08:46,080 Do đó, có điều trống rỗng của chúng tôi. 1471 01:08:46,080 --> 01:08:47,170 Lợi nhuận bí ngô bằng không. 1472 01:08:47,170 --> 01:08:48,569 Chúng ta phải làm gì? 1473 01:08:48,569 --> 01:08:49,609 Đi bộ tôi thông qua nó? 1474 01:08:49,609 --> 01:08:50,810 Trên thực tế, Marcus đã cho tôi. 1475 01:08:50,810 --> 01:08:52,439 Người khác đi bộ tôi thông qua nó. 1476 01:08:52,439 --> 01:08:54,760 Những gì chúng ta làm khi chúng ta - 1477 01:08:54,760 --> 01:08:56,609 này trông rất giống với những gì chúng tôi đã chỉ làm. 1478 01:08:56,609 --> 01:08:57,396 Avi. 1479 01:08:57,396 --> 01:08:59,090 >> ĐỐI TƯỢNG: Tôi sẽ có nhiều phán đoán. 1480 01:08:59,090 --> 01:09:01,250 Vì vậy, khi bạn nhận được kẹo. 1481 01:09:01,250 --> 01:09:01,640 >> JASON Hirschhorn: Vâng. 1482 01:09:01,640 --> 01:09:03,120 Vâng, chúng tôi đã bí ngô. 1483 01:09:03,120 --> 01:09:03,870 Hãy có được một đầu tiên của chúng tôi. 1484 01:09:03,870 --> 01:09:04,324 Chúng tôi đã bí ngô. 1485 01:09:04,324 --> 01:09:04,779 >> ĐỐI TƯỢNG: OK. 1486 01:09:04,779 --> 01:09:05,880 Lợi nhuận bí ngô bằng không. 1487 01:09:05,880 --> 01:09:08,770 Vì vậy, bạn đặt nó ở đó. 1488 01:09:08,770 --> 01:09:10,810 Hoặc thực sự, bạn đặt nó trong danh sách liên kết. 1489 01:09:10,810 --> 01:09:13,550 >> JASON Hirschhorn: Làm thế nào để chúng tôi đặt nó trong danh sách liên kết? 1490 01:09:13,550 --> 01:09:15,479 >> ĐỐI TƯỢNG: Oh, cú pháp thực tế? 1491 01:09:15,479 --> 01:09:16,240 >> JASON Hirschhorn: Chỉ cần đi bộ - 1492 01:09:16,240 --> 01:09:16,740 nói thêm. 1493 01:09:16,740 --> 01:09:19,310 Chúng ta phải làm gì? 1494 01:09:19,310 --> 01:09:22,100 >> ĐỐI TƯỢNG: Bạn chỉ cần chèn nó như là nút đầu tiên. 1495 01:09:22,100 --> 01:09:22,675 >> JASON Hirschhorn: OK. 1496 01:09:22,675 --> 01:09:29,069 Vì vậy, chúng tôi có nút của chúng tôi, bí ngô. 1497 01:09:29,069 --> 01:09:31,560 Và bây giờ làm thế nào để chèn nó? 1498 01:09:31,560 --> 01:09:34,590 1499 01:09:34,590 --> 01:09:37,090 >> ĐỐI TƯỢNG: Bạn chỉ định nó cho con trỏ. 1500 01:09:37,090 --> 01:09:37,970 >> JASON Hirschhorn: Những con trỏ? 1501 01:09:37,970 --> 01:09:39,620 >> ĐỐI TƯỢNG: Các con trỏ ở số không. 1502 01:09:39,620 --> 01:09:41,420 >> JASON Hirschhorn: Vì vậy, nơi không thời điểm này? 1503 01:09:41,420 --> 01:09:42,810 >> ĐỐI TƯỢNG: Để vô giá trị ngay bây giờ. 1504 01:09:42,810 --> 01:09:43,529 >> JASON Hirschhorn: Vâng, nó chỉ để null. 1505 01:09:43,529 --> 01:09:44,499 Nhưng tôi đặt trong bí ngô. 1506 01:09:44,499 --> 01:09:46,053 Vì vậy, nơi nó nên chỉ? 1507 01:09:46,053 --> 01:09:46,880 >> ĐỐI TƯỢNG: Để bí ngô. 1508 01:09:46,880 --> 01:09:47,399 >> JASON Hirschhorn: Để bí ngô. 1509 01:09:47,399 --> 01:09:48,760 Chính xác. 1510 01:09:48,760 --> 01:09:50,010 Vì vậy, điều này dẫn đến bí ngô. 1511 01:09:50,010 --> 01:09:52,500 1512 01:09:52,500 --> 01:09:54,250 Và nơi nào con trỏ này tại điểm bí ngô? 1513 01:09:54,250 --> 01:09:57,986 1514 01:09:57,986 --> 01:09:58,340 Để 1515 01:09:58,340 --> 01:09:58,590 >> ĐỐI TƯỢNG: Null. 1516 01:09:58,590 --> 01:09:59,210 >> JASON Hirschhorn: Để vô giá trị. 1517 01:09:59,210 --> 01:10:00,460 Chính xác. 1518 01:10:00,460 --> 01:10:03,570 1519 01:10:03,570 --> 01:10:05,140 Vì vậy, chúng tôi chỉ đưa vào một cái gì đó vào danh sách liên kết. 1520 01:10:05,140 --> 01:10:07,210 Chúng tôi chỉ viết mã này để làm điều này. 1521 01:10:07,210 --> 01:10:09,520 Hầu như chúng tôi gần như đã nhận nó hoàn toàn bị nứt. 1522 01:10:09,520 --> 01:10:10,790 Bây giờ chúng ta chèn kẹo. 1523 01:10:10,790 --> 01:10:13,480 Kẹo của chúng tôi cũng đi đến số không. 1524 01:10:13,480 --> 01:10:16,100 Vì vậy, chúng ta làm gì với kẹo? 1525 01:10:16,100 --> 01:10:18,790 >> ĐỐI TƯỢNG: Nó phụ thuộc vào có hay không chúng tôi đang cố gắng để sắp xếp nó. 1526 01:10:18,790 --> 01:10:19,640 >> JASON Hirschhorn: Đó là chính xác. 1527 01:10:19,640 --> 01:10:21,070 Nó phụ thuộc vào có hay không chúng tôi đang cố gắng để sắp xếp nó. 1528 01:10:21,070 --> 01:10:22,660 Giả sử chúng ta không sẽ sắp xếp nó. 1529 01:10:22,660 --> 01:10:24,880 >> ĐỐI TƯỢNG: Vậy thì, như chúng ta đã thảo luận trước khi, nó đơn giản nhất chỉ để đặt nó 1530 01:10:24,880 --> 01:10:28,590 đúng ngay từ đầu để con trỏ từ không có điểm để kẹo. 1531 01:10:28,590 --> 01:10:29,020 >> JASON Hirschhorn: OK. 1532 01:10:29,020 --> 01:10:29,380 Giữ. 1533 01:10:29,380 --> 01:10:30,630 Hãy để tôi tạo ra kẹo ngay tại đây. 1534 01:10:30,630 --> 01:10:34,030 1535 01:10:34,030 --> 01:10:35,150 Vì vậy, con trỏ này - 1536 01:10:35,150 --> 01:10:37,590 >> ĐỐI TƯỢNG: Vâng, nên bây giờ được trỏ đến kẹo. 1537 01:10:37,590 --> 01:10:40,580 Sau đó có con trỏ từ điểm kẹo bí ngô. 1538 01:10:40,580 --> 01:10:43,140 1539 01:10:43,140 --> 01:10:44,560 >> JASON Hirschhorn: Giống như điều đó không? 1540 01:10:44,560 --> 01:10:47,380 Và nói rằng chúng ta đã khác điều để bản đồ không? 1541 01:10:47,380 --> 01:10:48,660 >> ĐỐI TƯỢNG: Vâng, bạn chỉ làm điều tương tự? 1542 01:10:48,660 --> 01:10:50,290 >> JASON Hirschhorn: Làm điều tương tự. 1543 01:10:50,290 --> 01:10:53,700 Vì vậy, trong trường hợp này, nếu chúng ta không muốn giữ nó được sắp xếp nó 1544 01:10:53,700 --> 01:10:55,270 âm thanh khá đơn giản. 1545 01:10:55,270 --> 01:10:59,920 Chúng tôi có con trỏ trong các chỉ tiêu được đưa ra bởi hàm băm của chúng tôi. 1546 01:10:59,920 --> 01:11:03,830 Chúng tôi có điểm đó đến nút mới của chúng tôi. 1547 01:11:03,830 --> 01:11:07,830 Và sau đó bất cứ điều gì nó đã được chỉ với trước đây - 1548 01:11:07,830 --> 01:11:10,620 trong trường hợp này vô giá trị, trong trường hợp thứ hai bí ngô - 1549 01:11:10,620 --> 01:11:15,310 rằng, bất cứ điều gì nó trỏ đến trước đây, chúng tôi thêm vào tiếp theo của 1550 01:11:15,310 --> 01:11:17,810 nút mới của chúng tôi. 1551 01:11:17,810 --> 01:11:19,650 Chúng tôi đang chèn một cái gì đó trong đầu. 1552 01:11:19,650 --> 01:11:22,900 Trong thực tế điều này là đơn giản hơn rất nhiều so với cố gắng để giữ cho các danh sách được sắp xếp. 1553 01:11:22,900 --> 01:11:25,340 Nhưng một lần nữa, tìm kiếm sẽ được phức tạp hơn ở đây. 1554 01:11:25,340 --> 01:11:28,300 Chúng tôi sẽ luôn luôn phải đi đến cùng. 1555 01:11:28,300 --> 01:11:29,650 >> OK. 1556 01:11:29,650 --> 01:11:32,750 Bất kỳ câu hỏi về xâu chuỗi riêng biệt? 1557 01:11:32,750 --> 01:11:34,690 Làm thế nào mà làm việc? 1558 01:11:34,690 --> 01:11:35,820 Xin vui lòng yêu cầu họ bây giờ. 1559 01:11:35,820 --> 01:11:39,260 Tôi thực sự muốn chắc chắn rằng tất cả các bạn hiểu điều này trước khi chúng tôi đi ra ngoài. 1560 01:11:39,260 --> 01:11:48,410 1561 01:11:48,410 --> 01:11:52,060 >> ĐỐI TƯỢNG: Tại sao bạn đặt bí ngô và kẹo vào cùng 1562 01:11:52,060 --> 01:11:54,108 một phần của bảng băm? 1563 01:11:54,108 --> 01:11:55,860 >> JASON Hirschhorn: Câu hỏi. 1564 01:11:55,860 --> 01:11:59,140 Tại sao chúng ta đặt chúng trong cùng một một phần của bảng băm? 1565 01:11:59,140 --> 01:12:03,200 Vâng, trong trường hợp này hàm băm của chúng tôi lợi nhuận bằng không cho cả hai người. 1566 01:12:03,200 --> 01:12:05,310 Vì vậy, họ cần phải đi vào các chỉ tiêu không bởi vì đó là nơi mà chúng ta sẽ 1567 01:12:05,310 --> 01:12:07,420 tìm kiếm chúng nếu chúng ta muốn xem chúng. 1568 01:12:07,420 --> 01:12:11,750 Một lần nữa, với một cách tiếp cận tuyến tính thăm dò chúng tôi sẽ không đặt chúng cả ở số không. 1569 01:12:11,750 --> 01:12:13,900 Nhưng trong cách tiếp cận chuỗi riêng biệt, chúng ta sẽ đặt chúng ở cả không 1570 01:12:13,900 --> 01:12:16,620 và sau đó tạo ra một danh sách tắt của không. 1571 01:12:16,620 --> 01:12:20,140 >> Và chúng tôi không muốn ghi đè lên bí ngô chỉ đơn giản cho rằng bởi vì sau đó chúng tôi sẽ 1572 01:12:20,140 --> 01:12:21,860 cho rằng bí ngô là không bao giờ chèn vào. 1573 01:12:21,860 --> 01:12:25,230 Nếu chúng ta chỉ giữ một điều trong vị trí đó sẽ là xấu. 1574 01:12:25,230 --> 01:12:28,590 Sau đó sẽ không có cơ hội của chúng tôi bao giờ hết - 1575 01:12:28,590 --> 01:12:31,660 nếu chúng ta từng có một bản sao, sau đó chúng tôi sẽ chỉ xóa giá trị ban đầu của chúng tôi. 1576 01:12:31,660 --> 01:12:34,090 Vì vậy, đó là lý do tại sao chúng tôi làm phương pháp này. 1577 01:12:34,090 --> 01:12:36,580 Hoặc đó là lý do tại sao chúng tôi chọn - nhưng một lần nữa, chúng tôi chọn phương pháp xâu chuỗi riêng biệt, 1578 01:12:36,580 --> 01:12:39,670 trong đó có nhiều cách tiếp cận khác người ta có thể lựa chọn. 1579 01:12:39,670 --> 01:12:41,185 Điều đó trả lời câu hỏi của bạn? 1580 01:12:41,185 --> 01:12:41,660 >> OK. 1581 01:12:41,660 --> 01:12:42,910 Carlos. 1582 01:12:42,910 --> 01:12:46,130 1583 01:12:46,130 --> 01:12:47,720 Tuyến tính thăm dò sẽ liên quan đến - 1584 01:12:47,720 --> 01:12:51,913 nếu chúng ta tìm thấy một vụ va chạm ở số không, chúng tôi sẽ xem xét ở vị trí tiếp theo để xem 1585 01:12:51,913 --> 01:12:54,310 nó đã được mở và đặt nó ở đó. 1586 01:12:54,310 --> 01:12:57,320 Và sau đó chúng ta nhìn vào các môn thể thao tiếp theo và xem đó là mở và đặt nó ở đó. 1587 01:12:57,320 --> 01:12:59,780 Vì vậy, chúng tôi tìm thấy có sẵn tiếp theo vị trí mở và đặt nó ở đó. 1588 01:12:59,780 --> 01:13:02,580 1589 01:13:02,580 --> 01:13:03,890 Bất kỳ câu hỏi nào khác không? 1590 01:13:03,890 --> 01:13:05,370 Yeah, Avi. 1591 01:13:05,370 --> 01:13:07,490 >> ĐỐI TƯỢNG: Là một theo dõi đó, làm những gì bạn có ý nghĩa bởi vị trí tiếp theo? 1592 01:13:07,490 --> 01:13:10,250 Trong bảng băm hoặc trong một danh sách liên kết. 1593 01:13:10,250 --> 01:13:12,100 >> JASON Hirschhorn: Đối với tuyến tính lập trình, không có danh sách liên kết. 1594 01:13:12,100 --> 01:13:13,400 Vị trí tiếp theo trên bảng băm. 1595 01:13:13,400 --> 01:13:13,820 >> ĐỐI TƯỢNG: OK. 1596 01:13:13,820 --> 01:13:17,570 Vì vậy, các bảng băm sẽ khởi tạo kích thước - 1597 01:13:17,570 --> 01:13:19,560 như số lượng các chuỗi mà bạn đã chèn? 1598 01:13:19,560 --> 01:13:22,170 >> JASON Hirschhorn: Bạn sẽ muốn nó được thực sự lớn. 1599 01:13:22,170 --> 01:13:23,910 Vâng. 1600 01:13:23,910 --> 01:13:27,900 Đây là một hình ảnh của những gì chúng ta vừa vẽ trên bảng. 1601 01:13:27,900 --> 01:13:29,470 Một lần nữa, chúng tôi có một vụ va chạm ở đây. 1602 01:13:29,470 --> 01:13:30,710 152. 1603 01:13:30,710 --> 01:13:33,570 Và bạn sẽ thấy chúng tôi tạo ra một danh sách liên kết tắt của nó. 1604 01:13:33,570 --> 01:13:38,200 1605 01:13:38,200 --> 01:13:41,850 Một lần nữa, bảng băm chain riêng cách tiếp cận không phải là một trong những bạn 1606 01:13:41,850 --> 01:13:45,590 phải đưa cho các vấn đề thiết lập sáu nhưng là một trong những rất nhiều 1607 01:13:45,590 --> 01:13:47,100 sinh viên có xu hướng mất. 1608 01:13:47,100 --> 01:13:51,140 Vì vậy, trên lưu ý rằng, chúng ta hãy nói ngắn gọn trước khi chúng tôi đi ra ngoài về vấn đề sáu, 1609 01:13:51,140 --> 01:13:52,160 và sau đó tôi sẽ chia sẻ một câu chuyện với bạn. 1610 01:13:52,160 --> 01:13:55,120 Chúng tôi có ba phút. 1611 01:13:55,120 --> 01:13:55,750 >> Vấn đề thiết lập sáu. 1612 01:13:55,750 --> 01:13:57,790 Bạn có bốn chức năng - 1613 01:13:57,790 --> 01:14:02,430 tải, kiểm tra, kích thước, và dỡ bỏ. 1614 01:14:02,430 --> 01:14:03,380 Tải - 1615 01:14:03,380 --> 01:14:07,120 tốt, chúng tôi đã đi quá tải ngay bây giờ. 1616 01:14:07,120 --> 01:14:09,330 Chúng tôi đã thu hút tải trên diễn đàn. 1617 01:14:09,330 --> 01:14:13,230 Và chúng tôi thậm chí bắt đầu mã hóa rất nhiều chèn vào một danh sách liên kết. 1618 01:14:13,230 --> 01:14:18,020 Vì vậy, tải không phải là nhiều hơn những gì chúng tôi đã chỉ được làm. 1619 01:14:18,020 --> 01:14:21,070 >> Kiểm tra là một lần bạn có một cái gì đó nạp. 1620 01:14:21,070 --> 01:14:22,580 Đó là quá trình tương tự như thế này. 1621 01:14:22,580 --> 01:14:26,845 Cùng hai phần đầu tiên mà bạn ném một cái gì đó vào hàm băm 1622 01:14:26,845 --> 01:14:29,190 và nhận được giá trị của nó. 1623 01:14:29,190 --> 01:14:30,700 Nhưng bây giờ chúng tôi không chèn nó. 1624 01:14:30,700 --> 01:14:33,350 Bây giờ chúng tôi đang tìm kiếm nó. 1625 01:14:33,350 --> 01:14:37,130 Tôi đã viết mẫu mã cho việc tìm kiếm một cái gì đó trong một danh sách liên kết. 1626 01:14:37,130 --> 01:14:38,250 Tôi khuyến khích bạn thực hành điều đó. 1627 01:14:38,250 --> 01:14:43,000 Nhưng trực giác tìm kiếm một cái gì đó khá tương tự như chèn một cái gì đó. 1628 01:14:43,000 --> 01:14:46,540 Thật vậy, chúng tôi đã vẽ một bức tranh về việc tìm kiếm một cái gì đó trong một danh sách liên kết, di chuyển 1629 01:14:46,540 --> 01:14:48,910 thông qua cho đến khi bạn đã kết thúc. 1630 01:14:48,910 --> 01:14:52,430 Và nếu bạn đã kết thúc và không thể tìm thấy nó, sau đó nó không có ở đó. 1631 01:14:52,430 --> 01:14:55,400 Vì vậy, đó là kiểm tra, về cơ bản. 1632 01:14:55,400 --> 01:14:57,030 >> Tiếp theo là kích thước. 1633 01:14:57,030 --> 01:14:57,910 Chúng ta hãy bỏ qua kích thước. 1634 01:14:57,910 --> 01:15:00,040 Cuối cùng bạn đã dỡ bỏ. 1635 01:15:00,040 --> 01:15:02,890 Dỡ bỏ là một trong chúng tôi đã không rút ra trên diễn đàn hoặc mã hoá được nêu ra. 1636 01:15:02,890 --> 01:15:05,990 Nhưng tôi khuyến khích bạn thử mã hóa nó trong mẫu của chúng tôi danh sách liên kết ví dụ. 1637 01:15:05,990 --> 01:15:11,440 Nhưng trực giác dỡ bỏ tương tự như miễn phí - 1638 01:15:11,440 --> 01:15:14,010 hoặc tôi có nghĩa là tương tự để kiểm tra. 1639 01:15:14,010 --> 01:15:17,350 Ngoại trừ bây giờ mỗi khi bạn đang đi thông qua, bạn không chỉ đơn giản là kiểm tra để 1640 01:15:17,350 --> 01:15:19,090 xem nếu bạn có giá trị của bạn ở đó. 1641 01:15:19,090 --> 01:15:22,490 Nhưng bạn đang dùng nút đó và giải phóng nó, về cơ bản. 1642 01:15:22,490 --> 01:15:23,610 Đó là những gì dỡ bỏ yêu cầu bạn phải làm. 1643 01:15:23,610 --> 01:15:24,670 Tất cả mọi thứ miễn phí bạn đã malloced. 1644 01:15:24,670 --> 01:15:27,480 Vì vậy, bạn đang trải qua toàn bộ danh sách một lần nữa, đi qua toàn bộ băm 1645 01:15:27,480 --> 01:15:27,760 bảng một lần nữa. 1646 01:15:27,760 --> 01:15:29,240 Thời gian này không kiểm tra để xem những gì đang có. 1647 01:15:29,240 --> 01:15:31,080 Chỉ giải phóng những gì đang có. 1648 01:15:31,080 --> 01:15:33,260 >> Và cuối cùng kích thước. 1649 01:15:33,260 --> 01:15:34,350 Kích thước nên được thực hiện. 1650 01:15:34,350 --> 01:15:35,590 Nếu bạn không thực hiện kích thước - 1651 01:15:35,590 --> 01:15:36,250 Tôi sẽ nói nó như thế này. 1652 01:15:36,250 --> 01:15:39,740 Nếu bạn không thực hiện kích thước chính xác một dòng mã trong đó có 1653 01:15:39,740 --> 01:15:43,760 tuyên bố quay trở lại, bạn có làm kích thước chính xác. 1654 01:15:43,760 --> 01:15:47,170 Vì vậy, hãy chắc chắn rằng kích thước, thiết kế đầy đủ điểm, bạn đang làm nó trong một cách chính xác 1655 01:15:47,170 --> 01:15:49,970 dòng mã, bao gồm cả các tuyên bố trở lại. 1656 01:15:49,970 --> 01:15:52,450 >> Và không đóng gói được nêu ra, Akchar. 1657 01:15:52,450 --> 01:15:53,700 Hải ly háo hức. 1658 01:15:53,700 --> 01:15:55,820 1659 01:15:55,820 --> 01:16:01,300 Tôi muốn nói lời cảm ơn các bạn cho đến phần. 1660 01:16:01,300 --> 01:16:02,550 Có một Halloween vui vẻ. 1661 01:16:02,550 --> 01:16:05,300 1662 01:16:05,300 --> 01:16:05,960 Đây là trang phục của tôi. 1663 01:16:05,960 --> 01:16:08,850 Tôi sẽ mặc này vào thứ năm nếu tôi nhìn thấy bạn ở giờ hành chính. 1664 01:16:08,850 --> 01:16:14,640 Và nếu bạn đang tò mò về một số chi tiết nền để trang phục này, cảm thấy 1665 01:16:14,640 --> 01:16:19,135 miễn phí kiểm tra 2.011 phần cho một câu chuyện về lý do tại sao tôi 1666 01:16:19,135 --> 01:16:20,900 mặc trang phục bí ngô. 1667 01:16:20,900 --> 01:16:23,680 Và nó là một câu chuyện buồn. 1668 01:16:23,680 --> 01:16:27,050 Vì vậy, hãy chắc chắn rằng bạn có một số các mô lân cận. 1669 01:16:27,050 --> 01:16:28,680 Nhưng vào đó, nếu bạn có bất kỳ câu hỏi tôi sẽ dính xung quanh 1670 01:16:28,680 --> 01:16:29,960 bên ngoài sau khi phần. 1671 01:16:29,960 --> 01:16:31,510 May mắn về vấn đề thiết lập sáu. 1672 01:16:31,510 --> 01:16:33,540 Và như mọi khi, nếu bạn có bất kỳ câu hỏi, cho tôi biết. 1673 01:16:33,540 --> 01:16:35,584