设计一个带头结点的单链表类
时间: 2024-11-12 19:36:42 浏览: 12
小白算法积累——单链表15#2个带头结点单链表+提取公共元素+二表合一
设计一个带头结点的单链表类,通常需要考虑以下几个关键部分:
1. **节点结构**:
- `Node` 类:包含一个数据域 `data` 和一个指向下一个节点的指针 `next`。头结点通常是特殊的节点,其 `next` 指向第一个实际元素。
```java
class Node {
int data;
Node next;
// 构造函数用于初始化节点
public Node(int value) {
data = value;
next = null; // 初始状态下头结点的下一个节点为null
}
}
```
2. **链表类**:
- `LinkedList` 类:包含对链表的操作方法,如插入、删除、搜索、遍历等,并维护头结点的引用。
```java
public class LinkedList {
private Node head; // 头结点
// 添加元素到链表头部
public void addFirst(int value) {
Node newNode = new Node(value);
newNode.next = head;
head = newNode;
}
// 添加元素到链表尾部
public void addLast(int value) {
if (head == null) {
head = new Node(value);
} else {
Node currentNode = head;
while (currentNode.next != null) {
currentNode = currentNode.next;
}
currentNode.next = new Node(value);
}
}
// 删除指定值的第一个匹配项
public boolean remove(int value) {
if (head == null || head.data != value) return false;
head = head.next;
return true;
}
// 遍历链表并打印节点值
public void printList() {
Node currentNode = head;
while (currentNode != null) {
System.out.print(currentNode.data + " -> ");
currentNode = currentNode.next;
}
System.out.println("null");
}
// 更多方法... 如查找、大小计算等
}
```
阅读全文