public class Node {
public Node ( int val) {
this . val = val;
this . next = null;
} ;
Node next;
protected int val;
}
package hello;
public class MyLink {
Node head;
int linksize;
public MyLink ( ) {
head = null;
linksize = 0 ;
}
public MyLink ( int val) {
head = new Node ( val) ;
linksize = 1 ;
}
public void insertNail ( int val) {
Node node = new Node ( val) ;
if ( head== null) {
head = node;
}
else {
Node q = head;
while ( q. next!= null) {
q = q. next;
}
q. next = node;
}
linksize ++ ;
}
public void insertHead ( int val) {
Node node = new Node ( val) ;
if ( head== null) {
head = node;
} else {
node. next = head;
head = node;
}
linksize ++ ;
}
public void delIndex ( int index) {
Node p = head;
if ( index == 0 ) {
head = head. next;
p. next = null;
} else if ( index == - 1 ) {
if ( p. next== null) head= null;
while ( p. next. next!= null) p = p. next;
p. next = null;
} else {
index -= 1 ;
Node q = p. next;
while ( index-- > 0 ) {
p = p. next;
q = q. next;
}
p. next = q. next;
q. next = null;
}
linksize -- ;
}
public boolean isEmpty ( ) {
return linksize == 0 ;
}
public int size ( ) {
return linksize;
}
public void clear ( ) {
head = null;
linksize = 0 ;
}
public Node reversePrint ( Node head) {
if ( head == null || head. next == null) return head;
Node p = head;
Node q = head. next;
Node temp;
while ( q!= null) {
temp = q. next;
q. next = p;
p = q;
q = temp;
}
head. next= null;
return p;
}
private void myprint ( ) {
if ( head== null) return ;
Node p = head;
System. out. print ( p. val+ " " ) ;
while ( p. next!= null) {
System. out. print ( p. next. val + " " ) ;
p = p. next;
}
}
public boolean insert ( int k, Node node) {
if ( k< 0 || k> linksize- 1 ) {
return false ;
}
if ( k == 0 ) {
node. next = head;
head = node;
linksize++ ;
return true ;
}
Node p = head;
int i = 1 ;
while ( i< k) {
p = p. next;
i++ ;
}
node. next = p. next;
p. next = node;
linksize++ ;
return true ;
}
public Node query ( int k) {
if ( k< 0 || k> linksize- 1 ) return null;
if ( k== 0 ) return head;
Node p = head;
int i = 0 ;
while ( p. next!= null) {
p = p. next;
i++ ;
if ( i== k) {
return p;
}
}
return null;
}
public static void main ( String[ ] args) {
MyLink t = new MyLink ( ) ;
System. out. println ( "============" ) ;
for ( int i = 0 ; i < 10 ; i ++ ) {
t. insertNail ( i) ;
}
t. myprint ( ) ;
System. out. println ( ) ;
System. out. println ( t. size ( ) ) ;
t. insert ( 4 , new Node ( 20 ) ) ;
t. myprint ( ) ;
System. out. println ( ) ;
System. out. println ( t. query ( 4 ) . val) ;
System. out. println ( t. query ( 4 ) ) ;
System. out. println ( t. size ( ) ) ;
Node res = t. reversePrint ( t. query ( 0 ) ) ;
System. out. print ( res. val + " " ) ;
while ( res. next!= null) {
res = res. next;
System. out. print ( res. val+ " " ) ;
}
}
}