Javaで循環連結リストを実装する方法を教えてください。

循環連結リストは、ノードクラスと循環連結リストクラスを使用してJavaで実装できます。次のような簡単なコード例があります。

public class Node {
    private int data;
    private Node next;

    public Node(int data) {
        this.data = data;
        this.next = null;
    }

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }

    public Node getNext() {
        return next;
    }

    public void setNext(Node next) {
        this.next = next;
    }
}

public class CircularLinkedList {
    private Node head;

    public void addToEmptyList(int data) {
        Node newNode = new Node(data);
        newNode.setNext(newNode);
        head = newNode;
    }

    public void addToFront(int data) {
        Node newNode = new Node(data);
        if (head == null) {
            addToEmptyList(data);
        } else {
            newNode.setNext(head);
            Node temp = head;
            while (temp.getNext() != head) {
                temp = temp.getNext();
            }
            temp.setNext(newNode);
            head = newNode;
        }
    }

    public void addToEnd(int data) {
        Node newNode = new Node(data);
        if (head == null) {
            addToEmptyList(data);
        } else {
            newNode.setNext(head);
            Node temp = head;
            while (temp.getNext() != head) {
                temp = temp.getNext();
            }
            temp.setNext(newNode);
        }
    }

    public void display() {
        if (head == null) {
            System.out.println("List is empty");
        } else {
            Node temp = head;
            do {
                System.out.print(temp.getData() + " ");
                temp = temp.getNext();
            } while (temp != head);
            System.out.println();
        }
    }

    public static void main(String[] args) {
        CircularLinkedList list = new CircularLinkedList();
        list.addToEnd(1);
        list.addToEnd(2);
        list.addToFront(3);
        list.display();
    }
}

本サンプルコードでは、ノードクラスはリンクリストのノードを示し、データと次のノードへの参照を持ちます。 CircularLinkedListクラスは循環リンクリストを表し、先頭ノード(head)を使用して循環リンクリストの開始位置を表します。

addToEmptyListメソッドは空の連結リストにノードを追加するために利用され、addToFrontメソッドは連結リストの先頭にノードを追加するために利用され、addToEndメソッドは連結リストの末尾にノードを追加するために利用される。

displayメソッドを使用すると、循環リストのすべてのノードをプリントできます。

mainメソッドにて、循環連結リストを作成し、ノードを追加し、表示メソッドを呼び出してリストの内容を表示します。

出力が3 1 2となる

bannerAds