一、双向链表定义
class HeroNode2 {
public int no;
public String name;
public String nickname;
public HeroNode2 next;
public HeroNode2 pre;
public HeroNode2 ( int no, String name, String nickname) {
this . no = no;
this . name = name;
this . nickname = nickname;
}
@Override
public String toString ( ) {
return "HeroNode2{" +
"no=" + no +
", name='" + name + '\'' +
", nickname='" + nickname + '\'' +
", next=" + next +
'}' ;
}
}
二、添加节点
public void add ( HeroNode2 heroNode) {
HeroNode2 temp = head;
while ( true ) {
if ( temp. next == null) {
break ;
}
temp = temp. next;
}
temp. next = heroNode;
heroNode. pre = temp;
}
三、按照顺序显示链表
public void list ( ) {
if ( head. next == null) {
System. out. println ( "null" ) ;
return ;
}
HeroNode2 temp = head. next;
while ( true ) {
if ( temp == null) {
break ;
}
System. out. println ( temp) ;
temp = temp. next;
}
}
四、编辑节点
public void update ( HeroNode2 newHeroNode) {
if ( head. next == null) {
System. out. println ( "LinkedList is null~~" ) ;
return ;
}
HeroNode2 temp = head. next;
boolean flag = false ;
while ( true ) {
if ( temp == null) {
break ;
}
if ( temp. no == newHeroNode. no) {
flag = true ;
break ;
}
temp = temp. next;
}
if ( flag) {
temp. name = newHeroNode. name;
temp. nickname = newHeroNode. nickname;
} else {
System. out. println ( "no find " + newHeroNode. no) ;
}
}
五、删除节点
public void del ( int no) {
if ( head. next == null) {
System. out. println ( "null" ) ;
return ;
}
HeroNode2 temp = head. next;
boolean flag = false ;
while ( true ) {
if ( temp == null) {
break ;
}
if ( temp. no == no) {
flag = true ;
break ;
}
temp = temp. next;
}
if ( flag) {
temp. pre. next = temp. next;
if ( temp. next != null) {
temp. next. pre = temp. pre;
}
} else {
System. out. println ( "bu cun zai " + no) ;
}
}
六、测试
public static void main ( String[ ] args) {
HeroNode2 heroNode1 = new HeroNode2 ( 1 , "1" , "1" ) ;
HeroNode2 heroNode2 = new HeroNode2 ( 2 , "2" , "2" ) ;
HeroNode2 heroNode3 = new HeroNode2 ( 3 , "3" , "3" ) ;
HeroNode2 heroNode4 = new HeroNode2 ( 4 , "4" , "4" ) ;
DoubleLinkedList doubleLinkedList = new DoubleLinkedList ( ) ;
doubleLinkedList. add ( heroNode1) ;
doubleLinkedList. add ( heroNode2) ;
doubleLinkedList. add ( heroNode3) ;
doubleLinkedList. add ( heroNode4) ;
doubleLinkedList. list ( ) ;
HeroNode2 newHeroNode2 = new HeroNode2 ( 4 , "44" , "44" ) ;
doubleLinkedList. update ( newHeroNode2) ;
System. out. println ( ) ;
doubleLinkedList. list ( ) ;
doubleLinkedList. del ( 1 ) ;
System. out. println ( ) ;
doubleLinkedList. list ( ) ;
}