全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

java数据结构-双链表的删除与更新

发布时间:2023-03-24 10:40:00
发布人:syq

  双链表(Double Link List)是一种数据结构,每个节点包含两个指针,分别指向前一个节点和后一个节点。相比于单链表,双链表可以双向遍历,删除和更新操作也更加灵活方便。

双链表的删除与更新

  下面是在Java中实现双链表的删除和更新操作的示例:

  删除操作

  双链表的删除操作需要考虑以下情况:

  待删除节点是头节点

  待删除节点是尾节点

  待删除节点是中间节点

  示例代码

public class DoublyLinkedList {

// 定义链表节点
class ListNode {
int val;
ListNode prev;
ListNode next;

ListNode(int val) {
this.val = val;
this.prev = null;
this.next = null;
}
}

private ListNode head;
private ListNode tail;

// 删除节点
public void deleteNode(ListNode node) {
if (node == head) { // 待删除节点是头节点
head = head.next;
if (head != null) {
head.prev = null;
} else {
tail = null;
}
} else if (node == tail) { // 待删除节点是尾节点
tail = tail.prev;
tail.next = null;
} else { // 待删除节点是中间节点
node.prev.next = node.next;
node.next.prev = node.prev;
}
}
}

  更新操作

  双链表的更新操作可以分为两种情况:

  更新节点的值

  将节点移动到另一个位置

  示例代码如下:

public class DoublyLinkedList {

// 定义链表节点
class ListNode {
int val;
ListNode prev;
ListNode next;

ListNode(int val) {
this.val = val;
this.prev = null;
this.next = null;
}
}

private ListNode head;
private ListNode tail;

// 删除节点
public void deleteNode(ListNode node) {
if (node == head) { // 待删除节点是头节点
head = head.next;
if (head != null) {
head.prev = null;
} else {
tail = null;
}
} else if (node == tail) { // 待删除节点是尾节点
tail = tail.prev;
tail.next = null;
} else { // 待删除节点是中间节点
node.prev.next = node.next;
node.next.prev = node.prev;
}
}
}

  以上就是在Java中实现双链表的删除和更新操作的示例代码。

相关文章

python写入json文件?

python写入json文件?

2023-11-02
vscode设置tab为4个空格?

vscode设置tab为4个空格?

2023-11-02
更新pycharm?

更新pycharm?

2023-11-02
anaconda每次打开都要安装?

anaconda每次打开都要安装?

2023-11-02

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取