4.1介绍
4.2链表的应用实例
代码实现
package LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
// HeroNode h1 = new HeroNode(1, "h1", "nh1");
// HeroNode h2 = new HeroNode(2, "h2", "nh2");
// HeroNode h3 = new HeroNode(3, "h3", "nh3");
// HeroNode h4 = new HeroNode(4, "h4", "nh4");
HeroNode h1 = new HeroNode(1, "h1", "nh1");
HeroNode h2 = new HeroNode(2, "h2", "nh2");
HeroNode h4 = new HeroNode(4, "h4", "nh4");
HeroNode h3 = new HeroNode(3, "h3", "nh3");
HeroNodeLinkedList hList = new HeroNodeLinkedList();
hList.addByOrder(h1);
hList.addByOrder(h2);
hList.addByOrder(h3);
hList.addByOrder(h4);
hList.list();
}
}
class HeroNode {
public int no;
public String name;
public String nickname;
public HeroNode next;
public HeroNode(int hno, String hName, String hNickname) {
this.no = hno;
this.name = hName;
this.nickname = hNickname;
}
@Override
public String toString() {
return "HeroNode{" +
"no=" + no +
", name='" + name + ''' +
", nickname='" + nickname + ''' +
'}';
}
}
class HeroNodeLinkedList {
private HeroNode headNode = new HeroNode(0, "", "");
public void add(HeroNode heroNode) {
HeroNode temp = headNode;
while (true) {
if (temp.next == null) {
break;
}
temp = temp.next;
}
temp.next = heroNode;
}
public void addByOrder(HeroNode heroNode) {
HeroNode temp = headNode;
System.out.println(temp == headNode);
boolean flag = false;
while (true) {
if (temp.next == null) {
break;
}
if (temp.next.no > heroNode.no) {
break;
} else if (temp.next.no == heroNode.no) {
flag = false;
break;
}
temp = temp.next;
}
if (flag) {
System.out.printf("插入的英雄%d已经存在", heroNode.no);
} else {
heroNode.next = temp.next;
temp.next = heroNode;
}
}
public void list() {
if (headNode.next == null) {
return;
}
HeroNode temp = headNode.next;
while (true) {
if (temp == null) {
break;
}
System.out.println(temp.toString());
temp = temp.next;
}
}
public void update(HeroNode newHeroNode) {
if(headNode.next == null){
System.out.println("链表为空");
return;
}
HeroNode temp = headNode.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.printf("找不到编号为%d的英雄,无法更新", newHeroNode.no);
}
}
public void del(int n) {
if(headNode.next == null) {
return;
}
HeroNode temp = headNode.next;
boolean flag = false;
while (true) {
if(temp == null) {
break;
}
if(temp.next.no == n) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
temp.next = temp.next.next;
}else {
System.out.println("元素未找到");
}
}
}
\