单链表的增删改查
/**
* 单链表增删改查
*/
class LinkedList {
private HeroNode head = new HeroNode();
/**
* 插入节点:第一种,直接放到链表最后,遍历到链表最后,next 指向新增节点即可
* @param heroNode
*/
public void add(HeroNode heroNode) {
HeroNode temp = head;
while (true) {
if (temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = heroNode;
}
/**
* 遍历单链表
*/
public void showLinkedList() {
if (head.next == null) {
System.out.println("链表空,无法遍历");
return;
}
HeroNode temp = head.next;
while (true) {
if (temp == null) {
break;
}
System.out.println(temp);
temp = temp.next;
}
}
/**
* 删除节点:删除节点要注意,单链表节点不能自我删除,要找到待删除节点的上一个节点
* @param heroNode
*/
public void delNode(HeroNode heroNode) {
HeroNode temp = head;
Boolean hasNode = false;
while (true) {
if (temp.next == null) {
break;
}
if (temp.next.no == heroNode.no) {
hasNode = true;
break;
}
temp = temp.next;
}
if (hasNode) {
temp.next = temp.next.next;
} else {
System.out.println("无该节点");
}
}
/**
* 修改节点
* @param heroNode
*/
public void updateNode(HeroNode heroNode) {
HeroNode temp = head;
Boolean hasNode = false;
while (true) {
if (temp == null) {
break;
}
if (temp.no == heroNode.no) {
temp.name = heroNode.name;
hasNode = true;
break;
}
temp = temp.next;
}
if (hasNode) {
System.out.println("修改成功");
}
}
}
/**
* 单链表节点
*/
class HeroNode {
public int no;
public String name;
public HeroNode next;
public HeroNode() {
}
public HeroNode(int no, String name) {
this.no = no;
this.name = name;
}
@Override
public String toString() {
return "HeroNode{" +
"no=" + no +
", name='" + name + '\'' +
'}';
}
}