1 单链表
1.1 链表创建
1.1.1 HeroNode
class HeroNode {
public int id;
public String name;
public HeroNode next;
public HeroNode(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "HeroNode{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
1.1.2 SingleLinkedLiseDemo
class SingleLinkedLiseDemo {
private HeroNode head = new HeroNode(0, "");
public HeroNode getHead() {
return head;
}
public void addHeroNode(HeroNode heroNode) {
HeroNode temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = heroNode;
}
public void showLinkedList(HeroNode head) {
if (head.next == null) {
System.out.println("链表显示为空~~~");
return;
}
HeroNode temp = head.next;
while (temp != null) {
System.out.println(temp);
temp = temp.next;
}
}
public void updateLinkedList(HeroNode heroNode) {
if (head.next == null) {
System.out.println("更新链表为空~~~");
return;
}
HeroNode temp = head.next;
boolean flag = false;
while (true) {
if (temp.id == heroNode.id) {
flag = true;
break;
}
if (temp.next == null) {
System.out.println("防止空指针异常~~~");
break;
}
temp = temp.next;
}
if (flag) {
temp.name = heroNode.name;
} else {
System.out.println("没有找到ID:" + heroNode.id);
}
}
public void delLinkedList(int id) {
HeroNode temp = head;
boolean flag = false;
while (true) {
if (temp.next == null) {
break;
}
if (temp.next.id == id) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
temp.next = temp.next.next;
} else {
System.out.println("没有找到ID:" + id);
}
}
public void addReOrder(HeroNode heroNode) {
HeroNode temp = head;
boolean flag = false;
while (true) {
if (temp.next == null) {
flag = true;
break;
} else if (temp.id > heroNode.id) {
flag = true;
break;
} else if (temp.id == heroNode.id) {
break;
}
temp = temp.next;
}
if (flag) {
heroNode.next = temp.next;
temp.next = heroNode;
} else {
System.out.println("ID: " + heroNode.id + ",重复~~~");
}
}
}
1.1.3 SingleLinkedList
package com.wmy.jc.linkedlist.example02;
public class SingleLinkedList {
public static void main(String[] args) {
SingleLinkedLiseDemo singleLinkedLiseDemo = new SingleLinkedLiseDemo();
HeroNode heroNode1 = new HeroNode(1, "刘备");
HeroNode heroNode2 = new HeroNode(2, "张飞");
HeroNode heroNode3 = new HeroNode(3, "关羽");
HeroNode heroNode4 = new HeroNode(4, "吕布");
HeroNode heroNode5 = new HeroNode(5, "貂蝉");
singleLinkedLiseDemo.addReOrder(heroNode5);
singleLinkedLiseDemo.addReOrder(heroNode1);
singleLinkedLiseDemo.addReOrder(heroNode3);
singleLinkedLiseDemo.addReOrder(heroNode2);
singleLinkedLiseDemo.addReOrder(heroNode4);
System.out.println("修改前的链表~~~");
singleLinkedLiseDemo.showLinkedList(singleLinkedLiseDemo.getHead());
singleLinkedLiseDemo.updateLinkedList(new HeroNode(5, "XXX"));
System.out.println("修改后的链表~~~");
singleLinkedLiseDemo.showLinkedList(singleLinkedLiseDemo.getHead());
singleLinkedLiseDemo.delLinkedList(5);
System.out.println("删除后的链表~~~");
singleLinkedLiseDemo.showLinkedList(singleLinkedLiseDemo.getHead());
}
}