欢迎访问宙启技术站
智能推送

基于Java的链表实现

发布时间:2023-07-04 06:49:40

链表是一种常用的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

在Java中,链表的实现可以使用类来表示节点,其中节点类的定义如下:

class ListNode {
    int val;
    ListNode next;
    
    public ListNode(int val) {
        this.val = val;
        this.next = null;
    }
}

链表类包含对链表进行各种操作的方法,例如添加节点、删除节点、查找节点等。下面是基于Java的链表类的实现:

class LinkedList {
    ListNode head;  // 链表头节点
    
    // 初始化链表
    public LinkedList() {
        this.head = null;
    }
    
    // 在链表末尾添加节点
    public void addNode(int val) {
        ListNode newNode = new ListNode(val);
        
        if (this.head == null) {
            this.head = newNode;
        } else {
            ListNode curNode = this.head;
            while (curNode.next != null) {
                curNode = curNode.next;
            }
            curNode.next = newNode;
        }
    }
    
    // 删除链表中指定值的节点
    public void deleteNode(int val) {
        if (this.head == null) {
            return;
        }
        
        if (this.head.val == val) {
            this.head = this.head.next;
        } else {
            ListNode prevNode = this.head;
            ListNode curNode = this.head.next;
            while (curNode != null) {
                if (curNode.val == val) {
                    prevNode.next = curNode.next;
                    break;
                } else {
                    prevNode = curNode;
                    curNode = curNode.next;
                }
            }
        }
    }
    
    // 在链表中查找指定值的节点
    public ListNode searchNode(int val) {
        ListNode curNode = this.head;
        while (curNode != null) {
            if (curNode.val == val) {
                return curNode;
            } else {
                curNode = curNode.next;
            }
        }
        return null;
    }
}

上述链表类的实现包含了在链表末尾添加新节点、删除链表中指定值的节点以及在链表中查找指定值的节点的方法。

通过上述基于Java的链表类的实现,我们可以方便地创建链表并进行各种操作。下面是一个示例代码,演示如何使用链表类:

public class Main {
    public static void main(String[] args) {
        LinkedList linkedList = new LinkedList();
        
        linkedList.addNode(1);
        linkedList.addNode(2);
        linkedList.addNode(3);
        
        ListNode node = linkedList.searchNode(2);
        if (node != null) {
            System.out.println("找到了值为2的节点");
        } else {
            System.out.println("没有找到值为2的节点");
        }
        
        linkedList.deleteNode(3);
        
        node = linkedList.searchNode(3);
        if (node != null) {
            System.out.println("找到了值为3的节点");
        } else {
            System.out.println("没有找到值为3的节点");
        }
    }
}

上述示例代码中,首先创建了一个链表,并向链表中添加了3个节点。然后通过查找方法搜索值为2的节点,并输出结果。接着通过删除方法删除了值为3的节点,并再次搜索该节点,输出结果。

通过上述示例和基于Java的链表类的实现,你可以更深入了解并使用链表这一重要的数据结构。