用带头的单链表来实现——水浒英雄排行榜的增删改查操作
public class singleLinkedListDemo {
public static void main ( String[ ] args) {
HeroNode hero01 = new HeroNode ( 1 , "宋江" , "及时雨" ) ;
HeroNode hero02 = new HeroNode ( 2 , "卢俊义" , "玉麒麟" ) ;
HeroNode hero03 = new HeroNode ( 3 , "吴用" , "智多星" ) ;
HeroNode hero04 = new HeroNode ( 4 , "林冲" , "豹子头" ) ;
LinkedList linkedList = new LinkedList ( ) ;
linkedList. add ( hero01) ;
linkedList. add ( hero02) ;
linkedList. add ( hero03) ;
linkedList. add ( hero04) ;
linkedList. list ( ) ;
HeroNode newHero= new HeroNode ( 3 , "孙二娘" , "母夜叉" ) ;
linkedList. update ( newHero) ;
linkedList. list ( ) ;
}
}
class LinkedList {
HeroNode Head= new HeroNode ( 0 , " " , " " ) ;
public void add ( HeroNode heroNode) {
HeroNode temp= Head;
while ( true ) {
if ( temp. next== null) {
break ;
}
temp= temp. next;
}
temp. next= heroNode;
}
public HeroNode update ( HeroNode newheroNode) {
if ( Head. next== null) {
System. out. println ( "单链表为空,无节点可以修改" ) ;
}
HeroNode temp= Head;
boolean flag= false ;
while ( true ) {
if ( temp. next. no== newheroNode. no) {
flag= true ;
break ;
}
temp= temp. next;
}
if ( flag== true ) {
temp. next. name= newheroNode. name;
temp. next. nickname= newheroNode. nickname;
} else {
System. out. printf ( "找不到节点为%d对应的HeroNode" ) ;
System. out. println ( ) ;
}
return temp. next;
}
public void delete ( HeroNode deleteNode) {
if ( Head. next== null) {
System. out. println ( "单链表为空,无法删除任何节点" ) ;
return ;
}
HeroNode temp= Head;
boolean flag= false ;
while ( true ) {
if ( temp. next. no== deleteNode. no) {
flag= true ;
break ;
}
temp= temp. next;
}
if ( flag= true ) {
temp. next= temp. next. next;
} else {
System. out. printf ( "找不到节点为%d对应的HeroNode" ) ;
System. out. println ( ) ;
}
}
public void list ( ) {
System. out. println ( "当前单链表为:" ) ;
if ( Head. next== null) {
System. out. println ( "该单链表为空,无节点以及数据可以显示" ) ;
return ;
}
HeroNode temp= Head;
while ( true ) {
if ( temp== null) {
break ;
}
System. out. println ( temp) ;
temp= temp. next;
}
}
}
class HeroNode {
public int no;
public String name;
public String nickname;
public HeroNode next;
public HeroNode ( int no, String name, String nickname) {
this . no = no;
this . name= name;
this . nickname= nickname;
}
@Override
public String toString ( ) {
return "HeroNode[no=" + no+ ",name=" + name+ ",nickname=" + nickname+ "]" ;
}
}
当前单链表为:
HeroNode[ no= 0 , name= , nickname= ]
HeroNode[ no= 1 , name= 宋江, nickname= 及时雨]
HeroNode[ no= 2 , name= 卢俊义, nickname= 玉麒麟]
HeroNode[ no= 3 , name= 吴用, nickname= 智多星]
HeroNode[ no= 4 , name= 林冲, nickname= 豹子头]