下面是 Java 实现数据结构单链表的完整攻略。
简介
单链表是数据结构中的一种,用于存储一组有序的元素。单链表中,每个元素都由一个结点表示,结点中包含了一个指向下一个结点的指针。单链表的结构更加灵活,支持插入、删除等操作。
实现步骤
1. 定义节点类ListNode
单链表的每一个节点包含两个属性,分别是节点值 val
和指向下一个节点的指针 next
,所以我们定义一个名为 ListNode
的类,包含这两个属性。
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
2. 定义单链表类Solution
定义一个名为 Solution
的单链表类,它具有一下功能:(1)增加一个空节点 head
充当链表的头部;(2)添加新节点;(3)删除节点;(4)查询节点。
public class Solution {
ListNode head;
// 添加节点
public void addNode(int val) {
ListNode node = new ListNode(val);
if (head == null) {
head = node;
return;
}
ListNode temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = node;
}
// 删除节点
public void deleteNode(int val) {
ListNode temp = head;
if (temp == null) {
return;
}
if (temp.val == val) {
head = temp.next;
return;
}
while (temp.next != null) {
if (temp.next.val == val) {
temp.next = temp.next.next;
return;
}
temp = temp.next;
}
}
// 查询节点
public boolean searchNode(int val) {
ListNode temp = head;
while (temp != null) {
if (temp.val == val) {
return true;
}
temp = temp.next;
}
return false;
}
}
在上面的代码中,我们定义了一个 head
节点作为单链表的头部,接下来,我们实现了 addNode
、deleteNode
和 searchNode
三个函数,分别用于添加新节点、删除节点和查询节点。
在 addNode
函数中,我们首先判断 head
是否为空,如果为空,则将新节点作为 head
的值。否则,我们遍历整个列表,直到最后一个节点为止,然后在最后一个节点的指针上挂上新节点。在 deleteNode
函数中,我们首先遍历整个列表,查找待删除的节点。如果待删除的节点为 head
节点,我们将 head
指针指向待删除节点的下一个节点。否则,我们遍历整个列表,查找待删除节点的前一个节点,然后将待删除节点的前一个节点的指针指向待删除节点的下一个节点。在 searchNode
函数中,我们遍历整个列表,查找是否有与给定值相等的节点。
3. 示例说明
示例一
Solution sln = new Solution();
sln.addNode(1);
sln.addNode(2);
sln.addNode(3);
sln.deleteNode(2);
System.out.println(sln.searchNode(2)); // 输出 false
在这个示例中,我们先实例化了一个单链表 sln
,然后添加了三个节点,分别是 1、2 和 3。接下来,我们删除节点 2,再查询节点 2,结果应该是 false
。
示例二
Solution sln = new Solution();
sln.addNode(1);
sln.addNode(2);
sln.addNode(3);
System.out.println(sln.searchNode(2)); // 输出 true
在这个示例中,我们先实例化了一个单链表 sln
,然后添加了三个节点,分别是 1、2 和 3。接下来,我们查询节点 2,结果应该是 true
。
总结
至此,我们完成了 Java 实现数据结构单链表的攻略。单链表是数据结构中的一种,可以进行插入、删除等灵活的操作,因此非常实用。这个攻略提供了如何用 Java 实现单链表的具体步骤,帮助开发人员快速掌握单链表的使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现数据结构单链表示例(java单链表) - Python技术站