使用java实现的链表,具有增删改查的功能。后面我会逐步的优化算法,并以此为基础功能实现栈、队列、二叉树以及图。
public class t_1 {
public static void main ( String [ ] args) {
link l = new link ( ) ;
l. init ( ) ;
for ( int i= 0 ; i< 50 ; i++ ) {
l. link_add ( i) ;
}
System . out. println ( l. length ( ) ) ;
l. scan_link ( ) ;
System . out. println ( "------------------------" ) ;
l. del_find_link ( 49 ) ;
System . out. println ( l. find ( 40 ) ) ;
l. scan_link ( ) ;
}
}
class lnode{
private int data;
private lnode next;
void setNext ( lnode next) {
this . next = next;
}
void setData ( int data) {
this . data = data;
}
int getData ( ) {
return this . data;
}
lnode getNext ( ) {
return this . next;
}
}
class link{
private int length;
lnode head;
void init ( ) {
head = new lnode ( ) ;
head. setNext ( null ) ;
head. setData ( 0 ) ;
this . length = 0 ;
}
int length ( ) {
return this . length;
}
boolean link_is_empty ( ) {
return ( this . length == 0 ) ;
}
boolean link_add ( int data) {
lnode new_lnode = new lnode ( ) ;
new_lnode. setData ( data) ;
new_lnode. setNext ( head. getNext ( ) ) ;
head. setNext ( new_lnode) ;
this . length++ ;
return true ;
}
boolean scan_link ( ) {
if ( link_is_empty ( ) ) {
System . out. println ( "嗨害嗨,这是个空表!" ) ;
return false ;
}
lnode p = head. getNext ( ) ;
System . out. println ( "-------链表内物品------" ) ;
for ( int i= length ( ) ; i> 0 ; i-- ) {
System . out. print ( p. getData ( ) + " " ) ;
p = p. getNext ( ) ;
}
System . out. println ( " " ) ;
System . out. println ( "---------------------" ) ;
return true ;
}
int find ( int data) {
if ( link_is_empty ( ) ) {
System . out. println ( "空表,查个毛?" ) ;
System . exit ( 1 ) ;
}
int cache = 0 ;
lnode p = head. getNext ( ) ;
for ( int j= length ( ) ; j> 0 ; j-- ) {
if ( p. getData ( ) == data) {
cache = j;
}
p = p. getNext ( ) ;
}
if ( cache== 0 ) {
System . out. println ( "没有这个元素!" ) ;
System . exit ( 1 ) ;
}
return this . length- cache+ 1 ;
}
boolean del_find_link ( int data) {
int po = find ( data) - 1 ;
lnode r = head. getNext ( ) ;
lnode l = head;
for ( int i= po; i> 0 ; i-- ) {
l = r;
r = r. getNext ( ) ;
}
l. setNext ( r. getNext ( ) ) ;
this . length-- ;
return true ;
}
}
以下为运行结果。