基于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的链表类的实现,你可以更深入了解并使用链表这一重要的数据结构。
