(อาจารย์สุธาสินี) ทำไมเป็นอย่างนั้นล่ะ
ได้ยินครูนะ คราวที่แล้ว
นะคะ เราพูดถึงในเรื่องของ
เหมือนล่ามไม่ได้ยินเลย อ๋อ ค่ะ
คราวที่แล้วเราพูดถึงเรื่อง list นะ lis
แล้วเราก็ทำข้อสอบไปแล้วนะคะ
เรื่องลิสต์
ได้ไหมคะ
ได้ยินไหมคะ
ยังไม่ได้ยิน
คราวที่แล้วนะคะ เราพูดถึงเรื่อง List ทุกคน
จำได้นะคะ อันนี้คือลิสต์นะ ที่ครูยกตัวอย่างมาให้
ลิสต์ตัวนี้มีขนาดเท่ากับเท่าไหร่
มีขนาดเท่าไหร่ ขนาด คือ
มีจำนวนเท่าไร มี 5 คนอื่นมีเท่าไรคะ
5 โอเค 5 นะคะ
ลิสต์ที่เราเห็นในหน้าจอตรงนี้
จะมีอยู่ 5 ตัวถูกไหมคะ มีข้อมูลอยู่ 5 ตัว
มี 1 มี 2 มี 3 มี 4
แล้วก็มี 5 มีทั้งหมด 5 ตัวนะคะ คราวนี้
เรารู้ได้อย่างไรว่ามันคือลิสต์ เห็น
ก้ามปูเปิด-ก้ามปูปิดไหมคะ
เป็นสัญลักษณ์ที่บอกว่าการเก็บข้อมูลลักษณะ
แบบนี้มีชื่อเรียกว่า "ลิสต์" นะคะ
จะเก็บค่าของข้อมูล
ในลิสต์ index
ก็คือหมายเลขถูกไหมคะ ก็คือหมายเลขของข้อมูล
เราเริ่มต้นที่หมายเลขอะไรเอ่ย
พอเราวาดเป็นช่องใช่ไหมคะ
ในลิสต์นี่ ถ้าเราลองวาด
การจัดเก็บนะ ก็จะเป็น 1
แล้วก็จะเก็บข้อมูลลงไปในช่องแบบนี้
หมายเลขช่องหรือว่า
Index ตัวแรกเราจะเริ่มต้นที่ตรงไหน
ตรงนี้ index เราจะเริ่มที่เราไรเอ่ย
0 นะ ใช่ไหมคะ
1 2 3 แล้วก็ 4
แล้วก็ 4 ก็คือหมายเลขช่อง ถ้าเราวาดรูปให้
เป็นรูปสี่เหลี่ยมในการจัดเก็บข้อมูล แล้วเวลาครูเข้าถึง
ข้อมูลที่อยู่ในลิสต์ ตอนนี้
ครูตั้งชื่อลิสต์ตัวนี้มีชื่อว่า x
x index 3
ตอบเท่ากับเท่าไรเอ่ย index
เป็น 3 ตัวนี้ตอบ 4 ใช่
ตรงนี้ต้องตอบว่า 4 นะคะ ทุกคนจำได้นะ
แล้วถ้า x
เราต้องการหลาย ๆ ค่า 2 จนถึง 4
จะตอบเท่าหับเท่าไหร่คะ
3 กับ...
3 กับอะไรเอ่ย 4 ใช่ไหม
ใช่ไหม คือ 3 กับ 4 นะ มันเริ่มต้นที่ 2 ใช่ไหมคะ ก็คือ
เริ่มต้นที่ 2 ก็คือเริ่มต้ด้วยตัว
ถึง 4 แล้วก็ลดลงมา 1 ช่อง ก็จะได้ข้อมูลตัวนี้
ก็คือ 3 กับ 4
คราวนี้ แล้วเราเอาลิสต์
มาทำอะไรนะคะ เราเก็บข้อมูล
รูปแบบลิสต์ แล้วเราเอามาใช้ทำอะไรนะคะ
วันนี้เราจะพูดถึงโครงสร้างอีกแบบหนึ่ง
ที่มีชื่อว่า stack นะ
สแตกนะคะ สแตกตัวนี้
จะใช้วิธีการเก็บข้อมูลแบบลิสต์
นะคะ แล้วลักษณะแบบไหน
ที่เราจะเรียกว่า "stack" นะคะ ดูด้วยกัน
เขาบอกว่า Stack
ก็คือการที่เราใส่ข้อมูลเข้าไปแล้วก็ดึงออกมา
นะคะ แล้วข้อมูล
ที่ถูกใส่เข้าไปใน Stack จะถูก
เอาออกมาใช้ทีหลัง อันนี้ คือ
วิธีการเก็บข้อมูลแบบ stack หรือที่เรียกว่า
เข้าทีหลังออกก่อน
เข้าก่อนออกทีหลัง ความหมายเหมือนกัน
ยกตัวอย่างเช่น ทุกคนเคย
ไปที่ร้านก๋วยเตี๋ยวไหมคะ ทุกคนเคยไปที่ร้านก๋วยเตี๋ยวนะ
แล้วเห็นถ้วยก๋วยเตี๋ยวก่อนที่เขาจะ
เอามาใส่เส้น ใส่เครื่องปรุง ใส่หมูให้เรา
ชามก๋วยเตี๋ยวมันเรียงขึ้นไปแบบนี้
ใช่ไหมคะ เวลาแม่ค้าเขาจะเอาจามก๋วยเตี๋ยวมาใส่ให้เรา
เขาจะเอาชามก๋วยเตี๋ยวมาใส่ให้เรา เขาเอาชามที่อยู่
ข้างบน หรือชามที่อยู่ข้างล่าง
เอาชามข้างบนหรือข้างล่างคะ ข้างบน
เขาเอาข้างบนมาทำให้เรา
แล้วเวลาเขาล้างจานเสร็จแล้วนี่ เอาจาน
มาซ้อนข้างล่างหรือซ้อนข้างบน ซ้อนข้างบน
ใช่ไหมคะ เพราะฉะนั้น จานที่
อยู่บนสุดจะถูกเอาออกมาใช้ก่อน
และจากที่อยู่บนสุดนะคะ จะถูก
เอาเข้ามาเก็บทีหลัง อันนี้คือรูปแบบ
ของ Stack เช่นนะคะ เช่น ๆ
เช่น สมมติ ครูมีกระดาษ 1 แผ่นนะ
ครูมีกระดาษอยู่ 1 แผ่น ทุกคนดูนะคะ
ครูจะใส่กระดาษแผ่นที่ 2
เห็นไหมคะ ครูซ่อนกระดาษแผ่นที่ 2 อยู่ข้างบน
ครูใส่ ครูใส่กระดาษ
แผ่นที่ 3 เข้าไปนะคะ แล้วครูก็ใส่
กระดาษแผ่นที่ 4 เข้าไปในมือครู เวลา
ครูจะเอาออกมาใช้ครูจะเอาตัวล่างสุดหรือตัวบนสุดออกมาใช้
ตัวบนสุดถูกไหมคะ
ครูไม่พยายามจะดึงตัวล่างสุดออกมานะคะ ครูจะหยิบตัวบน
สุดอกไปใช้ ซึ่งตัวบนสุดนี่
คือ กระดาษแผ่นที่เราใส่ไปล่าสุดนะคะ
เ
เราสามารถสรุปได้แบบนี้นะ ข้อมูลที่อยู่ใน Stack
ตัวแรกจะอยู่ด้านล่างสุด ข
ข้อมูลที่หย่อนลงไปใน Stack ตัวแรกจะอยู่ด้านล่างสุดเลย
นะคะ ตัวถัดไปก็จะซ้อนขึ้นมา
เรื่อย ๆ ข้อมูลที่
เข้าไปใน Stack เป็นตัวสุดท้าย
นะคะ จะอยู่บนสุด แล้วเวลา
เราเอาข้อมูลใน Stack ออกมาใช้งาน
ข้อมูลที่เข้าไปเป็นตัวล่าสุด
หรือตัวลำดับสุดท้าย จะถูก
ดึงออกมาใช้งานก่อน ตัวไหน
ที่เข้าไปตัวแรกจะถูกเอามาใช้งาน
เป็นตัวสุดท้ายนะคะ เพราะมันอยู่ล่างสุด
มันก็ใช้ยาก เราต้องใช้ตัวบน ค่อย ๆ ดึงตัวบน
ออกไปก่อน
คราวนี้เวลาเราเอาข้อมูลใส่ใน Stack
เราพูดถึง Stack ก็เหมือนภาชนะนะ Stack
เป็นช่องแบบนี้ เป็นช่องสี่เหลี่ย
ในแนวตั้ง ถ้าเราพูดถึง Stack นะ
ดูรูปนี้ก่อน อย่างนี้ มันจะอยู่ในแนวนอนหรือแนวตั้งก็ได้
มันจะอยู่ในแนวนอนหรือแนวตั้งก็ได้
ถ้าพูดถึง Stack ก้คือเป็นชั้น ๆ
เลื่อนขึ้นไปเรื่อย ๆ นะคะ ใน Stack
เราทำอะไรได้บ้าง เราใส่ข้อมูลลงไป
เราดึงข้อมูลออกมา คราวนี้
stackถ้ามันไม่มีข้อมูลอะไรเลย
เราเรียกว่า "Stack ว่าง" คือ มันมีค่าว่าง ๆ
ไม่มีตัวอักษรอะไรเลยนะ อันนี้
คือ Stack ว่าง
ถ้าเราจะใส่ข้อมูลลงไปใน Stack
เราจะมีคำสั่งที่ชื่อว่า Push
คือคำสั่งตัวนี้นะคะ
คำสั่ง Push ก็คือใส่
ข้อมูลลงไปใน Stack ถ้าต้องการเอา
ข้อมูลออกจาก Stack เราใช้คำสั่ง Pop นะคะ
มีอยู่ 2 ตัวที่ทุ
Ban