สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial DATA STRUCTURE

01 1การเรียงลำดับ(Sorting) 01 2 การเรียงลำดับ2 01 Sorting1 01 Sorting2 02 ArrayList 02 อาร์เรย์ลิสต์ (Array List) 03 LinkedList 03 ลิงค์ลิสต์ (Linked List) 04 Stack 04 สแต๊ค 05 1 คิวและไพออริตี้คิว 05 2 คิวและไพออริตี้คิว 05 Queue and PriorityQueue1 05 Queue and PriorityQueue2 06 1 BinaryTree 06 1 ไบนารีทรี 06 2 BinarySearchTree 06 2 ไบนารีเสิร์ชทรี 06 3 BinarySearchTree 06 3 ไบนารีเสิร์ชทรี 08 Hash 08 แฮช 09 Graph 09 กราฟ

สแต็ค (Stack)

            สแต็คหรืออาจะเรียกได้ว่า 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 : คืนค่าข้อมูลตัวสุดท้าย



บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา