实现带头节点单链表的插入、查找以及删除
时间: 2024-09-27 09:02:17 浏览: 33
C++ 实现带头节点的单链表
实现带头节点的单链表(也称为哨兵节点链表),我们首先会定义一个链表节点结构,包含数据元素和指向下一个节点的指针。以下是基本操作的步骤:
1. **插入**:
- 插入到头部:创建一个新的节点,并将其next指针设置为当前头节点,然后将头节点指向新节点。
- 插入到指定位置(非头部):需要先找到插入点前一个节点,然后更新这个节点的next指针指向新节点。
```java
public void insert(int data, int position) {
if (position <= 0) {
newNode.next = head;
head = newNode;
} else {
Node temp = head;
for (int i = 1; i < position && temp != null; i++) {
temp = temp.next;
}
if (temp != null) {
newNode.next = temp.next;
temp.next = newNode;
} else {
System.out.println("Invalid position");
}
}
}
```
2. **查找**:
- 查找值:遍历链表,直到找到值相等的节点或遍历结束。
```java
public boolean search(int value) {
Node current = head;
while (current != null) {
if (current.data == value) {
return true;
}
current = current.next;
}
return false;
}
```
3. **删除**:
- 删除值:同样需要遍历链表,找到要删除的节点并调整前后节点的关系。
```java
public void delete(int value) {
if (head == null) return;
if (head.data == value) {
head = head.next;
return;
}
Node current = head;
while (current.next != null && current.next.data != value) {
current = current.next;
}
if (current.next != null) {
current.next = current.next.next;
} else {
System.out.println("Value not found");
}
}
```
阅读全文