Google Play badge

อาร์เรย์และรายการลิงก์


อาร์เรย์และรายการลิงก์

ยินดีต้อนรับสู่บทเรียนเกี่ยวกับอาร์เรย์และรายการลิงก์ ในบทเรียนนี้ เราจะเรียนรู้สองวิธีง่ายๆ ในการจัดเก็บและจัดระเบียบข้อมูล ลองนึกภาพว่าคุณมีกล่องใส่ของเล่นเรียงกันเป็นแถวหรือตู้เก็บของที่โรงเรียน อาร์เรย์และรายการลิงก์ทำงานในลักษณะเดียวกัน ช่วยให้เราจัดเก็บสิ่งของต่างๆ ได้อย่างเป็นระเบียบและค้นหาได้ง่าย บทเรียนนี้เขียนด้วยภาษาที่เรียบง่ายพร้อมตัวอย่างในชีวิตประจำวันเพื่อช่วยให้คุณเข้าใจแนวคิดเหล่านี้ได้อย่างง่ายดาย

การแนะนำ

โครงสร้างข้อมูลช่วยให้คอมพิวเตอร์จัดเก็บและจัดระเบียบข้อมูล โครงสร้างข้อมูลที่สำคัญสองประการคืออาร์เรย์และรายการลิงก์ คุณสามารถนึกถึงอาร์เรย์เป็นกล่องเรียงกัน และรายการลิงก์เป็นห่วงโซ่ของเบาะแสที่เชื่อมต่อกันในการล่าขุมทรัพย์ ทั้งสองอย่างนี้ช่วยให้เราติดตามสิ่งของต่างๆ ได้มากมาย เช่น ของเล่น หนังสือ หรือแม้แต่ของขบเคี้ยวที่คุณโปรดปราน

เราจะมาพูดถึงว่าอาร์เรย์คืออะไร ลิงก์ลิสต์คืออะไร พวกมันทำงานอย่างไร และแตกต่างกันอย่างไร นอกจากนี้ เราจะมาดูตัวอย่างจริงที่ทำให้แนวคิดเหล่านี้ชัดเจนที่สุด

อาร์เรย์คืออะไร?

อาร์เรย์คือการรวบรวมรายการต่างๆ ไว้ด้วยกัน คล้ายกับกล่องที่เรียงกันเป็นแถว โดยแต่ละกล่องจะบรรจุสิ่งของได้ชิ้นเดียว ตัวอย่างเช่น ลองนึกภาพกล่อง 5 กล่องเรียงกันเป็นแถว คุณสามารถใช้กล่องแต่ละกล่องเพื่อเก็บของเล่นชิ้นโปรดหรือของว่าง

แต่ละกล่องในอาร์เรย์จะมีหมายเลขที่เรียกว่าดัชนี กล่องแรกมักจะมีหมายเลข 0 กล่องถัดไปจะมีหมายเลข 1 จากนั้นจะมีหมายเลข 2 และต่อไปเรื่อยๆ การกำหนดหมายเลขนี้จะช่วยให้คุณค้นหาไอเท็มที่ต้องการได้อย่างรวดเร็ว ตัวอย่างเช่น หากคุณต้องการไอเท็มในกล่องที่สาม คุณเพียงแค่ดูที่กล่องที่มีดัชนี 2

นี่คือสูตรง่ายๆ เพื่ออธิบายวิธีการค้นหารายการในอาร์เรย์ หากกล่องแรกอยู่ที่จุดเริ่มต้น ที่อยู่ของรายการใดๆ ก็สามารถคิดได้ดังนี้:

\( \textrm{ที่อยู่}(A(i)) = \textrm{ที่อยู่}(A(0)) + i \times \textrm{(ขนาดสินค้า 1 ชิ้น)} \)

นี่แจ้งให้เราทราบว่า หากต้องการย้ายจากกล่องแรกไปยังกล่องที่เราต้องการ เราต้องนับช่องว่างไปข้างหน้าตามจำนวนที่กำหนด

