从Java中的链表中删除节点
本文介绍如何在 Java 中从链表中删除节点。
从Java中的链表中删除节点
链表是Java的util包中的一种数据结构,它实现了链表数据结构。 链表被认为是线性数据结构,其中每个元素都是具有地址和数据部分的单独对象,并且没有元素存储在传染位置中。
从链表中删除节点可以按照删除给定键的第一次出现的过程来完成。
从链表中删除节点的步骤如下:
- 首先,我们必须找到给定节点的前一个节点。 这意味着在删除节点之前找到该节点。
- 下一步是更改前一个节点的文本。
- 最后,我们需要释放可删除节点的内存。
这是一个迭代过程,每个节点都是使用C的malloc()方法动态分配的,因此每次都需要调用free()方法来释放内存。
让我们尝试一个例子,从给定的 Java 链表中删除一个节点:
package jiyik;
public class Example {
class DemoNode{
int NodeData;
DemoNode NextNode;
public DemoNode(int NodeData) {
this.NodeData = NodeData;
this.NextNode = null;
}
}
//head and tail node
public DemoNode HeadNode = null;
public DemoNode TailNode = null;
//to add new nodes
public void Add_Node(int NodeData) {
DemoNode NewNode = new DemoNode(NodeData);
if(HeadNode == null) {
HeadNode = NewNode;
TailNode = NewNode;
}
else {
TailNode.NextNode = NewNode;
TailNode = NewNode;
}
}
//To delete nodes
public void DeleteNode() {
if(HeadNode == null) {
System.out.println("List is empty");
return;
}
else {
//Checks if the list contains only one element
if(HeadNode != TailNode ) {
DemoNode current = HeadNode;
//Iterate through the list till the second last element
while(current.NextNode != TailNode) {
current = current.NextNode;
}
TailNode = current;
TailNode.NextNode = null;
}
else {
HeadNode = TailNode = null;
}
}
}
//To display the node
public void DisplayNode() {
DemoNode CurrentNode = HeadNode;
if(HeadNode == null) {
System.out.println("List is empty");
return;
}
while(CurrentNode != null) {
System.out.print(CurrentNode.NodeData + " ");
CurrentNode = CurrentNode.NextNode;
}
System.out.println();
}
public static void main(String[] args) {
Example Linked_List = new Example();
//Adds nodes to the list
Linked_List.Add_Node(1);
Linked_List.Add_Node(2);
Linked_List.Add_Node(3);
Linked_List.Add_Node(4);
System.out.println("The Original List is: ");
Linked_List.DisplayNode();
while(Linked_List.HeadNode != null) {
Linked_List.DeleteNode();
System.out.println("The list after Deleting a Node: ");
Linked_List.DisplayNode();
}
}
}
上面的代码首先将节点添加到链表中,然后从链表末尾删除节点。 查看输出:
The Original List is:
1 2 3 4
The list after Deleting a Node:
1 2 3
The list after Deleting a Node:
1 2
The list after Deleting a Node:
1
The list after Deleting a Node:
List is empty
相关文章
Java 中的自定义帮助器方法
发布时间:2023/07/19 浏览次数:177 分类:Java
-
我们创建一个帮助器类来帮助提供不是实现或实现它的类的主要目标的功能。简而言之,辅助对象是辅助类的实例。 在委托模式中,使用了相同的辅助对象。该演示将通过从头开始向您展示实
使用Java中的wait()和notify()方法
发布时间:2023/07/19 浏览次数:127 分类:Java
-
本文介绍了 Java 中的 wait() 和 notification() 方法。使用Java中的wait()和notify()方法 wait() 和 notify() 方法提供了一种允许线程等待直到满足特定条件的机制。 例如,当您想要为某些固定大小的元素后
Java Streams 中的flush()方法的使用
发布时间:2023/07/19 浏览次数:136 分类:Java
-
本文将讨论Java流中的 flush() 函数及其主要用途。Java中的flush()方法 该 Writer 流可以使用 flash() 函数进行刷新,该函数可以在 Writer 类中找到。
Java 中的重写和重载静态方法
发布时间:2023/07/19 浏览次数:156 分类:Java
-
在本文中,我们将讨论 Java 中是否可以覆盖和重载静态方法。 但在我们进一步讨论之前,让我们先明确几个关键点:Java 面向对象的本质使得重写和重载变得至关重要。 当程序员需要多功能性
Java 中可选的 ifPresent()
发布时间:2023/07/19 浏览次数:66 分类:Java
-
本文将讨论 Java 中名为 ifPresent() 的可选类方法。Java 中的可选类方法 ifPresent() 名为 ifPresent() 的可选类是一个实例方法,主要用于在该类的实例包含值时执行操作。 它是 Consumer 接口的实现。
Java 中的方法链
发布时间:2023/07/19 浏览次数:89 分类:Java
-
本篇文章介绍如何在 Java 中执行方法链。Java 中的方法链 方法链接使用点同时调用多个方法。点 . 运算符 方法链在一条语句中调用多个方法,而在一条语句中调用一系列方法。
Java迭代器remove()方法
发布时间:2023/07/17 浏览次数:117 分类:Java
-
Java 开发人员经常需要在迭代时从 ArrayList 中删除元素或对象。在本文中,我们将了解迭代器的remove()方法和集合的remove()方法的工作原理有何不同。
查找 Java 中的内存泄漏
发布时间:2023/07/17 浏览次数:96 分类:Java
-
本文将教我们如何查找Java内存泄漏。未使用的项目占用额外的内存空间称为内存泄漏。 内存泄漏是有问题的,因为它们会堵塞内存资源并随着时间的推移降低系统性能。
Java 8 Stream 中的属性不同
发布时间:2023/07/17 浏览次数:171 分类:Java
-
本文通过属性演示了在 Java 中使用流的独特功能。Java 8 Stream 中的属性不同 Java 8 Stream 有一个 distinct() 方法,可以过滤列表中的重复项。