java如何定义链表
定义链表节点类
在Java中,链表由节点(Node)组成,每个节点包含数据域和指向下一个节点的引用。定义一个通用的链表节点类:

class ListNode {
int val; // 数据域
ListNode next; // 指向下一个节点的引用
// 构造函数
ListNode(int val) {
this.val = val;
this.next = null;
}
}
创建链表实例
通过实例化节点并连接它们的next引用,可以手动构建链表:

ListNode head = new ListNode(1); // 创建头节点
head.next = new ListNode(2); // 第二个节点
head.next.next = new ListNode(3); // 第三个节点
使用泛型支持多种数据类型
若需支持多种数据类型,可通过泛型定义节点类:
class ListNode<T> {
T data; // 泛型数据域
ListNode<T> next; // 泛型节点引用
ListNode(T data) {
this.data = data;
this.next = null;
}
}
// 示例:字符串链表
ListNode<String> stringHead = new ListNode<>("Hello");
stringHead.next = new ListNode<>("World");
实现链表基本操作
以下是一个完整示例,包含链表的插入、遍历和删除操作:
class LinkedList {
ListNode head;
// 在链表末尾添加节点
void append(int val) {
if (head == null) {
head = new ListNode(val);
return;
}
ListNode current = head;
while (current.next != null) {
current = current.next;
}
current.next = new ListNode(val);
}
// 遍历链表并打印
void printList() {
ListNode current = head;
while (current != null) {
System.out.print(current.val + " ");
current = current.next;
}
}
}
// 使用示例
LinkedList list = new LinkedList();
list.append(1);
list.append(2);
list.append(3);
list.printList(); // 输出: 1 2 3
注意事项
- 链表操作需注意空指针异常(如
head为null时直接访问next)。 - 双向链表可在节点类中增加
prev引用,实现前后双向遍历。 - Java标准库提供了
LinkedList类(位于java.util包),可直接使用其内置方法。






