阅读量:0
在Java中,手写实现链表结构通常涉及定义链表节点(ListNode)类和链表(LinkedList)类。链表节点通常包含数据部分和指向下一个节点的引用。链表类则包含一系列方法来操作链表,如添加、删除、查找等。
以下是一个简单的单向链表实现的示例:
链表节点类(ListNode)
public class ListNode { | |
int val; // 节点的值 | |
ListNode next; // 指向下一个节点的引用 | |
// 构造函数 | |
public ListNode(int val) { | |
this.val = val; | |
this.next = null; | |
} | |
} |
链表类(LinkedList)
public class LinkedList { | |
private ListNode head; // 链表的头节点 | |
// 构造函数 | |
public LinkedList() { | |
this.head = null; | |
} | |
// 在链表末尾添加元素 | |
public void add(int val) { | |
ListNode newNode = new ListNode(val); | |
if (head == null) { | |
head = newNode; | |
} else { | |
ListNode current = head; | |
while (current.next != null) { | |
current = current.next; | |
} | |
current.next = newNode; | |
} | |
} | |
// 打印链表 | |
public void printList() { | |
ListNode current = head; | |
while (current != null) { | |
System.out.print(current.val + " -> "); | |
current = current.next; | |
} | |
System.out.println("null"); | |
} | |
// 其他方法(例如删除节点、查找节点等)可以按需添加 | |
// 示例:删除链表中的某个值(删除第一个匹配的值) | |
public void delete(int val) { | |
if (head == null) return; | |
if (head.val == val) { | |
head = head.next; | |
return; | |
} | |
ListNode current = head; | |
while (current.next != null) { | |
if (current.next.val == val) { | |
current.next = current.next.next; | |
return; | |
} | |
current = current.next; | |
} | |
} | |
} |
使用示例
public class Main { | |
public static void main(String[] args) { | |
LinkedList list = new LinkedList(); | |
list.add(1); | |
list.add(2); | |
list.add(3); | |
list.printList(); // 输出:1 -> 2 -> 3 -> null | |
list.delete(2); | |
list.printList(); // 输出:1 -> 3 -> null | |
} | |
} |
以上代码展示了如何定义一个简单的单向链表,包括链表节点类和链表类,并提供了添加元素和打印链表的方法。还展示了如何删除链表中的第一个匹配元素。当然,链表还有很多其他操作,如插入节点到指定位置、查找节点等,可以根据需要进行实现。