java中的双向链表怎么实现
导读:在Java中,可以使用自定义的双向链表类来实现双向链表。以下是一个简单的双向链表的实现示例: public class DoublyLinkedList { private Node head; // 链表头节点 priva...
在Java中,可以使用自定义的双向链表类来实现双向链表。以下是一个简单的双向链表的实现示例:
public class DoublyLinkedList {
private Node head;
// 链表头节点
private Node tail;
// 链表尾节点
// 链表节点类
private static class Node {
private T data;
// 节点数据
private Node prev;
// 前一个节点引用
private Node next;
// 后一个节点引用
public Node(T data) {
this.data = data;
}
}
// 在链表末尾添加节点
public void add(T data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
tail = newNode;
}
else {
newNode.prev = tail;
tail.next = newNode;
tail = newNode;
}
}
// 在链表指定位置插入节点
public void insert(int index, T data) {
if (index size()) {
throw new IndexOutOfBoundsException();
}
Node newNode = new Node(data);
if (index == 0) {
if (head == null) {
head = newNode;
tail = newNode;
}
else {
newNode.next = head;
head.prev = newNode;
head = newNode;
}
}
else if (index == size()) {
tail.next = newNode;
newNode.prev = tail;
tail = newNode;
}
else {
Node current = getNode(index);
newNode.prev = current.prev;
newNode.next = current;
current.prev.next = newNode;
current.prev = newNode;
}
}
// 获取链表指定位置的节点
private Node getNode(int index) {
if (index = size()) {
throw new IndexOutOfBoundsException();
}
Node current = head;
for (int i = 0;
i = size()) {
throw new IndexOutOfBoundsException();
}
if (index == 0) {
head = head.next;
if (head == null) {
tail = null;
}
else {
head.prev = null;
}
}
else if (index == size() - 1) {
tail = tail.prev;
tail.next = null;
}
else {
Node current = getNode(index);
current.prev.next = current.next;
current.next.prev = current.prev;
}
}
// 获取链表大小
public int size() {
int count = 0;
Node current = head;
while (current != null) {
count++;
current = current.next;
}
return count;
}
}
以上是一个简单的双向链表类的实现示例,你可以使用该类来创建双向链表并进行插入、移除、获取节点等操作。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: java中的双向链表怎么实现
本文地址: https://pptw.com/jishu/567570.html
