Products
GG网络技术分享 2025-11-22 17:48 0
双向链表是一种链式存储结构,个个节点有两个指针,分别指向前一个节点和后一个节点。这样的结构使得双向链表在遍历的时候Neng向前和向后移动,从而实现双向遍历。

先说说 我们需要定义一个双向链表的节点类,这玩意儿节点类包含三个成员变量:数据域、前指针和后指针。然后我们再定义一个双向链表类,这玩意儿类包含一个头指针和一个尾指针,用于指向双向链表的首节点和尾节点。
class Node {
public int data;
public Node prev;
public Node next;
public Node {
this.data = data;
}
}
class DoublyLinkedList {
private Node head;
private Node tail;
public DoublyLinkedList {
this.head = null;
this.tail = null;
}
// 其他增删操作的方法
}
插入节点到双向链表有两种方式:插入到链表头部和插入到链表尾部。
// 插入到链表头部
public void insertFirst {
Node newNode = new Node;
if {
head = newNode;
tail = newNode;
} else {
newNode.next = head;
head.prev = newNode;
head = newNode;
}
}
// 插入到链表尾部
public void insertLast {
Node newNode = new Node;
if {
head = newNode;
tail = newNode;
} else {
newNode.prev = tail;
tail.next = newNode;
tail = newNode;
}
}
删除节点从双向链表也有两种方式:删除链表头部和删除链表尾部。
// 删除链表头部
public int deleteFirst {
if {
return -1; // 链表为空, 无法删除
}
int data = head.data;
if {
head = null;
tail = null;
} else {
head = head.next;
head.prev = null;
}
return data;
}
// 删除链表尾部
public int deleteLast {
if {
return -1; // 链表为空,无法删除
}
int data = tail.data;
if {
head = null;
tail = null;
} else {
tail = tail.prev;
tail.next = null;
}
return data;
}
查找节点在双向链表中的位置,我们Neng从头节点开头遍历,直到找到目标节点为止。
public int find {
Node current = head;
int index = 0;
while {
if {
return index;
}
current = current.next;
index++;
}
return -1; // 未找到
}
双向链表是一种非常有用的数据结构, 它Neng方便地实现插入、删除和查找操作。,巩固所学知识。
Demand feedback