双链表的操作2:返回指定位置的节点数据
package shuanglianbiao ;
import org. omg. Messaging. SyncScopeHelper ;
public class Doublelink < E > {
public Node < E > first;
private Node < E > last;
private int size;
private class Node < E > {
private Node < E > prev;
private E item;
private Node < E > next;
public Node ( ) {
}
public Node ( Node < E > prev, E item, Node < E > next) {
this . prev = prev;
this . item = item;
this . next = next;
}
}
private void linkFirst ( E e) {
Node < E > f = first;
Node < E > newNode = new Node < E > ( null , e, f) ;
first = newNode;
if ( f== null ) {
last = newNode;
} else {
f. prev = newNode;
newNode. next = f;
}
size++ ;
}
private void linkLast ( E e) {
Node < E > l = last;
Node < E > newNode = new Node < E > ( l, e, null ) ;
last = newNode;
if ( l== null ) {
first = newNode;
} else {
l. next = newNode;
newNode. prev = l;
}
size++ ;
}
public void addFirst ( E e) {
linkFirst ( e) ;
}
public void addLast ( E e) {
linkLast ( e) ;
}
public void print ( Node < E > e) {
if ( e!= null ) {
System . out. print ( e. item+ "-----" ) ;
if ( e. next!= null ) {
this . print ( e. next) ;
}
}
}
public void checkElement ( int index) {
if ( index< 0 || index>= size) {
throw new IndexOutOfBoundsException ( "index:" + index+ ",size:" + size) ;
}
}
private Node < E > node ( int index) {
if ( index<= ( size/ 2 ) ) {
Node < E > f = first;
for ( int i = 0 ; i< index; i++ ) {
f = f. next;
}
return f;
}
if ( index> ( size/ 2 ) ) {
Node < E > n = last;
for ( int j = size- 1 ; j> index; j++ ) {
n = n. prev;
}
return n;
}
return null ;
}
public E get ( int index) {
checkElement ( index) ;
return node ( index) . item;
}
}
package shuanglianbiao ;
public class Test3 {
public static void main ( String [ ] args) {
Doublelink < String > link = new Doublelink ( ) ;
link. addLast ( "C语言" ) ;
link. addLast ( "C++" ) ;
link. addLast ( "Python" ) ;
link. addFirst ( "Java" ) ;
link. print ( link. first) ;
System . out. println ( ) ;
System . out. println ( link. get ( 0 ) ) ;
System . out. println ( link. get ( 1 ) ) ;
}
}
```! [ 在这里插入图片描述] ( https: / / img- blog. csdnimg. cn/ 576 a43ba1d5a4e399131fe94918fccff. png)