单链表java
时间: 2025-05-05 12:05:41 浏览: 19
### Java单链表实现详解
#### 1. 定义单链表的存储结构
在Java中,可以通过创建一个`Node`类来表示单链表中的节点。每个节点包含两部分内容:一是数据域(用于存储实际数据),二是指针域(指向下一个节点)。以下是基于引用的内容构建的一个简单的节点类[^2]。
```java
class ListNode {
int val; // 数据元素
ListNode next; // 指向下一个节点的引用
// 构造函数初始化节点值
ListNode(int val) {
this.val = val;
this.next = null;
}
}
```
#### 2. 单链表的基本操作及实现
为了方便管理单链表,通常会封装一些常用的操作方法,比如插入、删除、查找等。下面是一个完整的单链表类示例,包含了这些功能[^4]。
```java
public class SingleLinkedList {
private ListNode head; // 头节点,默认为空
public SingleLinkedList() {
this.head = null;
}
// 插入新节点到链表头部
public void insertAtHead(int value) {
ListNode newNode = new ListNode(value);
newNode.next = head;
head = newNode;
}
// 删除指定值的第一个匹配项
public boolean deleteByValue(int value) {
if (head == null) return false;
if (head.val == value) {
head = head.next;
return true;
}
ListNode current = head;
while (current.next != null && current.next.val != value) {
current = current.next;
}
if (current.next != null) {
current.next = current.next.next;
return true;
}
return false;
}
// 查找是否存在某个值
public boolean contains(int value) {
ListNode current = head;
while (current != null) {
if (current.val == value) {
return true;
}
current = current.next;
}
return false;
}
// 打印整个链表
public void displayList() {
ListNode current = head;
while (current != null) {
System.out.print(current.val + " -> ");
current = current.next;
}
System.out.println("null");
}
}
```
上述代码实现了以下几个主要功能:
- **insertAtHead** 方法允许将新的节点插入到链表的开头。
- **deleteByValue** 方法通过给定的值找到并移除第一个匹配的节点。
- **contains** 方法用来判断链表中是否包含特定值。
- **displayList** 方法遍历链表并将所有节点打印出来以便于调试或展示[^3]。
#### 3. 使用示例
以下是如何使用上面定义好的单链表类:
```java
public class Main {
public static void main(String[] args) {
SingleLinkedList list = new SingleLinkedList();
// 向链表中添加几个节点
list.insertAtHead(30);
list.insertAtHead(20);
list.insertAtHead(10);
// 显示当前链表状态
System.out.println("初始链表:");
list.displayList();
// 测试删除操作
if (list.deleteByValue(20)) {
System.out.println("删除成功后的链表:");
list.displayList();
} else {
System.out.println("未找到要删除的值.");
}
// 测试查找操作
if (list.contains(30)) {
System.out.println("链表中存在值为30的节点.");
} else {
System.out.println("链表中不存在值为30的节点.");
}
}
}
```
运行以上程序将会依次完成链表的建立、显示、删除以及再次显示的过程,并验证某些值的存在情况[^1]。
---
阅读全文
相关推荐

