คุณสมบัติของอาร์เรย์

ลองนึกภาพแถวที่นั่งในโรงภาพยนตร์ขนาดเล็ก แต่ละที่นั่งจะมีหมายเลขกำกับไว้ และคุณสามารถไปที่นั่งนั้นได้อย่างรวดเร็วหากรู้หมายเลข

ตัวอย่างอาร์เรย์ในชีวิตประจำวัน

ลองนึกภาพว่าโรงเรียนของคุณมีตู้ล็อกเกอร์เรียงกันเป็นแถว โดยแต่ละตู้จะมีหมายเลขเฉพาะของตัวเอง เมื่อคุณจะใส่กระเป๋าลงในตู้ล็อกเกอร์ คุณก็ใช้หมายเลขเฉพาะบนตู้ล็อกเกอร์นั้น ตู้ล็อกเกอร์แต่ละตู้จะมีลักษณะเหมือนกล่อง และหมายเลขจะบอกคุณว่ากระเป๋าหรือข้อมูลของคุณถูกเก็บไว้ที่ใด

ลิงก์ลิสต์คืออะไร?

ลิงก์ลิสต์เป็นอีกวิธีหนึ่งในการจัดเก็บข้อมูล ซึ่งแตกต่างจากอาร์เรย์ตรงที่ลิงก์ลิสต์ไม่ใช้กล่องคงที่ยาวๆ แต่จะใช้กล่องพิเศษที่เรียกว่าโหนดแทน โดยแต่ละโหนดจะเก็บรายการไว้และมีตัวชี้ที่บอกคุณว่าโหนดถัดไปอยู่ที่ไหนด้วย

ลองนึกภาพว่าคุณกำลังออกตามล่าหาสมบัติ เบาะแสแต่ละชิ้นที่คุณพบจะบอกคุณว่าเบาะแสต่อไปซ่อนอยู่ที่ไหน ในรายการที่เชื่อมโยงกัน แต่ละโหนดจะเหมือนกับเบาะแสเหล่านี้ เมื่อคุณเริ่มต้นที่เบาะแสแรก คุณจะตามตัวชี้จากโหนดหนึ่งไปยังโหนดถัดไปจนกว่าคุณจะพบสิ่งที่คุณต้องการ

คุณสามารถคิดว่าแต่ละโหนดเป็นซองจดหมายขนาดเล็ก ซองจดหมายมีการ์ด (ข้อมูล) และโน้ต (ตัวชี้) โน้ตนี้จะบอกคุณว่าซองจดหมายใดจะมาถัดไปในบรรทัด

รายการที่เชื่อมโยงทำงานอย่างไร

มาดูวิธีง่ายๆ ในการเขียนว่าโหนดคืออะไร:

โหนด = {ข้อมูล, ตัวชี้)

"ข้อมูล" ในโหนดคือข้อมูลที่เก็บไว้ และ "ตัวชี้" เปรียบเสมือนลูกศรที่นำคุณไปยังโหนดถัดไป ซึ่งแตกต่างจากอาร์เรย์ รายการที่เชื่อมโยงไม่จำเป็นต้องมีโหนดทั้งหมดอยู่ติดกันในหน่วยความจำ โหนดสามารถอยู่ที่ใดก็ได้ ตราบใดที่ตัวชี้เชื่อมต่อโหนดเหล่านั้น

ประเภทของรายการที่เชื่อมโยง

ลิสต์ลิงก์มีรูปแบบต่างๆ กัน ต่อไปนี้คือประเภททั่วไป 3 ประเภท:

ตัวอย่างโลกแห่งความเป็นจริงของรายการที่เชื่อมโยง

