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