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

Java では、Node クラスを使用してリンク リスト ノードを定義し、LinkedList クラスを使用してリンク リストのさまざまな処理を実現します。

具体的な手順は以下のとおりです。

  1. 次のデータ構造を表すNodeクラスを作成します。Nodeはデータフィールドと次のNodeへのポインタを持ちます。次のサンプルコードを参照してください。
class Node {
    int data;
    Node next;
}
  1. LinkedListクラスを作成し、挿入、削除、検索、走査などの、連結リストのさまざまな操作を実装する。
class LinkedList {
    Node head;
    
    // 插入节点
    public void insert(int data) {
        Node newNode = new Node();
        newNode.data = data;
        newNode.next = null;
        
        if (head == null) {
            head = newNode;
        } else {
            Node last = head;
            while (last.next != null) {
                last = last.next;
            }
            last.next = newNode;
        }
    }
    
    // 删除节点
    public void delete(int data) {
        if (head == null) {
            return;
        }
        
        if (head.data == data) {
            head = head.next;
            return;
        }
        
        Node curr = head;
        Node prev = null;
        while (curr != null && curr.data != data) {
            prev = curr;
            curr = curr.next;
        }
        
        if (curr != null) {
            prev.next = curr.next;
        }
    }
    
    // 查找节点
    public Node search(int data) {
        Node curr = head;
        while (curr != null && curr.data != data) {
            curr = curr.next;
        }
        return curr;
    }
    
    // 遍历链表
    public void printList() {
        Node curr = head;
        while (curr != null) {
            System.out.print(curr.data + " ");
            curr = curr.next;
        }
        System.out.println();
    }
}
  1. LinkedListクラスを使って連結リストを操作する。
public class Main {
    public static void main(String[] args) {
        LinkedList list = new LinkedList();
        
        list.insert(5);
        list.insert(10);
        list.insert(15);
        
        list.printList(); // 输出:5 10 15
        
        list.delete(10);
        
        list.printList(); // 输出:5 15
        
        Node node = list.search(15);
        if (node != null) {
            System.out.println("找到了节点:" + node.data);
        } else {
            System.out.println("没有找到节点");
        }
    }
}

基本的な連結リストを実装し、挿入、削除、検索などの操作を含み、必要に応じて拡張できます。

bannerAds