用java做单链表的初始化,插入,删除
时间: 2024-10-11 12:08:19 浏览: 43
在 Java 中,我们可以使用单链表结构来存储一系列元素,其节点通常包含数据域和指向下一个节点的引用。以下是基本操作的概述:
1. **初始化链表**:
- 创建一个 Node 类,它有两个属性:`data` 存储节点值,`next` 指向下一个节点。
```java
class Node {
int data;
Node next;
// 默认构造函数
public Node(int data) {
this.data = data;
this.next = null;
}
}
// 初始化空链表
LinkedList<Integer> list = new LinkedList<>();
```
2. **插入节点**:
- `addFirst(data)` 方法会在链表头部添加新节点,如果链表为空则相当于头插法。
```java
void addFirst(int data) {
if (list.isEmpty()) {
list.head = new Node(data);
} else {
Node newNode = new Node(data);
newNode.next = list.head;
list.head = newNode;
}
}
```
- `addLast(data)` 方法会在链表尾部添加新节点,如果链表为空则相当于尾插法。
```java
void addLast(int data) {
if (list.isEmpty()) {
list.head = new Node(data);
} else {
Node newNode = new Node(data);
list.tail.next = newNode;
list.tail = newNode; // 更新尾节点
}
}
```
3. **删除节点**:
- 删除指定位置的节点(假设有一个 `indexOf` 函数找到目标节点的位置):
```java
void remove(int index) {
if (index < 0 || index >= list.size()) return;
Node current = list.head;
for (int i = 0; i < index && current != null; i++) {
current = current.next;
}
if (current == null) return;
Node prev = current.prev;
if (prev != null) {
prev.next = current.next;
} else { // 如果是头节点
list.head = current.next;
}
if (current == list.tail) {
list.tail = prev;
}
}
```
阅读全文