java单链表的查找删除插入
时间: 2025-05-23 20:09:19 浏览: 10
### Java 中单链表的操作
#### 查找元素
为了在单链表中查找特定值,可以遍历整个列表直到找到匹配项或到达链表末端。如果找到了该值,则返回`true`; 否则,在遍历结束时返回`false`。
```java
public boolean contains(int key) {
ListNode current = head;
while (current != null && current.value != key) {
current = current.next;
}
return current != null; // 如果当前节点不为空说明存在此键
}
```
#### 删除首次出现的关键字节点
要移除第一次遇到的目标值所在的结点,先定位到目标之前的一个位置(前驱),再调整指针绕过待删节点指向下一个节点完成删除动作[^2]。
```java
public void remove(int key) {
if (head == null) return;
// 处理头节点的情况
if (head.value == key) {
head = head.next;
return;
}
// 遍历寻找并处理非头节点情况
ListNode prev = head;
while (prev.next != null && prev.next.value != key) {
prev = prev.next;
}
// 当前next即为需要被删除的节点
if (prev.next != null) {
prev.next = prev.next.next;
}
}
```
#### 插入新元素
插入操作分为三种情形:头部插入(`addFirst`)、尾部追加(`addLast`) 和指定索引处插入 (`addIndex`). 下面展示如何实现这几种方式:
##### 添加至开头
```java
public void addFirst(int data) {
ListNode newNode = new ListNode(data);
newNode.next = head;
head = newNode;
}
```
##### 追加到最后
```java
public void addLast(int data) {
ListNode newNode = new ListNode(data);
if (head == null) {
head = newNode;
return;
}
ListNode temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = newNode;
}
```
##### 按照给定的位置插入
```java
public void addIndex(int index, int data) {
if (index < 0 || index > size()) throw new IndexOutOfBoundsException();
if (index == 0) {
addFirst(data);
return;
}
ListNode newNode = new ListNode(data);
ListNode prev = head;
for (int i = 0; i < index - 1; ++i) {
prev = prev.next;
}
newNode.next = prev.next;
prev.next = newNode;
}
```
阅读全文
相关推荐



