ลองนึกภาพว่าคุณกำลังเดินตามแผนที่ขุมทรัพย์ แต่ละขั้นตอนบนแผนที่จะบอกคุณว่าขั้นตอนต่อไปอยู่ที่ไหน แม้ว่าคุณจะเพิ่มเบาะแสเพิ่มเติมหรือลบออก คุณก็ยังสามารถเดินตามได้โดยอ่านเบาะแสบนการ์ดแต่ละใบ นี่คือวิธีการทำงานของรายการที่เชื่อมโยง แต่ละโหนด (หรือเบาะแส) จะเชื่อมต่อกับโหนดถัดไป ทำให้คุณสามารถเคลื่อนที่ไปตามรายการได้ทีละขั้นตอน

การเปรียบเทียบระหว่างอาร์เรย์และรายการลิงก์

ทั้งอาร์เรย์และลิงก์ลิสต์ช่วยให้เราจัดเก็บรายการได้ แต่ทั้งสองอย่างนี้มีวิธีการทำงานที่แตกต่างกัน ต่อไปนี้คือการเปรียบเทียบบางส่วน:

ข้อดีและข้อเสีย

โครงสร้างข้อมูลแต่ละแบบมีข้อดีและข้อเสียที่แตกต่างกัน การทำความเข้าใจสิ่งเหล่านี้จะช่วยให้คุณเลือกโครงสร้างที่ดีที่สุดที่จะใช้ได้

อาร์เรย์:

ข้อดี:

ข้อเสีย :

รายการที่เชื่อมโยง:

ข้อดี:

ข้อเสีย :

การทำงานกับอาร์เรย์

มาดูกันว่าเราสามารถใช้ array ได้อย่างไรแบบง่ายๆ สมมติว่าคุณต้องการเก็บสีที่คุณชอบ 5 สี คุณสร้างอาร์เรย์ที่มีกล่อง 5 กล่อง จากนั้นใส่สีแต่ละสีลงในกล่องตามลำดับ ตัวอย่างเช่น:

หากต้องการทราบว่ากล่องที่ 2 มีสีอะไร ให้คุณดูที่กล่องนั้นแล้วคุณจะเห็น "สีเขียว" การเข้าถึงที่ง่ายดายนี้เป็นหนึ่งในข้อดีที่สุดของการใช้แบบอาร์เรย์

การทำงานกับรายการที่เชื่อมโยง

ตอนนี้มาดูรายการแบบลิงก์กัน ลองนึกถึงการล่าขุมทรัพย์โดยเริ่มต้นด้วยเบาะแสแล้วทำตามคำแนะนำเพื่อค้นหาเบาะแสถัดไป ในรายการที่ลิงก์ เราเริ่มต้นด้วยโหนดที่ประกอบด้วยข้อมูลบางอย่าง โหนดนี้มีตัวชี้ที่แสดงว่าโหนดใดมาถัดไป

ตัวอย่างเช่น ลองนึกภาพว่าคุณมีโหนดสามโหนดในรายการลิงก์ที่บอกเล่าเรื่องราวที่สนุกสนาน:

คุณเริ่มต้นที่โหนด 1 และทำตามตัวชี้ (เบาะแส) ไปยังโหนด 2 จากนั้นจึงไปยังโหนด 3 แม้ว่าคุณต้องการเพิ่มเบาะแสใหม่ระหว่างโหนดเหล่านี้ คุณเพียงแค่ต้องเปลี่ยนตัวชี้เพียงไม่กี่ตัวเท่านั้น ซึ่งทำให้รายการที่เชื่อมโยงมีความยืดหยุ่นมาก

การแสดงภาพอาร์เรย์และรายการที่เชื่อมโยง

การนึกภาพโครงสร้างข้อมูลเหล่านี้ในใจจะเป็นประโยชน์ ลองนึกภาพอาร์เรย์เป็นกล่องใสที่มีป้ายกำกับเรียงกันเป็นแถวยาวบนชั้นวาง แต่ละกล่องบรรจุสิ่งของบางอย่างและมีตำแหน่งที่แน่นอน จากนั้นลองนึกภาพรายการที่เชื่อมโยงเป็นสตริงของการ์ด แต่ละการ์ดจะมีหมายเหตุระบุว่าการ์ดใบต่อไปซ่อนอยู่ที่ไหน ในอาร์เรย์ คุณสามารถข้ามไปที่กล่องเฉพาะได้โดยตรงโดยใช้หมายเลขของกล่องนั้น ในรายการที่เชื่อมโยง คุณต้องติดตามการ์ดตามลำดับ

