用java编写双向链表的 添加 查找 删除
时间: 2024-05-13 17:15:26 浏览: 8
好的,下面是Java实现双向链表的添加、查找和删除操作的代码:
```java
class Node {
int val;
Node prev;
Node next;
Node(int val) {
this.val = val;
}
}
class DoublyLinkedList {
private Node head;
private Node tail;
private int size;
public DoublyLinkedList() {
head = null;
tail = null;
size = 0;
}
// 添加节点
public void addNode(int val) {
Node node = new Node(val);
if (head == null) {
head = node;
tail = node;
} else {
tail.next = node;
node.prev = tail;
tail = node;
}
size++;
}
// 查找节点
public Node findNode(int val) {
Node curr = head;
while (curr != null) {
if (curr.val == val) {
return curr;
}
curr = curr.next;
}
return null;
}
// 删除节点
public void deleteNode(int val) {
Node curr = head;
while (curr != null) {
if (curr.val == val) {
if (curr == head && curr == tail) {
head = null;
tail = null;
} else if (curr == head) {
head = curr.next;
head.prev = null;
} else if (curr == tail) {
tail = curr.prev;
tail.next = null;
} else {
curr.prev.next = curr.next;
curr.next.prev = curr.prev;
}
size--;
break;
}
curr = curr.next;
}
}
}
```
其中,Node类表示双向链表中的节点,包含一个值val,一个指向前一个节点prev,一个指向后一个节点next。DoublyLinkedList类表示双向链表,包含头结点head,尾节点tail,链表的大小size。addNode方法用于在链表尾部添加一个节点,findNode方法用于查找一个指定值的节点,deleteNode方法用于删除一个指定值的节点。