双向链表:
public class DoubleLinkList < T> {
Entry< T> head;
public DoubleLinkList ( ) {
head = new Entry < > ( null, null, null) ;
}
public void addHead ( T value) {
Entry< T> P = new Entry < > ( value, head, head. getNext ( ) ) ;
head. setNext ( P) ;
if ( P. getNext ( ) != null) {
P. getNext ( ) . setPre ( P) ;
}
}
public void addTail ( T value) {
Entry< T> cur = head;
while ( cur. getNext ( ) != null) {
cur = cur. getNext ( ) ;
}
cur. setNext ( new Entry < T> ( value, cur, null) ) ;
}
public void removeValue ( T value) {
Entry< T> cur = head. getNext ( ) ;
while ( cur != null) {
if ( cur. getValue ( ) == value) {
cur. getPre ( ) . setNext ( cur. getNext ( ) ) ;
if ( cur. getNext ( ) != null) {
cur. getNext ( ) . setPre ( cur. getPre ( ) ) ;
}
}
cur = cur. getNext ( ) ;
}
}
public void Show ( ) {
Entry< T> cur = head. getNext ( ) ;
for ( ; cur != null; cur = cur. getNext ( ) ) {
System. out. println ( cur. getValue ( ) + " " ) ;
}
}
public static void main ( String[ ] args) {
DoubleLinkList < Integer> MYlist = new DoubleLinkList < > ( ) ;
MYlist. addHead ( 1 ) ;
MYlist. addHead ( 2 ) ;
MYlist. addTail ( 3 ) ;
MYlist. Show ( ) ;
System. out. println ( "*********************************************" ) ;
System. out. println ( "移除后 : " ) ;
MYlist. removeValue ( 2 ) ;
MYlist. Show ( ) ;
}
}