目录
使用带head头的单向链表实现 –水浒英雄排行榜管理。完成对英雄人物的增删改查操作。
1. 添加操作
1.1无序添加
在添加英雄时,直接添加到链表的尾部
思路分析:
示例代码:
public void addHeroMsg(HeroNode node) {
HeroNode temp = head;
while (Optional.ofNullable(temp.getNext()).isPresent()) {
temp = temp.getNext();
}
temp.setNext(node);
}
1.2通过编号有序添加
根据排名将英雄插入到指定位置(如果有这个排名,则添加失败,并给出提示)
思路分析:
示例代码
public void addHeroMsgByOrder(HeroNode node) {
HeroNode temp = head;
boolean flag = false;
while (true) {
if (Optional.ofNullable(temp.getNext()).isEmpty()) {
break;
}
// 通过编号排序
if (temp.getNext().getNo() > node.getNo()) {
break;
}
// 判断编号是否存在
if (temp.getNext().getNo() == node.getNo()) {
flag = true;
break;
}
temp = temp.getNext();
}
if (flag){
System.out.println("编号" + node.getNo() + "已存在, 不可重复加入哦~");
return;
}
node.setNext(temp.getNext());
temp.setNext(node);
}
2.删除操作
思路分析示意图
示例代码
public void deleteHeroMsg(int nodeId) {
if (Optional.ofNullable(head.getNext()).isEmpty()) {
System.out.println("链表中占无数据哦~");
return;
}
HeroNode temp = head;
boolean flag = false;
while (true) {
if (Optional.ofNullable(temp.getNext()).isEmpty()) {
flag = true;
break;
}
if (temp.getNext().getNo() == nodeId) {
break;
}
temp = temp.getNext();
}
if (flag) {
System.out.println("编号为" + nodeId + "的信息不存在!!!");
return;
}
temp.setNext(temp.getNext().getNext());
}
3.修改操作
思路:1)先找到该节点,通过遍历 2)temp.setName(node.getName); ...
示例代码:
public void updateHeroMsg(HeroNode node) {
if (Optional.ofNullable(head.getNext()).isEmpty()) {
System.out.println("链表中占无数据哦~");
return;
}
HeroNode temp = head;
boolean flag = false;
while (true) {
if (Optional.ofNullable(temp.getNext()).isEmpty()) {
flag = true;
break;
}
if (temp.getNext().getNo() == node.getNo()) {
break;
}
temp = temp.getNext();
}
if (flag) {
System.out.println("编号为" + node.getNo() + "的信息不存在!!!");
return;
}
temp.getNext().setName(node.getName());
temp.getNext().setNickname(node.getNickname());
}
4. 查询操作
示例代码:
public void showHeroMsg() {
HeroNode next = head.getNext();
if (Optional.ofNullable(next).isEmpty()) {
throw new RuntimeException("链表中的元素为空哦~");
}
while (Optional.ofNullable(next).isPresent()) {
System.out.println(next);
next = next.getNext();
}
}