按顺序插入节点(分析)
代码实现
public void addByOrder(HeroNode node
) {
HeroNode temp
= head
;
boolean flag
= false;
while (true) {
if (temp
.next
== null
) {
break;
}
if (temp
.next
.no
> node
.no
) {
break;
} else if (temp
.next
.no
== node
.no
) {
flag
= true;
break;
}
temp
= temp
.next
;
}
if (flag
) {
System
.out
.printf("准备插入的英雄编号%d已经存在,不能添加\n", node
.no
);
} else {
node
.next
= temp
.next
;
temp
.next
= node
;
}
}
修改需求及分析
需求:给出一个新的节点,将英雄人物的姓名和昵称修改,编号不变(根据编号来查找) 分析:将临时变量指向头节点的下一个节点,通过临时变量的编号和新节点的编号比较,如果相同就将名字和昵称修改掉
代码实现
public void update
(HeroNode node
) {
if (head
.next
== null
) {
System
.out
.println("链表为空~");
}
HeroNode temp
= head
.next
;
boolean flag
= false;
while (true) {
if (temp
== null
) {
break;
}
if (temp
.no
== node
.no
) {
flag
= true;
break;
}
temp
= temp
.next
;
}
if (flag
) {
temp
.name
= node
.name
;
temp
.nickname
= node
.nickname
;
} else {
System
.out
.printf("没有找到编号%d的节点,不能修改\n",node
.no
);
}
}
删除分析
代码实现
public void del(int no
) {
HeroNode temp
= head
;
boolean flag
= false;
while (true) {
if (temp
.next
== null
) {
break;
}
if (temp
.next
.no
== no
) {
flag
= true;
break;
}
temp
= temp
.next
;
}
if (flag
) {
temp
.next
= temp
.next
.next
;
} else {
System
.out
.printf("没有找到%d节点\n",no
);
}
}
测试
public class SingleLinkedListDemo {
public static void main(String
[] args
) {
HeroNode heroNode
= new HeroNode(1, "宋江", "及时雨");
HeroNode heroNode1
= new HeroNode(2, "卢俊义", "玉麒麟");
HeroNode heroNode2
= new HeroNode(3, "吴用", "智多星");
HeroNode heroNode3
= new HeroNode(4, "林冲", "豹子头");
HeroNode heroNode5
= new HeroNode(1, "宋江", "及时雨");
SingleLinkedList singleLinkedList
= new SingleLinkedList();
singleLinkedList
.addByOrder(heroNode2
);
singleLinkedList
.addByOrder(heroNode5
);
singleLinkedList
.addByOrder(heroNode1
);
singleLinkedList
.addByOrder(heroNode
);
singleLinkedList
.addByOrder(heroNode3
);
singleLinkedList
.list();
System
.out
.println("修改后的链表");
HeroNode newheroNode
= new HeroNode(2, "小卢", "玉麒麟~~");
singleLinkedList
.update(newheroNode
);
singleLinkedList
.list();
singleLinkedList
.del(1);
singleLinkedList
.del(4);
singleLinkedList
.del(2);
singleLinkedList
.del(3);
System
.out
.println("删除后的节点");
singleLinkedList
.list();
}
}