--- title: โครงสร้างข้อมูลและอัลกอริทึม subtitle: date: วันอังคารที่ 19 กรกฎาคม 2565 เวลา 13.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์สุธาสินี) นะคะ โอเค เดี๋ยววันนี้นะคะ เดี๋ยวเราจะมาขึ้นรูปแบบของโครงสร้างข้อมูล อีกหนึ่งรูปแบบก็คือ Link List นะคะ ก็คือ Link List จากเดิมที่เราเรียนไปเมื่อคราวก่อน เราเรียนลิสต์ใช่ไหมคะ ตัวแรก ก็คือ List นะคะ ตัวที่ 2 ก้คือ Dictionary คราวนี้ยังจำได้ไหม ว่ารูปแบบของการเขียนตัวแรกน่ะคะ อะไรเอ่ย อันนี้จะเป็นเบอร์ 1 นะ เดี๋ยวครูจะให้ตอบ 1 คือ List รูปแบบการเขียนแบบนี้เราเรียกว่าอะไรคะ 1 หรือ 2 รูปแบบแบบนี้ แบบการเขียนแบบนี้เราเรียกว่าอะไรคะ 1 หรือ 2 รูปแบบแบบนี้ เราเรียกว่าเป็น... ใช่ คนอื่นเป็นแบบไหนคะ มีก้ามปูเปิด มี 1, 2, 3 เป็นลักษณะของการจัดเก็บแบบไหนคะ List หรือ Dictionary แบบไหนดี ไหนยกมือให้ครูดุหน่อย ถ้าเป็น List คือ 1 ใช่ไหมคะ ถ้าเป็น Dictionary ก็คือ 2 ตัววนี้เป็นรูปแบบของการจัด เก็บข้อมูลแบบไหนคะ จำได้ไหม ถ้าแบบนี้นะ มี 1, 3, 10 อย่างนี้ คืออะไร หรือรายการของผลไม้ ส้ม, องุ่น อย่างนี้น่ะค่ะ เราเรียกลักษณะการจัดเก็บข้อมูลแบบลองนึกสิคะ เป็น List เป็นแบบไหนดี ตอบได้ไหมคะ ลืมหรือยัง มันจะมีรูปแบบใช่ไหมคะ ที่เราเรียนไปเมื่อคราวที่แล้วถ้าเป็นแบบก้ามปู เปิดแล้วใส่ข้อมูลตัวที่ 1 คอมมาตัวที่ 1 คอมมาตัวที่ 2 ตัวที่ 3 ไล่ไปเรื่อย ๆ อันนี้จะเรียกว่า "List" ก็คือลิสต์ถูกไหมคะ โอเค สิ่งเหล่านี้เรียกว่าเป็นการจัดเก็บข้อมูลที่อยู่ในรูปแบบของลิสต์รายการถูกไหมคะ คือลิสต์รายการน่ะ เหมือนแม่ให้เราไปซื้อของที่ตลาดก็จะบอกว่าซื้ออะไรบ้างถูกไหมคะ หอม, ผักชี, ไข่, หมู เห็นไหมคะ อันนี้เรามั่นใจว่ามันคือลิสต์นะ ถัดมา Dictionary ถูกไหมคะ ถ้าเราพูดถึงตัว Dictionary จะเก็บแบบไหน นี้ถูกไหมคะ รูปแบบที่ 2 จะเป็นปีกกาเปิดแล้วก็ปีกกาปิด ถ้าเป็น Dictionary เราจะเห็นความต่างของรูปแบบของการเขียน ถ้าเป็นลิสต์จะใช้ปีกกาเปิด ไม่ใช่ ก้ามปูเปิด ถูกไหมคะ แต่ถ้าเป็น Dictionary นะคะ ปีกกาเปิดถูกไหม แล้วค่าที่อยู่ในคอมม่านี่จะมีอยู่ 2 ตัวที่เรียกว่า "Key" กับ Value ถูกไหมคะ จะมีสัญลักษณสัญลักษณ์ ; เกิดขึ้นระหว่างค่าอย่างนี้นะคะ 1 ตัวแรกคือ Key แล้วก็มี : คือจุด 2 จุดตรงนี้ เสร็จแล้วก็ใส่ค่ 20 ก็คือ Value นะคะ เพราะฉะนั้น จะเห็นรูปแบบของการเขียนของ Dictionary มันต่างกันเห็นหรือเปล่า ถ้าเราเห็นเราก็ตอบได้เลย ถ้าเป็นสัญลักษณ์แบบนี้ ก็คือลิสต์าเป็นสัญลักษณ์แบบนี้ ก็คือ Dictionary นะคะ แล้วเก็บ มีรูปแบบการเก็บ 2 แบบแล้ว ที่เก็บ 1 ตัวแปร เราเก็บค่าได้มากกว่า 1 ค่า ใช่ไหมคะ 1 ตัวแปรเก็บได้มากกว่า 1 ค่า เช่น เห็นไหมคะ มันเก็บได้หลายตัว ทีนี้ มันมีรูปแบบของการจัดเก็บอีกแบบหนึ่งนะคะ ที่เรียกว่า "ลิงค์ลิสต์" เราจะพูดถึงลิงก์ลิสต์นะคะ ทิศทางเดียว ก็คือทางเดียวเหมือนเราเห็นนะคะ รถที่เป็น One way น่ะ เห็นรถเดินทางเดียว ถูกไหมคะ ไม่ให้รถสวน มันก็เป็นทิศทางเดียว แล้วลิงก์ลิสต์มันเก็บแบบไหน ลิงก์ลิสต์มันเก็บแบบไหน ครูให้ดูรูปนี้ก่อน มันคืออะไรคะ มันคือรถไฟใช่หรือเปล่า มันคือรถไฟ เรารู้ไหมว่าอันไหนคือด้านหน้าขของรถไฟ รู้ไหมคะ อันไหนคือด้านข้างขวา อันไหนคือด้านหน้าของรถไฟ คือ ตรงนี้ถูกไหม เพราะอะไร เพราะเราเห็นหัวรถจักร แต่ละขบวนเห็นไหม แต่ละขบวนมันก็จะมีตัวเชื่อมกันถูกไหมคะ ขบวนที่ 1 ก็จะบรรทุกคน ก็จะมีคนอยู่ข้างใน ขบวนที่ 3 ก็จะมีคนอยู่ข้างใน ใช่ไหมคะ คราวนี้ถ้าคนนี่มันเยอะขึ้น เห็นไหม อย่างเช่นช่วงเทศกาลแบบนี้ 3 โบกี้ไม่พอ เขาต้องเอาโบกี้รถไฟมาต่อเพิ่มใช่ไหมคะ ขยายต่อเป็นโบกี้ที่ 4 โบกี้ที่ 5 เพื่อให้เราเดินทางนี่ เราสามารถบรรทุกคนนี่ได้เยอะขึ้นเราก็สามารถเพิ่มโบกี้ แต่พอหมดช่วงเทศกาลทำไมคะ ก็ดึึงเอาโบกี้ออกมาใช่ไหม ถอดโบกี้ออก เพราะว่ามันไม่มีคนน่ะ คนขึ้นไม่มีแล้ว เราก็ถอดโบกี้นั้นออกไปเราค่อยใส่เพิ่มเข้าไป จะเห็นว่าอันนี้ คือ การจัดเก็บแบบลิงก์ลิสต์นะคะ Link เห็นไหมแต่ละตัวลิงก์เชื่อม อันนี้คือลิงก์ ลิสต์ตัวนี้มันมีข้อมูลเก็บอยู่หลายตัวได้ คราวนี้มาดูว่าแล้วในลิงค์ลิสต์นี่ แต่ละโบกี้ ถ้าเราเทียบกับรถไฟ เราจะเทียบแต่ละโบกี้แต่ละลิงก์ลิสต์เป็นอะไร เราบอกว่า โบกี้นี่ เราจะแทนด้วย node นะคะ เราจะแทนด้วย Node 1 Node นี่ ก็คือเอาไว้ใส่ข้อมูล เอาข้อมูลมาใส่ใน Node นี้ ถ้าเราจะมีข้อมูลหลายตัวเราก็เอา Node มาเชื่อมต่อกันนะคะ แล้วก็เอา Node นี่มาเชื่อมต่อกัน ทีนี้ใน 1 Node นี่คือแบ่งออกเป็น 2 ช่อง Node นี่แบ่งออกเป็น 2 ช่องนะคะ เอาไว้ใช้เก็บข้อมูล ช่องแรกนี่ ช่องนี้ เอาไว้เก็บข้อมูล ส่วนช่องที่ 2 เอาไว้ทำอะไร เอาไว้ใช้เชื่อมโหนดถัดไปถูกไหมคะ มันมีการเชื่อมไปยังโหนดถัดไป เช่น Node Aree นี่ Node ข้อมูลถัดไปคืออะไร ก็ดูเส้นเชื่อมมันเชื่อมาที่ไหน มาที่ Node ของ Suda อ๋อ เราก็ดูเส้นนี้ มันเชื่อมมาที่ยุพิน Node แบบนี้คือมันสุดแล้ว มันสุดคือมันไม่ได้ไปต่อที่ไหนแล้ว สิ่งที่เราเห็นถูกไหมคะ โหนดมี 2 ช่อง ช่องแรกเอาไว้เก็บข้อมูล Node แรกคือเอาไว้ช่องที่ 2 นี่ คือส่วนที่เรียกว่า "next" next คือถัดไป ถัดไป คือ ไปที่ไหน เพราะฉะนั้นนี่ หัวลูกศรนี่ จุดเริ่มต้นจะไปโผล่ตรงชข่อง Next นะคะ Node ที่ 2 เก็บข้อมูล Suda ถูกไหม ก็คือ ็ก็คือช่องที่ 2 ชื่อ Next Next ก็จะชี้มาที่ช่องของ Yupin Node นี้ข้อมูลใส่อะไ ๆ ร ใส่ Yupin เห็นไหมคะ ส่วน next ไปไหนไหม ไม่ไป มันก็เลยมีค่าเป็น null มันก็จะมีค่าเป็น Null ตัวนี้ N-u-l-l ก็คือ ตัวปิดท้ายนะคะ ตัวปิดท้าย ในหัวรถในรถไฟ เราจะรู้ว่า Node แรก คือ มีหัวรถจักรอยู่ใช่ไหมคะ ในลิงค์ลิสต์เราก็ต้องรู้ด้วยว่าหัวของลิงค์ลิสต์อยู่ที่ไหน รู้ได้อย่างไร จะมีตัวชี้นะคะ เส้นนี่เรียกว่า "ตัวชี้" ที่ชื่อว่า head head ก็คือหัวนะคะ จะมีตัวชี้ที่ชื่อว่า "head" นี่ชี้อยู่ ทำให้เรารู้ว่า Node นี้ คือ Node ที่ 1 โหนดนี้ คือ โหนดถัดไป คือ โหนดที่ 2, โหนดที่ 3 นะคะ คราวนี้อย่างที่ครูพูดไปแล้ว ว่า Node นี่ เราเทียบได้กับโบกี้ใช่ไหม ก็คือโบกี้รถไฟแต่ละ Node แต่ละ Node บรรทุกคน กันอย่างนี้ เราก็บันทึกข้อมูล มีหัวรถจักร โอเค แล้วก็มี head คือ โหนดแรก ข้อมูลในลิงก์ลิสต์ก็เทียบได้กับคนที่อยู่ในโบกี้ มี 10 คน นะคะ ตัวเชื่อมของโหนดเทียบได้กับข้อต่อของแต่ละโบกี้ ที่บอกเชื่อมข้อต่อแคก็คือตัว Next นะคะ ตัว Next ก็จะเชื่อมข้อต่อของแต่ละโบกี้ทีนี้ เวลาเราจะสร้าง Node เวลาเราจะสร้าง Node นะคะ เวลาเราจะสร้างโหนดนี่ เพื่อเชื่อมต่อเป็นลิงก์ลิสต์ เราวาดสี่เหลี่ยมแล้วแบ่งเป็น 2 ช่อง เห็นไหม เราวาดสี่เหลี่ยมแล้ววาดเป็น 2 ช่อง เราวาดสี่เหลี่ยมแล้ววาดเป็น 2 ช่อง ช่องแรกก็คือ data ส่วน next นะคะ เอาไว้เชื่อมไปยังโหนดถัดไปแต่ตัวแรกที่เราสร้างนี่มันยังไม่ได้ เชื่อมไปที่ไหน เราก็เลยกำหนดให้มันมีค่าเป็น none ก็เขียนเส้นทับไว้ ก็คือมันยังไม่ไดไปที่ไหน เราก็ขีดทับไว้นะคะ เวลาเราจะเพิ่ม Node เราจะเอามาต่อถูกไหมคะ ต่อตรง Next แล้วก็เชื่อไปที่ไหน เราจะเชื่อมตรงส่วนของที่เรียกว่า "next" นะคะ ให้มันเชื่อมไปที่ไหน คราวนี้ เวลาเราจะ สร้าง node ใหม่ขึ้นมานะคะ วิธีการสร้าง โหนดใหม่ของเรา ต้องมีตัวชี้นะคะ โหนดใหม่ที่เราสร้างขึ้นมานี่ ก็คือสี่เหลี่ยมถูกไหมคะอย่างที่ครูบอก เป็นสี่เหลี่ยมแล้วก็แบ่งเป็น 2 ชเมื่อเราสร้างสี่เหลี่ยมถูกไหมคะ แบ่งเป็น 2 ช่อง ช่องแรกนี่ แบ่งเป็นข้อมูลช่องที่ 2 เอาไว้เชื่อมไปยังโหนดถัดไป สมมติครูใส่ข้อมูลเป็นเลข 10 ครูก็ต้องใส่ในช่องแรกนะ เสร็จแล้วนี่เวลาเราสร้าง node เราต้องมีตัวชี้ ก็วาดลูกศรชี้นะคะ ชี้เข้าหา node ที่เราสร้างขึ้น แล้วใช้ตัวแปรอะไรก็ได้ นะคะ เวลาเราเขียนคำสั่งเราสร้างด้วยมือ วาดถูกไหมคะ แล้วเราจะสั่งให้คอมพิวเตอร์มันทำงานอย่างไร X ตัวแรก ก็คือตัวชี้ของ node ใหม่ เห็นไหมคะ ก็คือ x ตัวนี้นะ x. ด้วย x. .x แล้วตามด้วย data คือส่วนไหน คือ ส่วนของข้อมูล เราต้องเขียนแบบนี้เสมอว่า .datax คือ ชื่อตัวชี้ .data = 3 หมายความว่าเอา 3 ไปหย่อนลง ช่องที่ชื่อว่า "data" ที่ x ชี้อยู่นะคะ ถัดมาส่วน next ล่ะ นะคะ ถ้าเราไม่ได้เชื่อมไปกับตัวไหนเลย ถ้า node แรกที่เราสร้างขึ้นนะคะ มันไม่ได้เชื่อมกับที่ไหนเราก็กำหนดให้ x.next = none ก็คือตัวนี้ เท่ากับ noneเท่ากับ none คราวนี้ ถ้าครูจะสร้างโหนดใหม่ขึ้นมาอีกนะคะ ตัวชี้คือ node 2 แล้วเอาหน่อย ช่อง data ครูก็จะเขียนได้เป็น node2.data = 7นะคะ node2.next = none ก็คือปิดตัวนี้ไว้ นะคะ เดี๋ยวเราดูไปด้วยกันก่อนนะ ลองทำแบบฝึกหัด ถ้าเราต้องการจะเชื่อมโหนดบ้าง เมื่อกี้เราสร้างถูกไหมคะ เราเอาข้อมูลหย่อนลงไปในช่องแรกแล้ว แล้วกำหนดช่องที่ 2 นี่เป็นค่าทึบนะคะ ก็คือปิดมันไว้ ถ้าครูต้องการเชื่อม คราวนี้รถไฟมันต้องมีขบวนถูกหรือเปล่า จะไปคนเดียวไม่ได้ ครูก็จะเชื่อขบวนโดยเอา node อื่นนี่มาต่อท้าย โดยเอาโหนดอื่นมาต่อท้ายนะคะ โดยเอา เช่นครูต้องการเอา node 10 นี่ ตัวนี้มาต่อท้าย 7 นะคะ เอา 10 นี่ มาต่อท้าย 7 สมมุติครูมีถึงแค่ข้อมูล 7 ครูต้องการเอาโหนดที่ 3 นี่ ซึ่งเก็บข้อมูลต่อท้ายต่อจาก 7 นะคะ โดยที่โหนดใหม่ที่ครูสร้างขึ้นก็คือโหนดข้อมูล 10 ถูกไหมคะ เรามีอะไรชี้อยู่ มี node 3 ชี้ออยู่ และที่ข้อมูล 7 นี่มีอะไรชี้อยู่นี่ อะไรชี้อยู่ก็คือโหนด 2 เราจะเชื่อมเอา 10 มาต่อท้าย 7 นะคะ อันนี้อะไรชี้อยู่คือ Node 2 มาอยู่ที่ช่องนี้ถูกไหม เราเริ่มต้นชี้ที่ช่องนี้ ก็เป็นโหนด 2. ด้วยอะไรคะ next ชี้ไปที่ไหน ชี้มาตรงนี้นะคะ ที่ครูชี้อยู่แล้วมาตรงนี้อะไร ชี้อยู่ node3 มันก็เลยเป็นคำสั่ง node2.next Node2.next ชี้ไปที่ node3 ชี้อยู่นะคะ เดี๋ยวดูไปเรื่อย ๆ นะแปบหนึ่งนะคะ โอเคถัดมา เมื่อกี้เราเชื่อมได้แล้วนะคะ การกำหนด head คือ หัว ครูบอกแล้วมันต้องอยู่ต้นลิสต์เลย head จะไปอยู่ที่อื่นไม่ได้เลย ตำแหน่งเดียวที่มันจะอยู่ได้ คือ ต้นลิสต์เท่านั้นมันจะไปชี้ที่ส่วนอื่นไม่ได้เลยนะ head ชี้อยู่ตรงไหน นั่นหมายความว่านั่นคือหัวขบวนนะคะ head อยู่ตรงไหนนั่นคือหัวขบวนเลย สมมติเรามีข้อมูลอยู่แล้วนะ ครูต้องการกำหนัดให้ head ซึ่งข้อมูล 3 นี่มีอะไรชี้อยู่ มีอะไรชี้อยู่ก็คือ node1 เพราะฉะนั้น ครูจะเอา head มาชี้ที่นี่ ครูเลยใช้คำสั่ง head = node1 ชี้ที่ node1 ชี้อยู่นะคะ ถ้าสังเกตจะเห็นว่าพวกนี้คือตัวชี้ เอามาเท่ากันได้ คือ ตัวชี้เอามาเท่ากันได้ ครูย้อนกลับไป เห็นไหมคะ ข้างหลัง .next มันชี้ไปที่ไหน ชี้ไปที่ตัวชี้ แต่ถ้าเป็นลงท้ายด้วย .data เห็นไหมคะ คืออะไร ข้างหลังต้องเป็นข้อมูลเท่านั้น ถ้าตามหลังด้วย.data ต้องเป็นข้อมูลที่อยู่ในช่องนี้มาตอบเท่านั้น โอเค คราวนี้ ถ้าเราต้องการจะเข้าถึงข้อมูลจากลิงก์ลิสต์ที่ครูให้มาด้านบน ครูมีอยุ่ทั้งหมด 3 โหนดด้วยกัน ต้นลิสต์อยู่ไหนคะ ต้นลิสต์อยู่ซ้ายหรืออยู่ขวา อยู่ซ้ายถูกไหม รู้ได้อย่างไร เพราะว่ามันมี head ชี้อยู่นะคะ เลยรู้ว่ามันอยู่ฝั่งโน่นนะ ครูมีตัวชี้อยู่ 3 ตัว นะคะ ที่ชี้อยู่ที่ node แต่ละตัว มี node1 node2 นะคะ ข้อมูลตัวแรก node แรกข้อมูลหมายเลข 7 และ node หมายเลข 3 ตัวนี้ข้อมูลหมายเลข 10 รู้จากไหน มันอยู่ในช่อง data ใช่ไหม มันอยู่ในช่อง data คราวนี้ เชื่อมมาที่รู้ ได้อย่างไรอีก ก็ดูเส้นตัว next เห็นไหมคะ อันนี้ก็ดูที่เส้น next มันเชื่อมมาตัวถัดไป ถ้าเราต้องการเข้าถึงข้อมูลที่อยู่ในลิงก์ลิสต์นะคะ เช่น ครูเขียนคำสั่งแบบนี้ แล้วผลลัพธ์มันจะเป็นแบบไหน head.data เห็นไหมคะ ข้างหลังมันเป็นคำว่า "data" แสดงว่าต้องนำข้อมูลที่อยู่ในช่องฝั่งซ้ายมาตอย ชี้อยู่ตรงนี้ใช่ไหม head.data แล้ว data มันคืออะไร มันคือ 3 ดูต่อนะคะ head.next.data เท่ากับอะไร head อยู่ตรงนี้ .next มานี่แล้ว ถูกไหม แล้ว .data data ก็คือข้อมูล ตอบ = 7 ดูต่อนะคะ head.next.next next 2 ตัวนะคะ แล้วค่อย .data head อยู่ที่นี่ .next ตัวที่ ตัวที่ 1 .next ตัวที่ 2 และ .data เพราะฉะนั้นตอบเท่ากับ 10 โอเคนะ ตัวถัดมาตัวนี้ ตัวนี้ node2 node2 อยู่นี่ node2.next.data ตอบเท่ากับ 10 คนอื่นได้ไหม ได้ไหมคะ node2 เราอยู่ที่... เราเดินอยู่ที่นี่ แล้วเขาบอก next ก็คือเดินถัดไป next คือเดินถัดไป ถัดไปใช่หรือเปล่า เราเดินมาที่นี่แล้ว แล้ว 10 เราก็จะตอบตรงนี้ว่า 10 นะคะ แล้วตัวนี้ล่ะ node1 อยู่ที่นี่ node1.next.data ตอบเท่ากับ... ตอบเท่ากับอะไรคะ 10 เหมือนกัน ได้ไหม next คือ การเดิน เดินต่อไปอีกช่องหนึ่ง ถูกไหมคะ node 1 ก็คือเริ่มต้นเราอยู่ที่ไหน node1 อยู่ที่นี่ พอเขาบอกว่า next เราก็ก้าวถัดมาเห็นไหมคะ มี next อีกตัวหนึ่ง แล้วก็ก้าวถัดมา .data แล้วถามว่าแล้ว .data ถ้าเป็น data มีค่าเท่ากับเท่าไร มีค่าเท่ากับ 10 นะคะ ถ้าครูถามต่อนะคะ ตัวหลังเริ่มเปลี่ยนแล้วนะคะ เดิมนี่ครูตั้งคำถามโดยตัวข้างหลังสุดนี่เป็น data ใช่ไหมคะ ถามว่าเราจะเอาอะไรมาตอบ ถ้าลงท้ายด้วย data นี่ เอาข้อมูลมาตอบนะคะ เอาข้อมูลมาตอบ เอาข้อมูบที่อยู่ในช่องน่ะมาตอบ ถามใหม่ ถ้าครูเปลี่ยนเป็น head.next ครูเปลี่ยนใหม่ ถ้า head.next จะเป็นอะไร ตัวสุดท้ายต่างกันแล้วถูกไหมคะ ตัวสุดท้ายมันเป็น next แล้ว แสดงว่าสิ่งที่ตอบต้องเป็นตัวชี้ ต้องเป็นตัวชี้ ถูกไหมคะ มีอะไรชี้อยู่ มีอะไรชี้อยู่ head.next head.next คือเดินมานี่แล้วถูกไหม next คือการเดิน เดินไปข้างหน้า 1 ก้าว head.next มายืนตรงนี้แล้ว ครูไม่ได้ถาม data นะ ครูถาม head.next คืออะไร มันมาอยู่ตรงนี้แล้ว แล้วมันคืออะไร แล้วมันมีอะไรชี้อยู่ 2 ถูกไหมคะ คือ node2 เดี๋ยวลองดูอีกข้อหนึ่งนะเดี๋ยวครูจะให้ทำแบบฝึกหัด เดี๋ยวนะคะ ครูพยายามจะเขียนอันนี้ก่อน ตัวนี้ node2.next node2 อยู่ที่ไหน อยู่ตรงนี้ node2.next แล้วมันเดินไหม เดิมไหม next เดิน เดินมาที่นี่ อะไรคะ node3 node2.next node2.next อยู่ตรงนี้ อะไรชี้อยู่ node3 นะคะ ใช่ 3 เฉย ๆ คือ node ต้องมี node ด้วยนะจะเห็นความต่างนะคะ ถ้าลงท้ายด้วย .data เอาข้อมูลมาใส่ ถ้าลงท้ายด้วย next หาตัวชี้ใช่ไหม หาตัวชี้มาใส่ คราวนี้เดี๋ยวครูมีแบบฝึกหัดให้อยู่ 6 ข้อ เดี๋ยว ๆ ให้เพื่อนแจก แบบฝึกหัดที่ครูให้ไปนะคะ ดูแผ่นแรก อย่าเพิ่งดูแผ่นอื่นนะคะ ดูข้อแรกดูข้อที่ 1 อย่างเดียวเลย ใช่ พอเห็นขัอที่ 1 แล้วนะคะ เห็นรูปลิงค์ลิสต์ไหม ในกระดาษที่ครูแจกจะมีรูปลิงก์ลิสต์อยู่นะคะ รูปลิงก์ลิสต์นี้มีกี่โหนดคะ มีกี่โหนดตอบว่า 3 โหนด เห็นไหมคะ มีอยู่ 3 โหนดhead ชี้อยู่ที่ไหนคะ head ชี้อยู่ที่ข้อมูล10 นะคะ head ชี้อยู่ที่ข้อมูลเท่ากับ 10 นะคะ อยู่ 6 ข้อ คล้าย ๆ แบบโจทย์บนกระดานเลย ลองทำดู มี 6 ข้อลองทำดูนะคะ (อาจารย์สุธาสินี) โอเคนะคะ เดี๋ยวมาดูเฉลยด้วยกัน ทีนี้ ดูนะคะ ครูมีโจทย์มาให้นะคะ เดี๋ยวครูเอาเส้นนี้ออกก่อน ครูมีโจทย์มาให้นะคะ จะมีอยู่ทั้งหมด 3 โหนดด้วยกัน มีโหนดข้อมูล 10, 20 แล้วก็ 30 นะคะ โหนดแรก รู้ได้อย่างไรว่ามีโหนดแรกอยู่ที่ไหนมี head ชี้อยู่มี head ชี้อยู่ โหนดที่ 2 มี P ชี้อยู่ มี P ชี้อยู่นะคะ มี T มีอะไร ตัว q นะคะ ตัว q ชี้อยู่ ชี้เข้า ๆ ไปที่โหนด q ชี้อยู่ โจทย์ข้อแรกhead.next นะคะ head ตัวหลัง แสดงว่าาต้องตอบเป็นตัวชี้แน่เลย ที่นี่ .next แปลว่า เดินไปอีก 1 ก้าว .next มาอยู่ที่นี่แล้วนี่ที่ครูชี้อยู่นี่มีอะไรชี้อยู่ p ใช่ไหมคะ มี p ชี้อยู่ ถัดมา P.data ข้างหลังเป็น data แสดงว่าต้องเอาข้อมูลในช่องมาตอบ p อยู่นี่ .data ตอบเท่าไหน ตอบ = 20ถัดมา p.next.data เพราะฉะนั้น เราจะต้องหาจุดเริ่มต้น เอามือไปชี้ตัวแรกก่อน คือ p p.next next คือเดิน ถูกไหม เดินถัดมา .data เอาอะไรมาใส่ 30 โอเค ถัดมา q.next q อยู่ที่ไหน ตัวนี้ถูกไหมคะ ตัวสุดท้ายเลยq ชี้อยู่ q.next next มันมีอะมันหยุดแล้ว เพราะฉะนั้น เราก็จะตอบว่ามันคือ null หรือ none ใช้ได้เหมือนกัน ว่าไม่มีอะไรต่อท้ายแล้วจบที่ต้องนี้แล้ว นะคะ จบ ถัดมา q.data q อยู่ไหน q อยู่นี่ .data เอาข้อมูลมาใส่ เพราะฉะนั้น เอาข้อมูลมาตอบ 30 นะคะ ถัดมา มี next หลายตัวเลย head.next.next.data head เราชี้อยู่ที่นี่ .next ตัวที่ 1 เดินมา 1 ช่อง มี .next อีกใช่ไหมคะ .data เสร็จแล้วเอาข้อมูลมาใส่ ตอบ 30 โอเค ได้ไหม สมมติครูมีโจทย์ให้ข้อ 1 ช่วยครูตอบหน่อย จะตอบอะไรดี head.next.data ตอบอะไรคะ ช่วยครูดูหน่อย ดูบนกระดานเร็ว ตอบเท่ากับ...คนอื่นตอบอะไรคะ 20 ใช่ไหมคะ โอเค แปลว่าอะไร 20 อ๋อ อีกอันหนึ่งล่ะคะ p.next ตอบอะไรคะ ข้างหลังเป็น next แล้ว ต้องตอบตัวชี้นะคะ ต้องตอบตัวชี้แล้ว p.next ไม่ใช่ตัวเลขแล้วนะ เพราะว่ามันไม่ได้ลงท้ายด้วย data นะมันลงท้ายด้วย next มัลงท้ายด้วย next เวลาตอบคือ มีอะไรชี้อยู่ p.next p.next ทำอย่างไรคะอ๋อ q ใช่ไหม ดูความต่างนะ ลองดูความต่างนี้กัน ถ้าลงท้ายด้วย .data data สิ่งที่เราเอามาเขียนคืออะไร ก็คือสิ่งที่อยู่ในช่อง เอาสิ่งที่คือ ข้อมูลใช่ไหมคะ แต่เมื่อไรก็ตามที่ตอบลงท้ายถ้าโจทย์ลงท้ายด้วย โอเค โจทย์ลงท้ายด้วย next เห็นไหมคะ next เอาอะไรมาตอบ ตัวชี้ เอาตัวที่ชี้น่ะมาตอบ โอเคนะคะ เมื่อกี้นะคะ คำสั่งพวกนี้เราสั่งให้วิ่งเข้าไปหาข้อมูลที่เราต้องการนะคะ เราสั่งให้ไปหาเดินตรง ไปที่ข้อมูลที่เราต้องการเลย แต่ถ้าเราบอกว่า เรายังไม่รู้เลยว่าในข้อมูลลิงก์ลิสต์นี่มีข้อมูลที่เราต้องการหรือเปล่า เราต้องเดินเข้าไปดุทีละอันทีละอันเราต้อง ไปดูทีละอันว่ามีข้อมูลที่เราต้องการหรือเปล่า ถ้าไม่ใช่ก็เดินไปตัวถัดไป ยังมีข้อมูลที่เราต้องการอยู่ไหม ถ้ายังไม่มีก็เดินไปตัวถัดไปนะคะ ถ้าเจอสิ่งที่เราต้องการแล้วเราก็จะพบนะคะ เหมือนเรากำลังค้นหาอะไรสักอย่างหนึ่ง แต่เราไม่รู้ว่ามันอยู่ที่ไหน เราต้องค่อย ๆ เข้าไปดูทีละห้อง ทีละห้อง ทีละห้องนะคะ แต่ถ้าเรารู้ว่า เช่น กระเป๋าเราเก็บอยู่ที่ห้องไหน เราก็เดินไปที่ห้องนั้นได้เลย แต่ถ้าเราไม่รู้เราก็ค่อย ๆ เปิดไปทีละห้อง ทีละห้อง ทีละห้องนะคะ การเข้าไปทีละห้องนี่ เราจะมีคำสั่งเรียก ก็คือการท่องเข้าไปในลิงก์ลิสต์นะ การท่องเข้าไปเยี่ยมเข้าไปหาในแต่ละช่อง แต่ละช่อง คราวนี้ เวลาเราจะเข้าไปค้นข้อมูล หรือไปแต่ละโหนดแต่ละโหนดนะคะ เราจะไปหาของในแต่ละโหนด แต่ละโหนดนี่ ว่ามีของที่เราต้องการอยู่ไหม วิธีการอันนี้ลองดูนะ เราจะใช้คำสั่งการวนลูปการวนลูปทำซ้ำ เห็นไหมคะ การทำซ้ำเข้าไปเยี่ยมทีละโหนด ทีละโหนด จนครบหรือจนกว่าเราจะเจอโหนดข้อมูลที่เราต้องการ คราวนี้ เวลาเราจะเดินไปในแต่ละโหนด เราจะมีตัวชี้นะคะ จะมีตัวชี้อยู่ 1 ตัว ที่พอตัวชี้ชี้ปุ๊บ เราเปิดเข้าไปดู ไม่มี ตัวชี้นี้ก็จะเดินไปตัวถัดไปนะคะ แล้วก็เปิดเข้าไปดู ตัวชี้นี้ก็จะไปดูที่โหนดถัดไปที่ห้องถัดไปตัวชี้เราจะมีชื่อว่า currentNode นะคะ คือ ตัวชี้คือตัวนี้ มีชื่อว่า currentNode เราเริ่มเดินจากไหนเราเริ่มเดินจากหัว หรือต้นลิสต์เลย เราเริ่มเดินตั้งแต่ต้นลิสต์เลยนะคะ ค่อย ๆ เดินเข้าไปทีละตัว เห็นไหม เราเริ่มต้น currentNode = head เอาตัวชี้ของเรานี่ที่จะเข้าไปในแต่ละโหนดไปชี้เริ่มต้นอยู่ที่ head ชี้อยู่นะคะ เสร็จแล้วก็วนไปเรื่อย ๆ จนถึงโหนดสุดท้าย โหนดสุดท้ายจะรู้ได้อย่างไร โนด next จะเป็น None ถูกไหมคะ คือ ต้องชี้ไปที่โหนดเท่านั้นเราถึงจะวนไปเรื่อย ๆ พอเราชี้เราเปิดเข้าไปดูข้อมูล เสร็จแล้ว เราก็ขยับไปโหนดถัดไปก็คือ currentNode เดินไปที่ currentNode.next ก็คือโหลดถันะคะ โอเค คราวนี้มาดูครูจะลองเดินในแต่โหนดนะคะ เราจะลองเดินในแต่ละโหนด เริ่มต้นให้ currentNode อยู่ที่โหนดแรก ที่ต้นลิสต์เลยนะคะ currentNode ของเราไม่ได้เป็นค่าว่างเห็นไหม มันชี้อยู่ที่ต้นลิสต์ แล้วเราก็ข้อมูลออกมาก็คือจะได้ค่า 3 currentNode.data .data เอาข้อมูออกมา เสร็จแล้วเดินไปโหนดถัดไป ใช้คำสั่งอะไร ให้ currentNode เดิมจะชี้อยู่ที่นี่นะคะ ชี้อยู่ตรงเลข 3 currentNode.next ชี้อยู่ currentNode อยู่ตรงนี้ถูกไหม nมันชี้มาที่ไหน ชี้มาที่เลข 7 เพราะฉะนั้นเอา currentNode มาชี้นะคะ มันคือการขยับ currentNode ไปโหนดถัดไปโอเค เราก็ทำอย่างนี้ไปเรื่อย ๆ เข้าเยี่ยมได้ข้อมูลเบอร์ 7 แล้วเราก็ขยับ currentNode มาตัวถัดไปเหมือนกันนะ ใช้คำสั่ง currentNode = currentNode.nextโอเค อันนี้คือการท่องเข้าไปในโหนดนะคะ คราวนี้เราเข้าไปได้แล้ว เราเข้าไปได้แล้วเข้าไป เรามีโหนดข้อมูลใหม่เข้าไปแทรกในลิงก์ลิสต์ของเรานี่ เราสามารถแทรกมันตรงไหนได้บ้าง 1. ด้านหน้าสุด เห็นไหมคะ 2. ด้านท้ายสุด 3 แทรกเข้าไปตรงกลางเลย นะคะ คราวนี้ดูตัวแรก เราจะเพิ่มโหนดที่ต้นลิสต์ เราจะเพิ่มโหนดใหม่ที่ต้นลิสต์นะคะ อันดับแรกหาต้นโหนดให้เจอก่อน ต้นลิสต์ พูดผิด หาต้นลิสต์ให้เจอก่อน ก็คือที่ head ตอนนี้ head ชี้อยู่ที่ 3 นะคะ ดูนะ head ชี้อยู่ที่ 3 ครูมีโหนดใหม่ให้คือ 22 โหนดใหม่ครูคือ 22 มี p ชี้อยู่ ครูจะเอา 22 มาไมาไว้ด้านหน้า 14เอา 22 มาไว้ด้านหน้า 3 เราต้องสร้างเส้นนี้ เส้นนี้ ขึ้นมา ก็คือเพื่อเอา 22 นี่ ให้ตัวชี้มาที่เบอร์ 3เส้นนี้จะใช้คำสั่งอะไร เส้นสีแดง เส้นสีแดงเส้นนี้จะใช้คำสั่งอะไร โหนดนี่ ที่เรากำลังจะเชื่อมไปนี่ มันคือโหนดมีอะไรชี้อยู่ คือ p ถูกไหมคะ p.next เพราะว่ามันออกมาที่ช่องนี้ ช่องที่ 2 ชี้มาที่โหนดนี้ แล้วโหนดนี้มีอะไรชี้อยู่ head p.next=head เสร็จแล้วทำอะไร head มันมาอยู่ที่ 2 ใช่ไหม head มันมาอยู่โหนดแรกน่ะ มันถูกเปลี่ยนไปแล้ว มาชี้ที่โหนดแรก แล้วโหนดแรกอะไรชี้อยู่ คือ p เพราะฉะนั้น จะใช้คำสั่ง คือ head = pงงไหม เดี๋ยวนะคะ เดี๋ยวครูสร้างอันนี้ให้คราวนี้ดูสมมติครูมีลิงก์ลิสต์มาใช่ไหมคะ แล้วลิงก์ลิสต์ กำหนดข้อมูลมา 2 โหนดเห็นไหมคะ ตัวแรกมีข้อมูล 6 ตัวที่ 2 มีข้อมูล 7 นะคะ ครูบอกว่าอยากจะเอาโหนดใหม่นี่ ที่ครูสร้างขึ้นนี่ที่มีตัว t ชี้อยู่เดี๋ยวครูทำให้มันใหญ่ ๆ ก่อน ที่มีตัว t ชี้อยู่นะคะ ตัว t ชี้อยู่ นี่คือโหนดใหม่นะ ตัวนี้คือโหลดใหม่คือโหนดที่ครูเพิ่งสร้างขึ้น ครูอยากจะเอาโหนดนี้มาไว้ด้านหน้าหมายเลข 6 ทำอย่างไรเอ่ย เอาโหนดใหม่นี่มาไว้ด้านหน้าหมายเลข 6 นะคะ อันดับแรก สิ่งแรกวาดเส้นเชื่อมก่อน วาดเส้นเชื่อมก่อนนะคะ มันจะเชื่อมอย่างไร เราก็ออกจากจุดนี้ เชื่อมมาที่นี่เดี๋ยวนะ ครูวาดใหม่ดีกว่า มันจะต้องมาอยู่ข้างหน้าใช่หรือเปล่า ครูก็วาดแบบนี้ ใช่ไหม ถ้าเราดูดี ๆ นะคะ จะยก 3 มาไว้ข้างหน้าใข่ไหม เพราะว่าหัวลูกศรนี่ อันนี้คือหัวลูกศรนะคะ หัวลูกศรจะชี้มาที่ข้อมูลหมายเลข 6 แล้วเส้นนี้จะชื่ออะไร มันออกจากจุดไหนคะ ตรงนี้ ออกจากจุดช่องนี้ แล้วช่องที่ครูจุดอยู่นี่ ตัวนี้มันมีอะไรชี้อยู่ ก็คือ t ใช่ไหมคะ t.nextรู้ได้อย่างไรว่าเป็น next ก็มันมาจากช่องที่ 2 น่ะ มันมีชื่อว่า next ใช่ไหมคะ ชื่อว่า data ใช่ไหมคะ ช่องที่ 2 มีชื่อว่า next เท่ากับชี้มาที่หมายเลข 6 แล้วหมายเลย 6ชี้อยู่ มี head ใช่ไหมคะ เสร็จหรือยัง ยังเราต้องย้าย head ถูกไหมคะ head มันต้องชี้ทีนี้เพราะมันคือต้นลิสต์แล้ว ตอนนี้ เพราะฉะนั้น มันก็คือให้ head ชี้ที่ไหนคะ ชี้ที่ t จดตัวนี้ไว้ให้ครูหน่อย มีสมุดไหมคะ ถ้ามีก็เขียนด้านหลังกระดาษที่ครูแจกได้เลยลองจดตัวนี้สิคะ แล้วลองวาดรูปนะ ถ้ามีปากกาสี ก็น่าจะดีนะคะ เส้นเชื่อมใหม่ที่เราวาดนี่ น่าจะเป็นอีกสีหนึ่งเราจะได้รู้ว่าอันนี้คือเส้นใหม่ที่เราเพิ่มเข้าไป และเราต้องเขียนคำสั่ง เดี๋ยวรอแป๊บหนึ่งนะคะ เดี่ยวครู Switc อุปกรณ์โอเค อันนี้มันไม่ขึ้นน่ะ ไม่ขึ้นค่ะ แต่ครูขึ้นอยู่นะ โอเคนะคะ รูปนี้จะเป็นการเพิ่มข้อมูลที่ต้นลิสต์อันนี้คือข้อมูลใหม่นะ 3 นี่คือข้อมูลใหม่เอาไปแทรกไว้ข้างหน้านะคะ โดยของเดิมนี่จะมีอยู่แล้วนะคะ คือข้อมูลคือ 6 กับ 7 อันดับแรก ข้างหน้าอันดับแรก ครูจะเอา 3 ไปไว้ข้างหน้า ครูวาดเส้นเชื่อมก่อน ถ้าเราเห็นเส้นเชื่อมเราจะเข้าใจมากขึ้นว่าเส้นเชื่อมจุดเริ่มต้นจากไหนไปที่ไหน ครูต้องการเอา 3 ไปไว้ข้องหน้า นี่ออกจาก 3 ส่วนของ next นะ ชี้ไปที่ 6 นะคะ เขียนคำสั่งคืออะไร t.next ชี้ไปที่ head ชี้อยุ่คือเส้นนี้ จุดเริ่มต้นมันอยู่ตรงนี้ แล้วโหนดนี้อะไรชี้อยู่คือ t.next ชี้ไปที่ head จากนั้น head = tก็คือย้าย head มาชี้ที่ t ชี้อยู่นะคะ เอา head มาชี้ที่ต้นลิสต์ ก็คือโหนดใหม่ ถัดมา ครูจะเพิ่มข้อมูลใหม่ที่ด้านท้ายลิสต์นะคะ ด้านท้ายลิสต์เป็นยังไงของเดิมน่ะมันจะเป็น เส้นถูกไหม เส้นปิดนะคะ เส้นปิด ก็คือตัวท้ายสุดแล้ว ครูจะเอา node99 นะคะ ครูจะเอาโหนด 99 นี่ที่ด้านท้ายเดี๋ยวเราเชื่อมเลย ตัวโหนดสุดท้ายนี้ เรามีตัวชี้ที่ชื่อว่า currentNode ชี้อยู่ เราจะเชื่อมจาก node 10 มาที่99 เราก็วาดเส้นเชื่อมถูกไหมคะ ออกจากส่วนของ next ของเบอร์ 10 ชี้ไปที่ 99 เส้นนี้จะเขียนคำสั่งว่าอะไร มันออกจากโหนดนี้ถูกหรือเปล่า เส้นจุดเริ่มต้นของตัวเชื่อมนี่มันออกจากโหนดนี้ที่มีชื่อว่า นะคะ มันออกจากส่วนไหน .next นะคะ .next ชี้มาที่นี่ชี้มาที่ 99 แล้ว 99 อะไรชี้อยู่ p ดังนั้นจะเขียน คำสั่งได้เป็น currentNode..next= pคือ เส้นนี้นะคะ เส้นนี้มันออกมาจาก node 10 นี่แล้ว node 10 อะไรชี้อยู่ . ส่วนที่ 2 ส่วนตรงนี้มีชื่อว่า nextเลยเป็น currentNode.next ชี้มาที่ไหน ชี้มาที่ p ชี้อยู่ก็คือ 99 แทรกตรงกลางบ้างมีหัวมีท้ายแล้ว แทรกตรงกลางบ้างนะคะ ต้องการเอา 55 นี่ มาแทรกอยู่ระหว่าง 7 กับ 10 คือแทรกตรงกลางระหว่าง 7 กับ 10 แทรกตรงกลางเลยระหว่าง 7 กับ 10 ทำอย่างไร ก็ต้องเขียนเส้นใหม่ต้องไม่มีเส้นตรงนี้แล้ว เส้นเชื่อมระหว่าง 7 กับ 10 แล้ว ต้องวาดเส้นใหม่จาก 7 ต้องมา 55 แล้วจาก 55 ถึงค่อยมาที่ 10 เขียนคำสั่งยังไง เส้นแรกออกจากไหน ออกจากตรงนี้ ตัวนี้มีอะไรชี้อยู่ previousNodepreviousNode.next คือ ส่วนนี้ ชี้มาที่ไหน ชี้มาที่นี่แล้วอะไรชี้อยู่ pได้เป็น previousNode.next = p =p เส้นที่ 1 นะคะ เส้นถัดมาจาก 55 เชื่อมไปที่ 10 นะคะ จุดเริ่มต้นออกจาp.next ชี้ไปที่ 10 แล้ว 10 มีอะไรชี้อยู่ currentNode นะคะ เลยได้เป็น p.next=currentNodeคราวนี้เอาใหม่ เอาใหม่นะ สมมติว่าครูมีโหนดใหม่ นะคะ คราวนี้นะคะ สมมติว่าครูมีลิงก์สลิสต์มาให้ตัวข้างบนนี้นะคะ ครูมีโหนดใหม่ก็คือโหนดข้อมูล 30 ครูอยากเอา 30 ไปต่อท้าย 70 ทำอย่างไรดี ต่อท้าย 70 อันดับแรกครูต้องวาดก่อน เอา 30 ไปต่อท้าย 70 แดงว่าต้องชี้มาที่ 30 ถูกไหม เอา 30 มาต่อท้าย 7 นะคะ 30 มาต่อท้าย 7 ก็คือลากจาก 7เชื่อมมาที่ 30 เส้นนี้จะใช้คำสั่งอะไรมันออกจาก จุดนี้ถูกไหมคะ ตรงจุดข้อมูล 7 นี่ แล้ว 7 มีอะไรชี้อยู่คือ p p. อะไร ช่องนี้มีชื่อว่าอะไรคะ next นะnext ชี้มาที่ไหน ชี้มาที่ 30 แล้ว 30 มีอะไรชี้อยู่ q โอเค ตัว q นะคะ ลองลอกให้ครูหน่อย จดไว้ในสมุดนะคะ ได้ไหมคะ เรียบร้อย คราวนี้ เพิ่มหัวเพิ่มท้ายแล้วใช่ไหม คราวนี้ครูอยากจะแทรก 30 ไปตรงกลาง ครูอยากจะแทรก 30 ไปตรงกลาง ตรงกลางระหว่าง 7 ทำอทำอย่างไรดี จะเอา 30 นี่แทรกตรงกลาง ครูวาดรูปก่อนเลยดีไหมนะคะ เส้นนี้จะต้องหายไปนะ ครูไม่มียางลบครูก้ขีเค่าไว้ก่อน 30 ใช่ไหม แล้วจาก 30 ชี้ไปที่ไหน ชี้ไปที่ 7นะคะ ครูวาดเส้นก่อนเลย แล้วครูก็ขีดค่าเส้นตรงกลสไม่เอาแล้ว เดี๋ยวดูพร้อมกันก่อนนะ เดี๋ยวครูให้จด เดี๋ยวครูให้จดค่ะ เส้นแรก มัน ออกมาจากโหนดข้อมูล 3 นะคะ โหนดนี้อะไรชี้อยู่ คือ head ชี้อยู่ head. อะไรคะ นะ head.next ชี้มาที่ไหน = ชี้มาที่ 30 แล้ว 30 อะไรชี้อยู่ q โอเคเส้นที่ 2 มันออกมาจากโหนด 30 ใช่ไหมคะ แล้วตรง 30 อะไรชี้อยู่ q.next ชี้มาที่ 7 แล้ว 7 มีอะไรชี้อยู่ แล้ว 7 มีอะไรชี้อยู่โอเคเดี๋ยวลอกไว้ เดี๋ยวครูให้ทำแบบฝึกหัดอีก 2 ข้อ เสร็จแล้วใช่ไหมคะ ดู Sheet ที่ครูแจกให้เมื่อกี้หยิบขึ้นมาเลยค่ะ ดูข้อ 2 กับข้อ 3 นะคะ ที่เราจะได้ ณ เวลานี้ ข้อ 2 นะคะ ครูให้เวลาอ่านโจทย์ 2 นาที อ่านโจทย์ก่อนค่ะ ครูให้ทำอะไร อ่านของใครของมันก่อนเร็ว อ่านก่อนหยิบขึ้นมาแล้วนั่งอ่านก่อนนะคะ สิคะ ข้อ 2 ครูสั่งให้ทำอะไร ในโจทย์นะคะ ต้องการ เชื่อมโหนดใหม่ โหนดใหม่ที่ครูให้มานี่ จะเป็นดหนดที่มีตัวชี้ p ชี้อยู่นะคะ ให้เอา node53 นะคะ ที่ p ชี้อยู่ ให้เอาโหนด 53 นะคะ ที่มี p เอามาไว้เป็นโหนดแรกของลิงก์ลิสต์ เราจะเขียนคำสั่งอย่างไรโดยให้วาดรูปเส้นเชื่อมด้วยนะคะ ให้วาดรูปเส้นเชื่อมก่อน จากนั้น เส้นที่เราใส่เข้าไปใหม่นั้นน่ะ เราเขียนด้วยคำสั่งอะไรคะ นี่ข้อ 2 นะ เดี๋ยวดูพร้อมกันก่อนนะคะ เปิดไปดูข้อ 3 เปิดไปหน้าที่ 2 ค่ะ ข้อนี้ครูต้องการที่จะ เชื่อมโหนดใหม่ใช่ไหมคะ ระหว่าง 20 กับ 30 ต้องการเชื่อมโหนดใหม่นะคะ เอาไปไว้ระหว่าง 20 กับ 30 จะแทรกอย่างไรให้เขียนคำสั่งด้วยนะคะ ลองทำ 2 ข้อ ใครทำเสร็จแล้ว ครูจะให้เบรก