การประยุกต์ใช้ในชีวิตประจำวัน

อาร์เรย์ถูกใช้ในสิ่งต่างๆ ในชีวิตประจำวันมากมาย ตัวอย่างเช่น ลองนึกถึงปฏิทิน ปฏิทินหนึ่งมีจำนวนวันคงที่ในแต่ละสัปดาห์ และวันเหล่านั้นจะถูกจัดเรียงเป็นแถว เมื่อคุณดูปฏิทิน คุณจะรู้แน่ชัดว่าวันไหนอยู่ในตำแหน่งใด

รายการที่เชื่อมโยงจะใช้เมื่อจำนวนรายการอาจเปลี่ยนแปลงไปตามเวลา ลองนึกถึงแถวของผู้คนที่กำลังรอรถขายไอศกรีม บางครั้งมีคนใหม่เข้ามาต่อแถว และบางครั้งก็มีคนออกไป แถวสามารถยาวขึ้นหรือสั้นลงได้โดยไม่ต้องสร้างโครงสร้างใหม่ที่แน่นอน ซึ่งทำให้รายการที่เชื่อมโยงมีประโยชน์มากในสถานการณ์ที่มีการเปลี่ยนแปลงบ่อยครั้ง

การปรับแต่งการจัดเก็บข้อมูล

การเลือกใช้ระหว่างอาร์เรย์และรายการแบบลิงก์นั้นขึ้นอยู่กับสิ่งที่คุณต้องการทำกับข้อมูลของคุณ หากคุณทราบว่าคุณจะมีจำนวนรายการคงที่เสมอ เช่น วันในหนึ่งสัปดาห์ อาร์เรย์จึงเหมาะสมมาก อย่างไรก็ตาม หากปริมาณข้อมูลเปลี่ยนแปลงไปและคุณต้องการโครงสร้างที่ปรับเปลี่ยนได้ง่าย รายการแบบลิงก์จะเป็นตัวเลือกที่ดีกว่า

ตัวอย่างเช่น ในเกมคอมพิวเตอร์ อาจใช้การจัดเรียงแบบอาร์เรย์เพื่อจัดเก็บคะแนนสำหรับแต่ละด่าน เนื่องจากจำนวนด่านนั้นคงที่ ในทางกลับกัน อาจใช้รายการที่เชื่อมโยงเพื่อจัดการรายการการกระทำหรือการเคลื่อนไหวของผู้เล่น ซึ่งสามารถเพิ่มขึ้นได้เมื่อเกมดำเนินต่อไป

วิธีการตัดสินใจว่าจะใช้สิ่งใด

เมื่อคุณต้องการเข้าถึงรายการอย่างรวดเร็วโดยใช้ตำแหน่ง อาร์เรย์เป็นตัวเลือกที่ดีที่สุด เนื่องจากคุณสามารถข้ามไปยังตำแหน่งใดก็ได้โดยตรงหากคุณทราบหมายเลขของตำแหน่งนั้น อย่างไรก็ตาม เมื่อคุณต้องเพิ่มหรือลบรายการบ่อยครั้ง รายการที่เชื่อมโยงจะมีประโยชน์มากกว่า เนื่องจากช่วยให้คุณเปลี่ยนแปลงรายการได้โดยไม่ต้องย้ายรายการจำนวนมากไปมา

