Java 从单链表中间删除节点的程序17 Mar 2025 | 5 分钟阅读 在这个程序中,我们将创建一个单链表并从链表的中间删除一个节点。为了完成此任务,我们将计算链表的大小,然后将其除以 2 以获得链表的中间点。节点 temp 将指向头节点。我们将遍历链表直到达到中间点。现在,temp 将指向中间节点,而 current 节点将指向 temp 之前的节点。我们删除中间节点,以便 current 的下一个节点将指向 temp 的下一个节点。  考虑上面的例子,上面列表的中间点是 2。从头到中间点迭代 temp。现在,temp 指向需要删除的中间节点。在这种情况下,节点是需要删除的中间节点。可以通过使节点 2 的下一个(current)指向节点 3(temp 的下一个节点)来删除节点。将 temp 设置为 null。 算法- 创建一个名为 Node 的类,它有两个属性:data 和 next。Next 是指向链表中下一个节点的指针。
- 创建另一个名为 deleteMid 的类,它有三个属性:head、tail 和 size,用于跟踪链表中存在的节点数量。
- addNode() 将向列表添加一个新节点
- 创建一个新节点。
- 它首先检查 head 是否等于 null,这意味着列表为空。
- 如果列表为空,head 和 tail 都将指向新添加的节点。
- 如果列表不为空,新节点将被添加到列表的末尾,以便 tail 的 next 将指向新添加的节点。这个新节点将成为列表的新 tail。
a. deleteFromMid() 将从列表的中间删除一个节点 - 它首先检查 head 是否为 null(空列表),然后显示消息“列表为空”并返回。
- 如果列表不为空,它将检查列表是否只有一个节点。
- 如果列表只有一个节点,它将 head 和 tail 都设置为 null。
- 如果列表有多个节点,则计算列表的大小并将其除以 2 以获得列表的中间点。
- 声明一个节点 temp,它将指向 head,而 current 节点将指向 temp 之前的节点。
- 遍历列表直到 temp 指向中间节点。如果 current 不指向 null,则通过使 current 的 next 指向 temp 的 next 来删除中间节点 (temp)。否则,head 和 tail 都将指向 temp 的下一个节点,并通过将 temp 设置为 null 来删除中间节点。
a. display() 将显示列表中存在的节点 - 定义一个节点 current,它最初将指向列表的 head。
- 遍历列表直到 current 指向 null。
- 通过使 current 在每次迭代中指向它的下一个节点来显示每个节点。
程序输出 Original List:
1 2 3 4
Updated List:
1 3 4
Updated List:
1 4
Updated List:
4
Updated List:
List is empty
|