วันสอบมีใครไม่ว่างไหมสอบทีหลังคนเดียวใช่ไหมถ้าไม่ว่างก็สอบทีหลังสอบคนเดียวค่ะสอบทีหลังนะเดี๋ยวมาเรียนต่ออีก1เรื่องนะคะก่อนที่เราจะสอบก็คือเรื่องq(อ)u(ง)e(ค)u(ิ)e(ว)คราวที่แล้วstackใช่ไหมคะยังจำได้ไหมคุณสมบัติของstackแ(ั)staร(c)ก(k)คือเข้าก่อนออกท(า)ี(ก)หลังนะคะคุณสมบัติของstackก็คือเข้าก่อนนะคะแล้วก็ออกทีหลังคราวนี้เราจะเห็นว่าคุณสมบัติของstackก็คือเข้าก่อนออกทีหลังนะคะstackมีแค่1ทางถูกไหมคะการเข้าออกนะคะของโครงสร้างข้อมูลแบบstackจะมีทางเข้าทางออก1เวลาเราเพิ่มข้อมูลใส่เข้าไปข้อมูลจะอยู่ด้านบนหรือด้านล่างถ้าเราเพิ่มข้อมูลใหม่เข้าไปข้อมูลจะอยู่ด้านบนนะคะบนสุดของstackแล้วเวลออกถูกไหมคะเวลาเราเอาข้อมูลออกเ(ก)ร(็)า(ค)ก(ื)็(อ)เอาข้อมูลที่อยู่ด้านบนสุดออกนะคะรูปแบบของการจัดเก็บข้อมูลแบบstackนะคะเราเก็บในรูปแบบที่เรียกว่าlistเราเก็บข้อมูลในรูปแบบที่เป็นlistจ(ื)ะ(อ)เก็บข้อมูลเรียงต่อแค่จับเอียงเฉยๆแต่รูปแบบจะเหมือนกันก็คือเราจะเก็บข้อมูลเป็นช่องๆนะคะถ้าเป็นแนวนอนแบบนี้ตัวแรกนี่ก็คือตัวที่เก็บด้านซ้ายก็เรียงลำดับไปเรื่อยๆนะคะการเก็บข้อมูลแบบlistเราจะมีindexนะคะเป็นตัวกำกับหมายเลขช่องต้องการเอาข้อมูลออกช่องสุดท้ายก็ต้องรู้ว่าindexตัวสุดท้ายคืออะไรแล้วก็ดึงข้อมูลออกมานะคะหมายเลขindexที่ชี้ในlistจะเริ่มต้นที่เลขอะไรเอ่ยindexเราจะเริ่มต้นที่0ถูกไหมคะหมายเลขindexก็คือหมายเลขของแต่ละช่องนี่จะเริ่มที่0,1,2ไลไปเรื่อยๆนะคะต้องการเข้าถึงข้อมูลที่indexตัวสุดท้ายก็คือเป็นindexหมายเลข4นะคะเป็นแนวตั้งเหมือนกันก็จะเก็บข้อมูลโดยมีหมายเลขindexเป็นตัวชี้นะคะเป็นตัวกำกับในแต่ละช่องอันนี้คือstackแล้วเรามีการเก็บข้อมูลที่เป็นแบบlistนะคะอันนี้คือ1รูปแบบของstackเราจะเรียนอีก1โครงสร้างก็คือคิวคราวนี้ก่อนอื่นstackจะมีคำสั่งที่เอาข้อเข้ากับเอาข้อมถูกไหมคะคำสั่งของการเอาข้อมูลเข้าลงไปในstackใช้คำสั่งใช้คำสั่งอะไรเอ่ยใช่(้)คำสั่งตัวไหนถ้าเอาข้อมมีเอาข้อมูลเข้ากับนำข้อมูลออกสมมุติว่าในstackส(ั)ม(บ)ม(ไ)ุ(ป)ต(น)ว(น)่(ึ)า(ง)ในstackถ้าเราต้องการเอาข้อมูลเข้าจะใช้คำสั่งpushหรือpoppusht(อ)ห(า)ร(ข)ื(้)p(อ)o(อ)p(ก)ใช้คำสั่งpopu(ง)pushpoppuจ(s)ะ(h)ต้องบอกด้วยว่าpushข้อมูลอะไรใช่ไหมคะก็ใส่หมายเลขข้างในdataอะไรก็ได้ที่เราต้องการpopก็คือเอาข้อมูลออกมาก็จะส่งค่าออกมาว่าแล้วข้อมูลอะไรที่เราดึงออกจากstackนะคะจะมีpushกับpopถ้าพูดถึงstackpushpopนะคะคราวนี้มาดูเรื่องคิวทุกคนรู้จัก"คิว"ไหมคะเคยได้ยินคิวไหมคะในชีวิตประจำวันเวลาทานไปซื้อข้าวที่โรงอาหารต้องเข้าคิวไหมใช่ไหมคะก่อนจะขึ้นรถบัสกลับบ้านต้องต่อคิวไหมต่อถูกไหมคะหรือเราจะซื้อของอะไรก็ตามนะคะต้องมีการเข้าคิวก็คือต่อคิวไปแบงก์ต้องมีคิวไหมมีเราต้องไปกดขอบัตรคิวนะคะจะได้ลำดับที่เท่าไรq(น)u(ะ)e(ค)u(ะ)e(ใ)ะ(โ)ะ(บ)คิวในชีวิตประจำวันเหมือนกันเลยใครมาก่อนได้ก่อนหรือได้ทีหลังได้ก่อนถูกไหมคะ""ก็ต้องได้ก่อนคนมาทีหลังได้ทีหลังถูกไหมคะเพราะฉะนั้นconceptของคิวก็คือมาก่อนได้ก่อนเข้าก่อนเข้าก่อนออกก่อนถูกไหมคะเข้าก่อนออกก่อคิวเข้าก่อนออกกก่อนแต่ถ้าเข้าก่อนออกทีหลังนั้นคือstackใช่ไหมคะคือรูปแบบของโครงสร้างจะมี2แstackเพราะฉะนั้นเมื่อเราบอกว่าคิวคือเข้าก่อนออกก่อนนะคะมันจ(ล)ะ(ย)ต้องมีทางเข้ากับทางออกคนละทางใช่ไหมเข้าทางหนึ่งออกทางหนึ่งเข้าข้างหลังออกข้างหน้าถูกไหมคะคิวคือเรค(เ)ิ(ร)ว(า)ต่อจ(ค)า(ิ)ก(ว)ข(ด)้าง(น)หลังแต่เวลาเอาออกใช่ไหมคะก็ต้องออกด้านหq(ท)u(า)e(ง)ก็คือจะมีอยู่2ทางข้อมูลที่นำเข้าไปเก็บก่อนจะถูกน(อ)ำ(า)ไปใช้งานก่อนข้อมูลที่เข้าไปทีหลังนะคะก็จะถูกนำออกมใช้งานทีหลังอันนี้คือค(c)อ(o)น(n)เ(c)ซ(e)็(p)ป(t)ของคิวที่เราเข้าใจรูบแบบโครงสร้างของคิวนะคะเราสามารถจัดเก็บได้แบบไหนเก็บได้เหมือนแบบstackจะเก็บโดยการใช้listก็ได้เก็บโดยการใช้linkedlistก็ได้นะคะรูปแบบแบบนี้ก็คือlinkedlistใช้(่)ไหมคะรูปแบบด้านซ้ายที่เป็นแนวตั้งเราเก็บแบบlistเหมือนstackเพราะฉะนั้นแล้วนะคะค(c)อ(o)น(n)เ(c)ซ(e)็(p)ป(t)ของq(ว)หรือstacklistหรือเป็นlinkedlistได้เหมือนกันนะคะตอนstackเราใช้listแล้วนะคะพอมาคิวเดี๋ยวเราจะลองเก็บข้อมูลแบบนี้นะคะเราจะเก็บข้อมูลที่เป็นแบบlinkedlistแบบนี้ตัวนี้นะคะlinkedlistเหมือนกับรถไฟใช่ไหมคะlinkedlistรถไฟจะเป็นโบกี้linkedlistก็เหมือนกันจะเก็บข้อมูลเป็นnodeแล้วแต่ละโ(n)ห(o)น(d)ด(e)ก็เชื่อมด้วยกันนะคะแต่ละnon(d)eที่เราต้องการเหมือนกับในรถไฟ1โบกี้ก็จะมีคนนั่งใช่ไหมคะคนก็คือข้อมูลนั่นล่ะต้นlistค(ด)ื(้)อ(า)ะ(ง)ไรlinkedlistคืออะไรนะคะรถไฟะ(ง)ไรคือด้านหน้าหรือด้านหลังมีอะไรเอ่ยทำให้เราสังเกตมีหัวจักรถูกไหมหัวจักรจะเป็นตัวบอกว่านี่คือด้านหน้าของรถไฟในlinkedlistต(เ)ั(ช)ว(่)้(ว)็(ู)เ(้)ห(ไ)ม(ด)ื(้)น(ร)ก(ว)ั(่)น(า)ด้านหน้าของlinkedlistคืออะไรมีอะไรชี้อยู่มีลูกศรมีตัวชี้ที่ชื่อว่าheadใช่ไหมคะมีลูกศรที่ชื่อว่าheadชี้อยู่คือตัวนี้นะคะเพราะฉะนั้นa,b,c,dโ(n)ห(o)น(d)ด(e)แรกของlinkedlistตัวนี้คือaใช่ไหมคะแล้วโ(n)ห(o)น(d)ด(e)สุดท้ายคืออะไรเอ่ยddogใช่ไหมคะnon(d)eสุดท้ายddogในq(ว)u(น)e(ะ)u(ค)e(ะ)เราจะรู้ได้อย่างไรว่าเป็นnodeสุดท้ายมีตัวชี้ที่ชื่อว่าtailt-a-i-ltailตัวนี้จะเป็นตัวชี้ที่บอกว่าnodeนี้คือnodeสุดท้ายของlinkedlistตัวนี้นะคะheadชี้ที่ต้นlisttเ(a)ท(i)ล(l)ชี้ที่ท้ายlistทบทวนอีกแบบหนึ่งใน1nodeนะคะตัวนี้เราจะมีชื่อเรียกว่าอะไรคะnon(d)eใช่ไหม1รูป1บ็อก(ค)ตัวนี้คือnode1nodeแบ่งออกเป็นกี่ช่อง2ช่องใช่ไหมคะช่องแรกเอาไว้ทำอะไรช่องนี้เอาไว้ทำอะไรช่องด้านซ้ายเอาไว้เก็บอะไรเก็บข้อมูลถูกไหมคะช่องด้านซ้ายเราไว้ใช้เก็บข้อมูลใช่ไหมคะเราใช้เก็บข้อมูลแล้วช่องทางขวาไว้ทำอะไรช่องทางขวาไว้อะไรคะในnon(d)eแต่ละnon(d)eเหมือนรถไฟถูกไหมคะเหมือนรถไฟเวลาเราจะเชื่อมแต่ละnodeต้องเชื่อมกันไหมแต่ละโบกี้ต้องเชื่อมไหมเชื่อเ(อ)พ(ย)ร(่)ะ(น)จะเป็นรถไฟได้อย่างไรใช่ไหมคะมันก็ต้องเชื่อมกันใ(า)ช(ะ)่(ฉ)ไ(ะ)ห(น)ม(ั)ค(้)ะ(น)ช่องด้านขวาจะเป็นช่องที่เอาไว้ใช้เชื่อมnodeถูกไหมคะช่องตรงนี้ที่อยู่ด้านขวาจะเอาไว้ใช้เชื่อมไปยังnodeถัดไปมีชื่อเรียกไหมช่องที่เก็บข้อมูลเราจะเรียน(ก)ช่องนี้ว่าอะไรจำได้ไหมdataใช่ไหมคะจำได้ไหมช่องที่เก็บข้อมูลจะมีชื่อเรียกว่าb(d)e(a)taแล้วช่องที่ใช้เชื่อมไปยังโ(n)ห(o)น(d)ด(e)อื่นมีชื่อว่าชื่อว่าอะไรเอ่ยชื่อว่าnextถูกไหมคะ1nodeจะประกอบไปด้วย2ส่วนส่วนที่เก็บข้อมูลเรียกว่า"de(a)ta"และส่วนที่ใช้เก็บตัวเชื่อมที่จะเชื่อมไปยังnodeถัดไปมีชื่อว่า"next"คุ้นไหมเริ่มคุ้นไหมมีชื่อว่าnextจะมีdataกับnextนะคะคราวนี้คราวนี้สมมุติว่าครูมีque(ค)u(ิ)e(ว)นะคะตัวนี้คือque(ค)u(ิ)e(ว)ครูมีque(ค)u(ิ)e(ว)นะคะมีกี่node3nodenodeข้อมูลคืออะไร10nodeสุดท้ายคือ30รู้ได้อย่างไรเพราะว่ามีheadกับtailเป็นตัวบอกถูกไหมคะอันนี้คือnodeแรกอันนี้คือnodeสุดท้ายนะคะแล้วรู้ว่าโ(n)ห(o)น(d)ด(e)แรกรู้ได้อย่างไรก็มีheadชี้อยู่ตรงนี้รู้ได้อย่างไรคือnodeสุดท้ายก็มีte(a)a(i)lชี้อยู่นะคะเราเลยรู้ว่าได้ไหมคราวนี้นะคะมาดูว่าlinkedlistตัวนี้นะคะมีheadชี้ที่nodeแรกมtailnodeนะคะแต่ละnodeมีการเชื่อมโยงกัเส้นเชื่อมนะคะเส้นเชื่อมระหว่าง20-(บ)30ถ้าเราจำการทำงานของlinkedlistได้ส่วนที่เก็บข้อมูลจะมีชื่อว่าdataนะคะส่วนที่ใช้เชื่อมจะมีชื่อว่าnextnextนะคะnextเป็นตัวบอกว่าชี้ไปที่ไหนdataจะบอกว่าโ(n)ห(o)น(d)ด(e)นี้เก็บข้อมูลอะไรนะคะครูถามว่าhead.dataจะมีค่าเท่ากับเท่าไรheadคือตัวไหนตัวนี้.dataก็คือข้อมูลใช่ไหมคะเพราะฉะนั้นnodeนี้เก็บค(ม)่(ู)า(ล)เท่าไร10ถูกไหมคะเพราะฉะนั้นhead.dataมีค่าเท่ากับ10มีใครสงสัยไหมว่า10มาจากไหนได้ใช่ไหมคะถ้าอย่างนั้นครูถามต่อtail.dataจะมีค่าเท่ากับtail.dataเท่ากับ30นะคะโอ.เค.ถ้าคำสั่งเป็น.dataให้หาข้อมูลข้างในnodeนั้นมาใส่คำตอบจะต้องเป็นค่าข้อมูลคราวนี้มาดูนะคะhead..next.dataแสดงว่าต้องตอบเป็นค่าข้อมูลนะคะถ้าลงท้ายด้วย.dataแสดงว่าเราอยากรู้ว่าข้อมูลคืออะไรheadตัวนี้ถูกไหมคะheadนะคะเห็นไหheadheadheadชี้อยู่ที่ไหนชี้อยู่ที่10head.nextนะคะhead.nexthead.nextคือตัวนี้มันชี้ไปที่ไหนชี้ไปที่โ(n)ห(o)น(d)ด(e)ถัดไปคือตอนนี้มันชี้อยู่ที่โ(n)ห(o)น(d)ด(e)ถัดไปแล้วnodeนี้เขว่า.dataเพราะฉะนั้นตอบตอบเท่าไรคะ20นะคะheadคือตัวนี้.next.nextแล้วอย่างไรnextเพราะฉะนั้นตัวชี้อยู่ที่นี่.nextแล้ว.dataเพราะฉะนั้นคำตอบคือ20นะคะถัดมาtail.nexl(t)te(a)l(i)l.nextตัวแรกคือตัวชี้ใช่ไหมคะtailชี้อยู่nodeสุดท้ายนะคะte(a)l(i)l.nextมันไปชี้ที่ไหนไหมte(a)l(i)l.nextมันเชื่อมไปที่nodeไหนไหมคมันคือnodeสุดท้ายแล้วใช่ไหมคะเพราะฉะนั้นคำว่า.nextของมันnoneคือไม่ได้เชื่อมไปที่ไหนนะคะคือไม่ได้เชื่อมไปที่ไหนnoneถูกไหมมันคือnodeสุดท้ายนะคะมันไม่ได้เชื่อมู(ไ)่(ป)ที่ไหนคราวนี้ครูถามอีก1ข้อมาตัวนี้head.next.nextแล้วก็.dataตอบเท่ากับ=(บ)30ถูกไหมคะเราก็ต้องค่อยๆไล่headถูกไหมคheadะ.nextชี้มาที่นี้(่)แล้ว.nextอีกครั้งหนึ่งnextไปไหนมาที่นี่แล้ว.dataก็เลยต้องตอบ30เริ่มไล่ถูกไหมทีนี่ลองดูก่อนนะเรามาทบทวนตัวlinkedlistก่อนนะคะพอเราทำในque(ค)u(ิ)e(ว)เราจะทำได้ครูมีlinkedlistให้นะคะคือตัวเดิมเลย10,20แล้วก็30มีheadกับtailชี้ให้เรียบร้อยนะคะครูบอกว่าครูต้องการเพิ่มnodeใหม่เข้าไปที่ท้ายlistครูต้องการเพิ่มnodeใหม่คือnode5ถูกไหมคะnodeข้อมูล5ตัวนี้ไปไว้ที่ท้ายlistเพราะฉะนั้น5จะต้องต่อ1(3)0หรืออยู่หน้า10ท้ายlistเพราะฉะนั้น5ต้องมาต่ออยู่ที่30ถูกไหมคะ5จะต้องมาต่ออยู่ที่30และ5จะเป็นnodeสุดท้ายใช่ไหมพอเอา5มาต่อหลัง305กลายเป็นnodeสุดท้ายใช่ไหมใช่5กลายเป็นnodeสุดท้ายปัญหาคือครูจะเชื่อม5มาอยู่หลัง30ได้อย่างไรอันดับแรกทำอย่างไรคะเราก็ลองวาดเส้นถูกไหม5มันต้องเชื่อมมาที่เท่าไร30ต้องเชื่อมมาที่5ถูกไหมคะ30ต้องเชื่อมมาที่5ครูวาดเส้นเชื่อมละครูจะเขียนคำสั่งได้อย่างไรเส้นนี้ที่เชื่อมมาใหม่นี่ที่ครูลากใหม่จะต้องใช้คำสั่งอะไรดีคราวนี้มาดูว่าจะใช้คำสั่งอะไรnodeสุดท้ายตัวนี้มีอะไรชี้อยู่มีอะไรคะมีte(a)l(i)lชี้อยู่ใช่ไหมคะเราต้องการเชื่อมไปยังnodeถัดไปเราต้องใช้ส่วนไหนเป็นตัวเชื่อมdataหรือnextnextถูกไหมคะtail.nextให้ชี้ไปที่ไหนเมื่อเราจุดตรงนี้ได้แล้วte(a)l(i)l.nextให้ชี้ไปที่ไหนชี้ไปที่55นี่มีอะไรชี้อยู่มีpชี้อยู่ก็กำหนดให้te(a)l(i)l.nextชี้ไปที่pชี้อยู่คราวนี้นะคะยังไม่จบถูกไหมยังไม่จบte(a)l(i)lเราจะชี้ที่ไหนหน้าที่ของtailคือชี้ที่ท้ายสุดตอนนี้อะไรคือท้ายสุด5เพราะฉะนั้นต้องย้ายtae(i)ll(5)จะย้ายtailได้อย่างไรให้tailชี้ที่pชี้อยู่ใช่ไหมคะให้te(a)l(i)lชี้อ(ท)ย(ี)ู(่)่(p)ท(ช)่pชี้อยู่ที่ไหนก็เอาtailนั่นล่ะมาชี้นะคะเราก็จะได้แล้วว่าnodeสุดท้ายของlinkedlistนี้nodeข้อมูล5นะคะรู้ได้อย่างไรนี่ไงtailชี้อยู่จด์(ๆ)ไว้หน่อยมีกระดาษไหมม(อ)ี(า)กระดาษขี(ึ)้นมาห(์)่(ค)อ(ร)ย(ู)ใส่ไว้ที่classroomโดยการเปิดclassroomในรายวิชานี้ครูอัปไฟล์ไ(ใ)ว(ห)้หมด้(่)ว(ะ)คราวนี้ต่อแล้วถ้าครูต้องการลบบ้างเมื่อกี้ครูเพิ่มไปด้านหลังถ(ใ)ู(ช)ก(่)ไหมคะครูต้องการลบข้างหน้าบ้าง10ลบ10นี้ออกมานะคะเอา10นี้ออกไปเมื่อเราลบ10ออกไปแล้วnodeแรกของlinkedlistนี้คือ20ถูกไหมคะเมื่อลบ10ออกไปแล้วนี่node20เพราะฉะนั้นเราจะทำอย่างไรเราก็แค่ย้ายheadนี่มาชี้ที่nodeถัดไปถูกไหมคะheadที่ไหนnodeนั้นคือnodeแรกเราจะย้ายheadมาที่nodeถัดไปได้อย่างไรใช้คำสั่งอะไรดีให้headเลื่อนไปยังnodeถัดไปh(ช)e(้)a(ค)d(ำ)เ(ส)ท(ั)hา(e)ก(a)ั(d)บ(=)ให้headนี่ไปชี้อยู่ที่20นั่นล่ะจะไปได้อย่างไรเอ่ยจะไป20ก็คือเดี๋ยวนะไปได้อย่างไรให้headถูกไหมคไปชี้ที่head.nextชี้อยู่head.nextชี้อยู่ที่ไ20ใช่ไหมคะhead.nextถ(ย)20ก(พ)ไ(ร)ห(า)ม(ะ)ค(ฉ)head=head.nextheadที่node20head=head.nextหมายความว่าให้เอาheadไปชี้อยู่ที่head.nextชี้อยู่เหมือนกัtail=ptailไปชี้อยู่ที่pชี้อยู่ตรงนี้เมื่อheadเลื่อนไ(ู)ป(่)ที่node20มันก็จะถูกลบไโดยโอ.เค.มีกระดาษไหมเอ่ยใครไม่มีกระดาษมาหยิบนะบางทีมันต้องจดนะแล้วก็เย็บไว้ด้วยนะคะทุกคนได้กระดานะคะครูมีlinkedlistมาให้นะคะ4nodeครูมีlinkedlist4nodeที่เชื่อมกันไปnode1มี1nodeท22node3มีค่า3nodeที่4มีค่า4ครูกำหนดheadกับtaillistlistนะคะลองทำแบบฝึกหัดให้ครูหน่อยข้อที่1ครูต้องการเพิ่มnodeใหม่เข้าไปที่ท้ายlistนะคะเพิ่มnodeใหม่เข้าไปที่ท้ายlistโดยที่nodeใหม่ท(ม)่(ต)q(ั)u(ว)e(ช)u(ี)e(้)คือque(ค)u(ิ)e(ว)ชี้อยู่ทำอย่างไรวาดรูปถูกไหมคะแล้วก็เอา5ไปต่อด้านหลังแล้วเขียนคำสั่งของเส้นที่เราเชื่อมระหว่างโ(n)ห(o)น(d)ด(e)ข้อมูล4กับโ(n)ห(o)น(d)ด(e)ข้อมูล5ใช้คำสั่งอะไรในการเชื่อมเชื่อมเสร็จtailต้องอยู่ที่ไหนนะคะอันนี้คือข้อที่1ข้อที่2นะคะลบข้อมูลต้นlistลบข้อมูลต้นlistลบอย่างไน(ร)ก็เลื่อนheadไปยังnodeถัดไปเท่านั้นเองก็วาดรูปใช่ไหมคะเราลบต้นlistออกแล้วheadจะไปชี้อยู่ที่ไหนเลื่อนheadด้วยคำสั่งอะไร2ข้อค่ะลองทำในกระดาษให้วาดรูปก่อนนะคะแล้วก็เขียนคำสั่งลอกโจทย์ไว้ก่อลอกโจทย์รูปบนสุดข้อ1ครูให้ใช้คำสั่งอะไรข้อ1ลอกโจทย์ค่อยวาดรูปการเชื่อมก(ว)า(ก)ร(็)เขียนคำสั่งคราวนี้พอลอกโจทย์เสร็จวาดรูปนี้เสร็จแล้วมาทำข้อที่1ลอกโจทย์ไว้ก่อนเพิ่มnodeใหม่ที่ท้ายlistก็คือลอกโจทย์ไปก่อนแล้วก็มีnodeใหม่ใช่ไหมคะพอลอกโจทย์เสร็จแล้วเราก็มาวาดnodeให้มันเชื่อมต่อกันเราก็เชื่อมnodeเราก็เชื่อมnodeให้มันต่อกัถูกไหมคะการเชื่อมตรงนี้จะเขียนคำสั่งว่าอะไรคำสั่งแรกเขียนว่าอะไรแล้วก็คำสั่งที่2คำสั่งแรกเป็นอะไรคะเส้นเชื่อมคำสั่งที่2ก็คือเลื่อนtailถ้าใครเสร็จข้อที่1เสร็จแล้ว2ข้อที่2ครูเ(้)อ(ล)า(บ)ข้อมูลที่ต้นlistเราก็วาดรูปนะคะผลลัพธ์ที่ได้เป็นอย่างไรเป็นรูปนี้headมันมาได้อย่างไรheadมันมา2ได้อย่างไรheadต้องเขียนคำสั่งของการเลื่อนheadไปยังnodeถัดไปข้อ1นะคะจะต้องมีอยู่2คำสั่งคำสั่งที่1ก็คือเส้นเชื่อมใช่ไหมคะคำสั่งที่2ก็ต้องเลื่อนtailนะคะเพราะเราต้องข้างหลังน่ะnodeมันคงไม่ใช่nodeเดิมแล้วก็ต้องเลื่อนtailไปที่ไหนในการเขียนคำสั่งนะคะต้องดูด้วยว่าทำคำสั่งไหนก่อนคำสั่งไหนหลังนะคะถ้าเขียนสลับความหมายก็จะเปลี่ยนทันทีนะคะเราต้องเชื่อมก่อนเราต้องเชื่อมก่อนนะคะแล้วค่อยเลื่อนtailเราต้องวาดเส้นนี้ก่อนนะคะต้องวาดเส้นที่เชื่อมก่อนเชื่อมได้แล้วต(ค)่อยขยับtailมาดูพร้อมกันข้อ1ถูกไหมคะครูบอกว่าให้เพิ่มnodeใหม่ไปที่ท้ายlinkedlistเพิ่มnodeใหม่ไปที่ท้ายlinkedlistครูให้เขียนคำสั่งใช่ไหมคะเราจะเชื่อมระหว่างnode4กับnode5ได้อย่างไรข้อแรกก็คือต้องเชื่อมnode45จะใช้คำสั่งอะไรเรารู้ว่านี่เราเชื่อมnode4กับnode5เราจะสั่งให้คอมพิวเตอร์นี่เพ(ช)ิ(ื)มได้อย่างไรนะคะเราก็ลองทำก่อนก็คือเราก็ลากเส้นแ(่)บ(า)บ(ง)นี้เส้นนี้คือเส้นใหม่ที่เราจะต้องเชื่อมระหว่าง2nodeนี้นะคะเราจะเขียนคำสั่งเพื่อสร้างเส้นเชื่อมเส้นนี้เราจะเขียนคำสั่งเพื่อสร้างเส้นเชื่อมเส้นนี้เราจะใช้คำสั่งอะไรnodeนี้มันออกมาจากnodenodeมีtailใช่ไหมคะนี่จะอ้างถึงโ(n)ห(o)น(d)ด(e)นี้ต้องหาตัวชี้ให้ได้nodeนี้มีtailชี้อยู่ถูกไหมคะเส้นเชื่อมที่เราสร้างออกจากส่วนที่ชื่อว่าnextนะคะเพราะฉะนั้นก็เป็นtail.nextแล้วให้เชื่อมไปที่ไหนเชื่อมไปที่qu(5)e(น)u(ี)e(่)แล้ว5อะไรชี้อยู่queueชี้อยู่ถูกไหมคะพอพูดถึงnextต้องหาว่าจะชี้ไปที่ไหนพูดถึงdataดูข้อมูลข้างในnodeว่ามันคืออะไรนะคะเสร็จแล้วคำสั่งที่2เมื่อเราสร้างเส้นเชื่อมนี้แล้วโ(n)ห(o)น(d)ด(e)สุดท้ายคืออะไรคะคือ5ใช่ไหมเราจะเลื่อนtailมาที่5ได้อย่างไรก็คือtail=queueก็คือเอาtailไปชี้ที่queueชี้อยู่1ข้อจบถูกไหมคะนี่คือการเพิ่มโ(n)ห(o)น(d)ด(e)ใหม่tailชี้ที่queueเพราะฉะนั้นtailจะชี้อยู่ที่นี่ที่5นะคะและqueueก็ชี้อยู่ที่นี้เช่นกันถ(ห)ู(็)ก(น)ไหมคะครูไม่เขียนข้างหน้านะครูยกส่วนปลายมาเลยtailจะชี้อยู่qu(ท)e(ี)u(่)e(q)ชี้อยู่คือชี้ที่เดียวกันนะคะคือชี้ที่node5จดเอาไว้ดูนะคะจดเอาไว้ดูเร็วมีใครสงสัยไหมคะอะไรชี้ไปไหนพยายามทำความเข้าใจนะคะเวลาเราเชื่อมโ(n)ห(o)น(d)ด(e)นี่เราก็ต้องรู้ว่าเส้นเชื่อมจุดแรกที่เราจะเชื่อมไปยังnจ(o)ุ(d)ด(e)ถัดไปnodeมีอะไรชี้อยู่แล้วเราลากออกไปนี่เราลากออกจากส่วนที่ชื่อว่าnextใช่ไหมคะtail.nextแล้วชี้ที่ไหนก็ชี้ไปที่นี่แล้วที่นี้(่)อะไรชี้อยู่queueมันก็เลยเป็นtail.next=queueครูเขียนภาษาไทยไว้ให้นะคะtail.next=queueก็คือให้ตัวชี้tailในส่วนnextชี้ไปที่queueชี้อยู่จะชี้หรือเชื่อมตรงนี้ก็ได้เชื่อมไปที่queueชี้อยู่ส่วนคำสั่งที่2tail=qเ(ื)ท(อ)่(ใ)า(ห)ก(้)ั(t)บ(a)q(i)u(l)e(น)u(่)e(ะ)ชี้ไปที่queueชี้อยู่อันแรกเสร็จหรือยังครูเปลี่ยนได้ไหมเสร็จหรือยังคะเสร็จแล้วค่ะคราวนี้มาดูข้อที่2โจทย์บอกว่าให้ลบข้อมูลnodeแรกของlinkedlistลบโ(n)ห(o)น(d)ด(e)แรกใช่ไหมคะก็คืลบข้อมูลตัวนี้-(บ)1ลบแล้วจะเป็นแบบไหนเป็นแบบนี้นะคะหลังจากลบหลังจากลบnodeแรกแล้วเราจะได้ผลลัพธ์ตามนี้ใช่ไหมคะแล้วเราจะลบnodeแรกออกไปได้อย่างไรก็บอกเขาว่าheaบ(d)ไปยังnodeheadชี้อยู่ที่ไนอันนั้นคือnodeแรกเพราะฉะนั้นเราจะลบโ(n)ห(o)น(d)ด(e)1นะคะheadจะต้องไปท(ช)่(้)อยู่ที่2ก็คือคำสั่งก็คือเลื่อนheadไปยังส(n)ั(o)่(d)ง(e)ถัดไปใช้คำสั่งว่าhead.head=head.nextหมายความว่าอะไรให้headนะคะให้headไปชี้ทhead.next่head.nextชี้อยู่ที่2เพราะฉะนั้นเอาheadไปชี้ที่นี้(่)head=head.nextก็คือให้headไปชี้ที่head.nextซึ่งก็คือnodeถัดไปจดเอาไว้ดูนะคะ์(ด)นะคะเดี๋ยวท้ายชั่วโมท(ง)ครูจะเช็กว่าใครจด2ข้อหรือทำ2ข้อนี้หรือเปล่าเดี๋ยวครูจะติ๊กคะแนนนะคะลอกใส่กระดาษไว้ดูนะคะเดี๋ยวก่อนเลิกนะครูจะดว่าใครจดบ้างให้จดก่อนนะคะจะเข้าใจหรือยังไม่เข้าใจจดเอาไว้ดูพอเราจดนะคะแล้วเราก็ต้องทบทวค่อยๆดูนะคะว่าเขาเขียนคำสั่งอย่างไรเขาเชื่อมเส้นอย่างไรต้องกลับไปทบทวนนะคะไม่เข้าใจต้องถามเพื่อนจะมีเพื่อนส่วนหนึ่งพอเข้าใจอยู่เขียนคำสั่งได้ต้องไปถามนะคะต้องถามที่จดๆใส่กระดาษต้องเก็บเอาไว้ด้วยจดใส่ไหนนะคะเก็บเอาไว้เวลาสอบนะคะครูจะให้เปิดเอกสารและตรวจเอกสารด้วยนะว่าเอาอะไรบ้างมาถ้าที่จดๆในห้องไม่ถือมานี่ไม่ได้นะคะจะเช็กว่าเอกสารครบไหมมีครบหรือเปล่านะคะไปเช็กกับเพื่อนนะคะเพื่อนมีอะไรเราต้องมีเสร็จหรือยังเสร็จหมดแล้วนะคือเดี๋ยวครูจะวาง...วางเอกสารไว้บนโต๊ะให้นะคะสามารถมาเอาบนโต๊ะหน้าห้องได้โอ.เค.ถ้าจดไม่ทันนะคะมาถ่ายรูปที่หน้าห้องท้ายชั่วโมงทำไมเราต้องเรียนlinkedlistเมื่อกี้นะคะทำไมเราต้องทบทวนlinkedlistเพราะเราจะต(ร)องlinkedlใ(i)ช(s)้(t)นะคะมาใช้ในการดำเนินการกับque(ค)u(ิ)e(ว)คราวนี้แล้วเราใช้q(ร)u(บ)e(้)u(า)e(ง)ยกตัวอย่างเช่นนะคะเอกสารไปprintที่เครื่องprintด้านหลังเรามีเครื่องป(พ)ริ้(ต)น(์)แค่เครื่องเดียวเราสามารถprintได้จากทุกๆเครื่องพิมพ์เครื่องนั้นใครที่ส่งไปก่อนถูกไหมคะมันก็จะมีการเข้าคิวเรียงลำดับมาเรื่อยๆคนที่ส่งไปก่อนก็จะป(พ)ริ้(ต)น(์)ออกก่อนใช่ไหมคะคนที่ส่งทีหลังก็ต้องรอนะคะเหมือนเราloginเพื่อจองตั๋วอะไรสักอย่างหนึ่งใครเข้าก่อนก็จะได้จองก่อคนเข้าทีหลังก็อาจจะตั๋วเต็มแบบนี้ก็จะไม่ได้จองนะคะอันนี้คือการประยุกต์ใช้q(ว)u(แ)e(ล)u(้)e(ว)การดำเนินการกับคิวเราใช้คำสั่งอะไรบ้างหรือทำอย่างไรในq(ว)u(น)e(ะ)u(ค)e(ะ)ก็จะเหมือนกับในstackเลยะ(เ)ค(ร)ะ(า)ก(ต)็(้)จ(อ)ะ(ง)ใ(ค)ช(ิ)้(ด)คู่กัq(ค)u(ะ)e(ค)u(ิ)e(ว)เวลาเราเพิ่มข้อมูลลงไปในque(ค)u(ิ)e(ว)จะใช้คำสั่ง"endqueue"นะคะตัวนี้จะอ่านว่า...e(อ)n(น)d(-)e(ค)n(ิ)d(ว)q(ก)u(็)e(ค)u(ื)e(อ)การเพิ่มข้อมูลลงไปในque(ค)u(ิ)e(ว)ส่วนการลบque(ค)u(ิ)e(ว)หรือการดึงข้อมูลออกจากque(ค)u(ิ)e(ว)จะใช้คำสั่ง"dequeue"นะคะเพราะฉะนั้นในque(ค)u(ิ)e(ว)ถ้าเอาเข้าก็คือendqueueเอาออกคือdequeueเข้าคือendqueueออกคือdequeueเราต้องมีการเช็กตรวจสอบสถานะว่าque(ค)u(ิ)e(ว)ตอนนี้เรามีข้อมูลอยู่หรือเปล่าก็คือมีnodeอยู่ไหมถ้าque(ค)u(ิ)e(ว)ของเราไม่มีโ(n)ห(o)น(d)ด(e)อะไรอยู่เลยจะเรียกque(ค)u(ิ)e(ว)นั้นว่าเป็q(ะ)u(")e(ค)u(ิ)e(ว)ว่าง"คือไม่มีข้อมูลอยู่ในque(ค)u(ิ)e(ว)เลยเราจะเรียกว่าemptyemptyempty""ภาษาอังกฤษถ้าเราอยากรู้ว่าข้อมูลตัวแรกสุดที่อยู่ในque(ค)u(ิ)e(ว)คือข้อมูลค(ะ)ื(ไ)อ(ร)ข้อมูลอ(ก)ะ(ส)ไ(ุ)ร(ด)คือข้อมูลที่จะถูกเอาออกเป็นตัวแรกนะคะเราจะใช้คำสั่ง"peek"เราจะเรียกคำสั่งนั้นว่า"pea(e)k"คราวนี้เรามาดูทีละตัวนะคะการเพิ่มข้อมูลลงไปในหรือที่เรียกว่าendqueueการเพิ่มข้อมูลใหม่การเพิ่มข้อมูลใหม่เราจะเอาไปต่อท้ายสุดถูกไหมคะตามโครงสร้างของlinkedlistที่เราเรียนมาเพิ่มข้อมูลใหม่เอาไปต่อท้ายในlinkedlistนะคะถ้าเป็นque(ค)u(ิ)e(ว)ถูกไหมเพิ่มข้อมูลใหม่ถ(เ)้(อ)เ(ไ)linklistิ(ต)ม(อ)ข(ท)ู(า)ล(ย)ใ(น)ห(ะ)ม(ค)่(ะ)ต่อด้านหลังคราวนี้ครูให้เวลาอ่านตรงขั้นตอนการเพิ่มข้อมูลใหม่อ่านของใครของมันสิคะ4-5บรรทัดตรงนี้ตรงต(ี)อ(้)น(ะ)ี(ค)้(ะ)ตรงขั้นตอนตรงนี้อ่านต่างคนต่างอ่านเร็วอ่านก่นแล้วดูรูปประกอบอ่านแล้วดูรูปประกอบด้วยนะคะครูให้เวลานาทีหนึ่งทุกคนรู้จักheadรู้จักtailแล้วนะคะอ่านหรือยังอ่านนะคะ5บรรทัดเสร็จหรือยังคะเสร็จแล้วนะคะขั้นตอนของการเพิ่มข้อมูลใหม่นะคะเขาก็บอกว่าขั้นแรกนี่กำหนดให้ตัวชี้headheadจะชี้อยู่ที่ต้นnodeก็คือnodeแรกtailชี้ที่โ(n)ห(o)น(d)ด(e)สุดท้ายนะคะอันนี้คือกำหนดให้headชี้อยู่ที่nodeแรกtailnodeในการเพิ่มข้อมูลใหม่ต้องมีการตรวจสอบก่อนว่าในlinkedlistของเรานั้นมีnodeอยู่เดิมหรือไม่นะคะถ้าไม่มีnodeใดอยูเรากำลังจะสร้างnodeใหม่ของque(ค)u(ิ)e(ว)นี้นะคะแต่ถ้ามีข้อมูลเดิมอยู่เราต้องเอาไปต่อข้างหลังนะคะในการตรวจสอบว่าเป็นnodeใหม่หรือเปล่าเราเช็กที่headใช่ไหมคะถ้าn(h)o(e)d(a)e(d)มีค่าเป็นnu(o)neแสดงว่าในlinkedlistเรามีnodeอยู่ไหมครูถามว่าถ้าn(h)o(e)d(a)e(d)เท่ากับnu(o)neแสดงว่าในlinkedlistของเรามีnodeอยู่ไหมไม่มีถูกไหมheadไม่ได้ชี้ที่ไหนเลยheadยังไม่รู้อยู่ตรงไหนเลยเพราะฉะนั้นมีnodeไหมไม่มีนะคะเหมือนรถไฟน(อ)ี(ย)น(ง)ะ(น)ค(ี)ะ(้)ถ้าไม่มีหัวโบกี้จะรู้ไหมอันไหนคืออันแรกไม่รู้นะคะถ้าheadเท่ากับnoneu(น)nodeแสดงว่าเป็นnodeใหม่คือเช็headว(ท)่าnoneหรือเปล่าถ้าเป็นโ(n)ห(o)น(d)ด(e)ใหม่เราก็ให้headและtailชี้ที่nodeใหม่เลยแต่ถ้าไม่ใช้nodeใหม่นะคะแต่ถ้าไม่ใช่โ(n)ห(o)น(d)ด(e)ใหม่ให้เอาnodeที่เราจะใส่เพิ่มไปต่อด้านท้าย...ถ้าไม่ใช่que(ค)u(ิ)e(ว)ว่างก็คือไม่มีnodeใดๆอยู่เลยก็เอาไปต่อท้ายด้านหลังด้วยคำสั่งอะไรเมื่อกี้ทำไปแล้วน่ะอันนี้คือlinkedlistอันนี้คือnodeใหม่จะเชื่อมด้วยคำสั่งม(อ)่(ะ)น(ไ)ะ(ร)คะtail.ร(.)อะไร.nextเท่ากับอะไรจะเชื่อมตัวนี้มาที่นี้(่)ก็คือใช่(้)tail.next=new_dataเท่ากับnew_dataก็เพราะมันมีตัวชี้ชื่อนีอันนี้ชื่ออะไรก็เปลี่ยนไปนะคะโอ.เค.ไหมงงไหมคะไม่งงถ้าครูถามต่อถ้าเป็นกรณีแรกคือเป็นque(ค)u(ิ)e(ว)ว่างไม่มีnodeะ(ใ)ไ(ด)ร(ๆ)เลยถ้าครูมีnodeใหม่ครูมีตัวชี้ก็คือตัวpมีค่าเป็น10ตอนนี้linkedlistไม่มีข้อมูละ(ใ)ไ(ด)ร(ๆ)เลยเราต้องให้ตัวชี้ชี้อยู่ที่ไหนชี้ที่nodeใหม่คือชี้ที่นี่ถ(ใ)ู(ช)ก(่)ไหมคะแล้วให้อะไรชี้อยู่ที่นี่ด้วยtailใช่ไหมคะจะใช้คำสั่งอะไรhead=phead=pเอาheadไปชี้ที่pชี้อยู่tailก็เช่นเดียวกันก็คือtail=pถูกไหมคะกรณีlinkedlistนั้นไม่มีข้อมูลอยู่เลยเป็นคิวว่างเวลาเราสร้างนะคะหรือเชื่อมnodeใหม่เข้าไปในlinkedlistเราก็ต้องกำหนดให้headและtailชี้ที่nodeใหม่ด้วยคำสั่งนี้จากที่เราพูดกันเมื่อกี้นะคะจากขั้นตอนตรงนี้เราแปลงให้เป็นคำสั่งได้ดังนี้นะคะฟังก์ชันของendqueueเห็นไหมคะอันดับแรกเราต้องมีการสร้างnodeก่อนสร้างnodeก็คือสร้างสี่เหลี่ยมตัวนี้ถูกไหมคะแล้วก็ใส่ข้อมูลเข้าไปแล้วก็มีตัวชี้ชื่ออะไรnew_dataถูกไหมคะเรากำหนดให้ตัวชี้คือnew_datadataคือ10นะคะนี่คำสั่งแรกก็คือสร้างnodeสี่เหลี่ยมตัวนี้ขึ้นมาเสร็จแล้วก่อนจะเชื่อมเข้าไปี(ใ)่(น)linkedlistเช็กก่อนว่ามันมีnodeเดิมอยู่หรือเปล่าก็คือเช็กว่าheadisnu(o)l(n)l(e)หรือเปล่าถ้าheadisnu(o)neก็คือเป็นคิวว่างเราก็ให้headชี้ที่nodeใหม่แล้วก็ให้tailชี้ที่nodeใหมเราสามารถเขียนคำสั่งนี้ได้อีกแบบtail=new_dataหรือtail=headได้เหมือนกันนะคะถ้ากรณีเดิมที่มันมีnodeอยู่แล้วเราก็เชื่อตรงนี้เราก็เชื่อมไปที่nodeสุดท้ายเลื่อนtailไปยังโ(n)ห(o)น(d)ด(e)สุดท้ายนะคะเลื่อนtailไปยังnodeโอ.เค.นะคะอันนี้คือการเพิ่ลงไปในque(ค)u(ิ)e(ว)เอาออกบ้างเอาออกหรือว่าลบข้อมูเ(อ)า(ก)อ(จ)อ(า)ะ(ค)ค(ิ)ะ(ว)เวลาเอาออกเอาด้านหน้าออกนะคะลบด้านหน้าออกดูขั้นตอนมี3ขั้นตอนอ่านก่อนค่ะมีอยู่3ขั้นตอน3ขั้นตออ่านให้ครูหน่อยขั้นตอนของการดึงข้อมูลออกจากq(อ)u(ก)e(ว)u(่)e(า)เราก็ดึงข้อมูลออกมาจากโ(n)ห(o)น(d)ด(e)แรกจะได้รู้ว่าข้อมูลที่ลบหรือข้อมูลที่ดึงออกมานี่มันเป็นข้อมูลอะไรเผื่อเราจะเอาไปใช้ต่อหรือเอาไปทำอะไรต่อนะคะเราดึงออกมาแล้วเราก็เก็บเอาไว้ในตัวแปรที่เราสร้างขึ้นนะคะพอเรารู้แล้วล่ะว่าค่าที่จะเอาออกคือค่าอะไรเราก็เลื่อheadไปยังnodeถัดไปนะคะขั้นที่2เลื่อนheadไปยังโ(n)ห(o)น(d)ด(e)ถัดไปพอเราเลื่อนheadไปยังโ(n)ห(o)น(d)ด(e)ถัดไปนะคะกรณีที่ถ้าheadไม่ได้ชี้อยู่ที่ไหนเลnodeที่เราลบคือnodeสุดท้ายที่อยู่ในque(ค)u(ิ)e(ว)โ(n)ห(o)น(d)ด(e)ที่เราลบนะคะก็คือnodeสุดท้ายที่อยู่ใq(เ)u(ร)e(า)u(ล)e(บ)nodeนั้นไปแล้วheadจะต้องชี้อยู่ที่nu(o)l(n)l(e)เมื่อheadชี้อยู่ที่nu(o)l(n)l(e)แล้วtailก็ต้องชี้อยู่ที่nu(o)neด้วnodeน(ย)อยู่ในq(ว)u(น)e(ะ)u(ค)e(ะ)เวลาเราลบเราลบอย่างไรเราใช้สั่งก็คือdelqueueแล้วก็สร้าdequeueคำสั่งแรกดึงข้อมูลออกมาป(้)ที่headท(ช)่(้)อยูเราก็ค่าหน่อยว่ามันมีค่าอะไรnodeที่เรากำลังจะลบมันเก็บค่าอะไรนะคะเราก็เก็บข้อมูลแล้วเอาไ(ม)ป(า)ใส่ในตัวแปรที่ชื่อว่าdataน(า)ะ(ใ)ค(ส)ะ(่)ตัวแปรด้านซ้ายนะคะจากนั้นให้เลื่อนheadไปยังnodeถัดไปก็คือhead=head.nextตรวจสอบหน่อยว่าตอนนี้ไม่มีอะไรอยู่ในlinkedlistheadnoneย(า)ถ้าheadเป็นnu(o)l(n)l(e)แล้วก็กำหนดให้tailมีค่าเป็นnu(o)l(n)l(e)ด้วยคราวนี้ในการตรวจสอบว่าเป็นque(ค)u(ิ)e(ว)ว่างหรือเปล่าคำว่าqu(")e(ค)u(ิ)e(ว)ว่าง"แ(ื)ป(อ)ล(อ)ว(ะ)่(ไ)า(ร)ไม่มีข้อมูลอะไรเลในq(ค)u(ิ)e(ว)u(ค)e(ิ)q(ว)u(ว)e(่)u(า)e(ง)ก็คือไม่มีข้อมูลอะไรเลยที่อยู่ในque(ค)u(ิ)e(ว)นะคะจะตรวจสอบได้อย่างไรว่าเป็นคิวว่าก็เช็กว่าhead=nu(o)l(n)l(e)หรือเปล่าถ้าhead=noneแสดงว่าเป็นque(ค)u(ิ)e(ว)ว่างต่อนะคะแรกสุดที่อยู่ในq(้)u(น)e(ค)u(ิ)e(ว)นั่นล่ะอยากรู้ว่าข้อมูลแรกที่อยู่q(ใ)u(น)e(ค)u(ิ)e(ว)คืออะไรเราก็เช็กว่าhhead.datahead.dataคืออะไรเหมือนที่ครูถามตอนต้นๆนะคะhead.dataก็คือข้อมูลแรกที่อยู่ในqueue(ค)q(ิ)u(ว)e(ค)u(ิ)e(ว)เวลาข้อมูลเข้าห(า)จะอยู่ด้านหน้าหรืออยู่ด้านหลังคะด้านหน้าหรือด้านหลังเวลาเอาข้อมูลออกจากque(ค)u(ิ)e(ว)เอาออกด้านหน้าหรือด้านหลังด้านหน้านะคะดูให้ดีๆอันไหนคือด้านหน้าด้านหลังมีกระดาษเพิ่มอยู่ใช่ไหมคะครูมีโจทย์อยู่3ข้อทำเหมือนเดิมเลยข้อแรกlinkedlistครูกำหนดheadกับtailให้ด้วย1ครูบอกว่าเพิ่มnodeใหม่ตัวชี้โ(n)ห(o)น(d)ด(e)1ชี้อยู่เพิ่มโ(n)ห(o)น(d)ด(e)นีเพิ่มnode1ไปต่อด้านหลังวาดรูปอย่างไรแล้วใช้คำสั่งอะไรข้อ2เพิ่มไปแล้วลบออกบ้างลบข้างหน้าใช่ไหมคะถัดมาข้อ3เพิ่มตัวชี้node2nodeที่มีตัวชี้node2นี่ลงไปในque(ค)u(ิ)e(ว)linkedlistคำสั่งครูบอกหมดแล้วใช่ไหมคะเหมือนในแบบฝึกหัดแรกที่ครูให้ทำและเฉลยให้ด้วยเลียนแบบนะคะเลียนแบบทำความเข้าใจว่าทำอย่างไรในแบบฝึกหัดที่ครูให้นี้ดูจากเฉลยอันเก่าแล้วลองทำอันใหม่ดูว่าจะทำได้ไหมนะคะครูเพิ่มข้อมูลใหม่ในque(ค)u(ิ)e(ว)ก็ต้องไปเพิ่มด้านหลังครูลบข้อมูลออกจากque(ค)u(ิ)e(ว)ก็ต้องลบข้างหน้าครูไม่บอกว่าไปต่อท้ายอะไรลบข้อมูลตัวไหนออกแต่ทุกคนต้องเข้าใจว่าque(ค)u(ิ)e(ว)นี้เวลาเราเพิ่มเพิ่มด้านหลังเวลาเราลบลบข้างหน้านะคะลงมือทำ3ข้อโจทย์คราวที่แล้วใครยังลอกไม่เสร็จมาถ่ายรูปเอาข้างหน้านะคะแล้วเอาไปดูทำลงกระดาษลงสมุดนะคะข(ว)้(น)อ(ี)3(้)นะคะข้อ3นะคะ3จะใช้รูปข้างบนหรือจะใช้รูปต่อจากข้อ1คำสั่งไม่แตกต่างกันเลยนะคะเพราะเราเชื่อมต่อจากtailtailคุณจะชี้อยู่ที่ไหนก็ได้ถูกไหมคะจะใช้รูปข้างบนก็ได้หรือจะใช้ต่อจากรูปข้อ1ก็ได้เลือกเอาใครเสร็จแล้วเขียนชื่อส่งนะคะใครทำเสร็จแล้วนะคะเอามาส่งครูรวมถึงแบบฝึกหัดก่อนหน้าที่ทำในห้องด้วยถือมาด้วยเวลาเขียนคำสั่งนะnextnextสะกดให้ถูกn-e-x-tนะคะตัวnเดี๋ยวนะคะเดี๋ยวครูจะเช็กชื่อแล้วก็เอางานมาส่งหน้าห้องนะคะ[[สิ้นสุดการถอดความ]