ลองคิดดูแบบนี้: หากคุณมีอัลบั้มสติกเกอร์ที่มีจำนวนหน้าที่กำหนดไว้ อาร์เรย์ก็จะเหมือนกับอัลบั้มนั้น แต่ถ้าคุณมีคอลเลกชันโปสการ์ดที่เพิ่มขึ้นเรื่อยๆ ที่คุณเพิ่มลงในกระดานข่าว รายการที่เชื่อมโยงก็จะเหมือนกับแบบนั้นมากกว่า เพราะคุณสามารถเพิ่มโปสการ์ดใบใหม่ระหว่างใบอื่นๆ ได้อย่างง่ายดายโดยไม่ต้องจัดเรียงกระดานทั้งหมดใหม่

ประเด็นสำคัญและบทสรุป

มาทบทวนประเด็นหลักของบทเรียนของเรากัน:

อาร์เรย์:

รายการที่เชื่อมโยง:

ความแตกต่างและการใช้งาน:

โดยสรุปแล้ว อาร์เรย์และรายการลิงก์เป็นโครงสร้างข้อมูลสำคัญสองแบบที่ใช้ในการจัดระเบียบข้อมูล อาร์เรย์ทำงานเหมือนกล่องที่มีหมายเลขคงที่เรียงกันเป็นแถว ในขณะที่รายการลิงก์ทำงานเหมือนการล่าขุมทรัพย์ โดยแต่ละขั้นตอนจะบอกคุณว่าต้องไปที่ใดต่อไป ทั้งสองวิธีมีจุดแข็งของตัวเองและใช้ในสถานการณ์ที่แตกต่างกันตามความต้องการของงาน

การทำความเข้าใจวิธีการจัดเก็บข้อมูลทั้งสองวิธีนี้มีประโยชน์มาก โปรแกรมคอมพิวเตอร์ เกม และแอปพลิเคชันจำนวนมากใช้แอเรย์และรายการลิงก์ในเบื้องหลัง เมื่อเรียนรู้วิธีการทำงานของสิ่งเหล่านี้ คุณจะเข้าใจถึงวิธีที่คอมพิวเตอร์จัดระเบียบและจัดการข้อมูล

โปรดจำไว้ว่า: อาร์เรย์จะเรียบง่ายและรวดเร็วเมื่อโครงสร้างคงที่ ในขณะที่รายการแบบลิงก์จะให้ความยืดหยุ่นเมื่อข้อมูลมีการเปลี่ยนแปลง ไม่ว่าคุณจะจินตนาการถึงตู้เก็บของหลายชั้นหรือร่องรอยของเบาะแสอันล้ำค่า แนวคิดเหล่านี้จะช่วยให้เราเข้าใจถึงวิธีการจัดเก็บและใช้ข้อมูลในแต่ละวัน

บทเรียนนี้ช่วยให้คุณเข้าใจอาร์เรย์และลิงก์ลิสต์ได้อย่างชัดเจน เมื่อคุณเรียนรู้และศึกษาเกี่ยวกับวิทยาการคอมพิวเตอร์ต่อไป แนวคิดพื้นฐานเหล่านี้จะช่วยให้คุณเข้าใจหัวข้อที่ซับซ้อนมากขึ้น แนวคิดเหล่านี้เป็นองค์ประกอบพื้นฐานของโครงสร้างข้อมูลและอัลกอริทึมขั้นสูง

สรุปประเด็นสำคัญ:

ขอขอบคุณที่อ่านบทเรียนเกี่ยวกับอาร์เรย์และรายการลิงก์นี้ เราหวังว่าคุณจะสนุกกับการเรียนรู้เกี่ยวกับวิธีการจัดเก็บข้อมูลในรูปแบบที่ชัดเจนและเรียบง่ายเหล่านี้ เมื่อคุณเติบโตและเรียนรู้มากขึ้น โปรดจำโครงสร้างพื้นฐานเหล่านี้และวิธีที่โครงสร้างพื้นฐานเหล่านี้ช่วยให้คอมพิวเตอร์ทำงานได้อย่างมีประสิทธิภาพ

Download Primer to continue