วิธีสร้างโครงสร้างข้อมูล Linked List ใน Java

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

เข้าใจปัญหา

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

ตัวเลือกที่มีอยู่

Java มีคลาส LinkedList ที่สร้างอยู่แล้วในแพ็คเกจ java.util ซึ่งสะดวกและเหมาะสมในหลายสถานการณ์ อย่างไรก็ตาม ความสามารถในการสร้างการทำงานของคุณเองจะช่วยให้คุณเข้าใจมากขึ้นและให้การควบคุมพฤติกรรมของโครงสร้างข้อมูลได้ดีขึ้น

การสร้าง Linked List ของคุณเอง

ด้านล่างนี้เราจะสำรวจการสร้าง Linked List แบบง่ายจากพื้นฐาน สำหรับการเรียนรู้นี้ เราจะมุ่งเน้นที่ singly linked list ที่อนุญาตให้แทรกและลบโหนดจากจุดเริ่มต้น

ก่อนอื่นเราจำเป็นต้องสร้างคลาส Link เพื่อแทนแต่ละองค์ประกอบในลิสต์ นี่คือโค้ด:

class Link {
    public int data1;
    public double data2;
    public Link nextLink;

    // ตัวสร้าง Link
    public Link(int d1, double d2) {
        data1 = d1;
        data2 = d2;
    }

    // พิมพ์ข้อมูล Link
    public void printLink() {
        System.out.print("{" + data1 + ", " + data2 + "} ");
    }
}

ถัดไปเราต้องการคลาสสำหรับลิสต์ทั้งหมด:

class LinkList {
    private Link first;

    // ตัวสร้าง LinkList
    public LinkList() {
        first = null;
    }

    // คืนค่า true หากลิสต์ว่าง
    public boolean isEmpty() {
        return first == null;
    }

    // แทรก Link ใหม่ที่จุดเริ่มต้นของลิสต์
    public void insert(int d1, double d2) {
        Link link = new Link(d1, d2);
        link.nextLink = first;
        first = link;
    }

    // ลบโหนดที่หน้าสุดของลิสต์
    public Link delete() {
        Link temp = first;
        if (first == null) {
            return null; // หรือโยน Exception
        }
        first = first.nextLink;
        return temp;
    }

    // พิมพ์ทุก Link ในลิสต์
    public void printList() {
        Link currentLink = first;
        System.out.print("List: ");
        while (currentLink != null) {
            currentLink.printLink();
            currentLink = currentLink.nextLink;
        }
        System.out.println("");
    }
}

สุดท้ายนี้ ให้เรา implements เมธอดหลัก (main method) เพื่อทดสอบ Linked List ของเรา:

class LinkListTest {
    public static void main(String[] args) {
        LinkList list = new LinkList();

        // แทรกบางองค์ประกอบ
        list.insert(1, 1.01);
        list.insert(2, 2.02);
        list.insert(3, 3.03);
        list.insert(4, 4.04);
        list.insert(5, 5.05);

        // พิมพ์ลิสต์
        list.printList();

        // ลบองค์ประกอบ
        while (!list.isEmpty()) {
            Link deletedLink = list.delete();
            System.out.print("deleted: ");
            deletedLink.printLink();
            System.out.println("");
        }
        list.printList();
    }
}

สรุป

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

การปรับปรุงเพิ่มเติม

เมื่อคุณเชี่ยวชาญการทำงานพื้นฐานนี้แล้ว ให้นึกถึงการเพิ่ม:

  • Double-linked List: โหนดแต่ละตัวควรมีการอ้างอิงถึงทั้งโหนดถัดไปและโหนดก่อนหน้า
  • Insert/Delete Middle/End: เมธอดสำหรับการเพิ่มหรือลบโหนดจากตำแหน่งต่างๆ
  • Get and Sort Methods: ฟังก์ชันเพื่อดึงองค์ประกอบเฉพาะหรือจัดเรียงลิงค์ลิสต์

การทำความคุ้นเคยกับการปรับปรุงเหล่านี้สามารถช่วยยกระดับทักษะของคุณให้มากยิ่งขึ้น ขอให้สนุกกับการเขียนโค้ด!