สแต็คหรืออาจะเรียกได้ว่า LIFO (Last-In-First-Out) เพราะลักษณะการเก็บข้อมูลของสแต็คที่ทำงานแบบเก็บข้อมูลลงไปเรื่อยแต่เมื่อต้องการดูข้อมูล ตัวสุดท้ายที่เข้ามาจะถูกเรียกออกไปก่อน ซึ่งหมายความว่าตัวแรกสุดที่ใส่เข้าไปก็จะออกมาเป็นตัวสุดท้าย ซึ่งเมท็อดที่อยู่ในสแต็คก็จำได้ง่าย คือมี เพิ่ม ลบ และเรียกดูข้อมูล
Stack
สมมติเก็บข้อมูลเป็นชื่อของโซเชียลเน็ตเวิร์คต่างๆ เมื่อทำการเพิ่ม(push) “Line” ลงไปในสแต็ค “Line” ก็จะไปอยู่บนสุดของสแต็ค เมื่อต้องการลบข้อมูลด้วย pop() ข้อมูลที่เพิ่งเพิ่มเข้าไปล่าสุดซึ่งในที่นี้คือ “Line” ก็จะถูกลบออกไปก่อน ส่วน peek() สามารถดูได้แค่ข้อมูลบนสุดเมื่อ pop “Line” ออกไปแล้ว การ peek เลยจะได้ “Facebook”
การสร้างสแต็คสามารถสร้างได้จาก list เช่น ArrayList และ การเก็บข้อมูลcollection เช่น Array ความแตกต่างกันก็คือถ้าใช้ Array ก็เป็นการเก็บข้อมูลตรงๆเลย เพิ่มท้ายอาร์เรย์ ดูท้ายอาร์เรย์ แต่ถ้าใช้ ArrayList การสั่งงานต่างของสแต็คจะต้องทำการเรียกใช้งาน ArrayList ก่อนก็จะเสียเวลา
สร้างสแต็คด้วย Arraylist
สร้างสแต็คด้วยอาร์เรย์ลิสต์ก็ไม่มีอะไรมากเพราะถ้าสร้างอาร์เรย์ลิสต์ไว้อยู่แล้วก็สามารถสร้างอ็อปเจ็คของอาร์เรย์ลิสต์มาใช้งานได้เลย
รูป 4-2
บรรทัดที่ 3 : สร้างคลาส Stack แต่นี่ใช้อาร์เรย์ลิสต์เลยเพิ่มคำว่า List ไปเพื่อจะได้ไม่สับสน
บรรทัดที่ 5 : สร้างอ็อปเจ็คของคลาส ArrayList
บรรทัดที่ 7-9: สร้างเมท็อดเรียก size สามารถให้อ็อปเจ็บเรียก size(); ของคลาส ArrayList ได้เลย
บรรทัดที่ 12 : สร้างเมท็อด push(ชนิดตัวแปร ชื่อตัวแปร) สำหรับเพิ่มข้อมูล
บรรทัดที่ 14 : เรียก add ของ ArrayList
บรรทัดที่ 17 : สร้างเมท็อด pop สำหรับลบข้อมูล
บรรทัดที่ 19 : ให้ตัวแปร e เก็บค่าของข้อมูลตัวสุดท้ายที่ใส่เข้าไป
บรรทัดที่ 20 : เรียกเมท็อด removeAt ของ ArrayList ลบค่าของตัวสุดท้าย
บรรทัดที่ 21 : ได้ e ที่ไม่มีข้อมูลแล้ว คือค่านี้ออกไป
บรรทัดที่ 24 : สร้างเมท็อด peek สำหรับขอดูข้อมูล
บรรทัดที่ 26 : เรียกเมท็อด get ของ ArrayList หาค่าของตัวสุดท้าย
สร้างสแต็คด้วย Array
รูป4-3
บรรทัดที่ 3 : สร้างคลาสแต็ค
บรรทัดที่ 5 : สร้างตัวแปร data เป็นอาร์เรย์เก็บข้อมูลประเภท int กำหนดขนาดเริ่มต้นเป็น 1 เพราะเดี๋ยวเค้าให้ขยายขนาด
บรรทัดที่ 6 : สร้างตัวแปร size
บรรทัดที่ 8-9 : สร้างเมท็อด size คืนขนาดของ size เหมือนเดิม
บรรทัดที่ 13 : เมท็อด push ของสแต็คที่เขียนด้วยอาร์เรย์จะต้องเขียนใหม่ไม่เหมือนกับอาร์เรย์ลิสต์ที่เอาอาร์เรย์ลิสต์มาใช้ได้เลย
บรรทัดที่ 15 : ตรวจสอบเงื่อนไขถ้าเป็นกรณีที่ size เท่ากับขนาดของข้อมูลก็คือเต็มให้ขยายขนาด
บรรทัดที่ 17 : สร้างอาร์เรย์ใหม่ให้ขนาดใหญ่ขึ้นจากข้อมูลที่มีเป็น 2 เท่า
บรรทัดที่ 18-19 : วนลูปขนาดเท่า size เอาข้อมูลเดิมที่มีอยู่ไปใส่ในอาร์เรย์ใหม่
บรรทัดที่ 22 : ให้ตัวแปรทั้งสองตัวชี้ไปที่สิ่งเดียวกัน
บรรทัดที่ 24 : เอาข้อมูลที่รับพารามิเตร์มามาใส่ที่ตำแหน่งสุดท้าย
บรรทัดที่ 27 : เมท็อด pop() สำหรับลบ
บรรทัดที่ 29 : สร้างตัวแปร i ให้เป็นข้อมูลตัวสุดท้าย
บรรทัดที่ 30 : ลบข้อมูลตัวสุดท้ายออก
บรรทัดที่ 31 : คืนค่าตัวสุดท้ายออกไป
บรรทัดที่ 34 : เมท็อด peek() สำหรับดูข้อมูลตัวสุดท้าย
บรรทัดที่ 36 : คืนค่าข้อมูลตัวสุดท้าย
Tag ที่น่าสนใจ: สแต็ค stack lifo ประเภทของโครงสร้างข้อมูล arraylist array เมท็อดของสแต็ค การสร้างสแต็ค ข้อมูล การเพิ่มข้อมูล การลบข้อมูล การดูข้อมูล อาร์เรย์ อาร์เรย์ลิสต์ การใช้งาน_arraylist
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com