package com.study.arithmetic;
public class LinkedList<E> {
class Node {
Node prev;
E value;
Node next;
Node(E e) {
value = e;
}
}
private Node head;
public Node search(E e) {
Node node = head;
while(node != null && !node.value.equals(e))
node = node.next;
return node;
}
public void insert(E e) {
Node node = new Node(e);
node.next = head;
if(head != null)
head.prev = node;
head = node;
node.prev = null;
}
public boolean find(E e) {
return search(e) != null;
}
public boolean delete(E e) {
Node node = search(e);
if(node != null) {
if(node.prev != null)
node.prev.next = node.next; //当前节点的前一个元素的下一个元素指向当前节点的下一个元素。
else
head = node.next;
if(node.next != null)
node.next.prev = node.prev; //当前节点下一个元素的前一个元素指向当前节点的前一个元素。
return true;
}
return false;
}
}