好的,根据官方的设计,以下是一个基于双链表的简化版本:
public class DoublyLinkedList<E> {
private int size = 0;
private Node<E> first;
private Node<E> last;
private static class Node<E> {
E item;
Node<E> prev;
Node<E> next;
public Node(E item, Node<E> prev, Node<E> next) {
this.item = item;
this.prev = prev;
this.next = next;
}
}
public void addFirst(E element) {
if (isEmpty()) {
first = last = new Node<>(element, null, null);
} else {
Node<E> newNode = new Node<>(element, null, first);
first.prev = newNode;
first = newNode;
}
size++;
}
public void addLast(E element) {
if (isEmpty()) {
first = last = new Node<>(element, null, null);
} else {
Node<E> newNode = new Node<>(element, last, null);
last.next = newNode;
last = newNode;
}
size++;
}
public boolean removeFirst() {
if (isEmpty()) return false;
if (first == last) { // Only one element in the list
first = last = null;
} else {
first.next.prev = null;
first = first.next;
}
size--;
return true;
}
public boolean removeLast() {
if(isEmpty()) return false;
if(first==last){
first=last=null;
}else{
last.prev.next=null;
last=last.prev;
}
size--;
return true;
}
public boolean isEmpty() {
return size == 0;
}
public int size() {
return size;
}
}
这个类包含了添加头部、尾部元素和删除头部、尾部元素的操作。你可以根据需要进一步扩展该类,并添加其他功能。
内容由零声教学AI助手提供,问题来源于学员提问




