1.節點類
package com.mytest.controller;
import java.io.Serializable;
import java.util.Objects;
public class HeroNode implements Serializable {
private static final long serialVersionUID = -670663634573207331L;
private Integer num;
private String name;
private String nickName;
private HeroNode nextNode;
public HeroNode() {
}
public HeroNode(Integer num, String name, String nickName) {
this.num = num;
this.name = name;
this.nickName = nickName;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
HeroNode heroNode = (HeroNode) o;
return Objects.equals(num, heroNode.num) &&
Objects.equals(name, heroNode.name) &&
Objects.equals(nickName, heroNode.nickName) &&
Objects.equals(nextNode, heroNode.nextNode);
}
@Override
public int hashCode() {
return Objects.hash(num, name, nickName, nextNode);
}
@Override
public String toString() {
return "HeroNode{" +
"num=" + num +
", name='" + name + '\'' +
", nickName='" + nickName +
'}';
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public HeroNode getNextNode() {
return nextNode;
}
public void setNextNode(HeroNode nextNode) {
this.nextNode = nextNode;
}
}
2. 單鏈表類
package com.mytest.controller;
public class SingleLinkList {
private HeroNode headNode = new HeroNode(0,"","");
public void addNode(HeroNode node){
HeroNode temp = headNode;
while (true){
if (temp.getNextNode()==null){
break;
}
temp = temp.getNextNode();
}
temp.setNextNode(node);
}
public void list(){
if (headNode.getNextNode()==null){
System.out.println("鏈表爲空");
return;
}
HeroNode flag = headNode;
while (true){
if (flag.getNextNode()!=null){
System.out.println(flag.getNextNode());
flag = flag.getNextNode();
}else{
break;
}
}
}
public String addNodeOrder(HeroNode heroNode){
HeroNode temp = headNode;
while (true){
if (temp.getNextNode()==null){
temp.setNextNode(heroNode);
return "添加成功";
}else {
if (heroNode.getNum()==temp.getNextNode().getNum()){
return "數據重複,添加失敗";
}else if (heroNode.getNum()<temp.getNextNode().getNum()){
heroNode.setNextNode(temp.getNextNode());
temp.setNextNode(heroNode);
return "添加成功";
}
temp = temp.getNextNode();
}
}
}
public String updateNode(HeroNode heroNode){
HeroNode temp = headNode;
while (true){
if (temp.getNextNode()==null){
return "修改失敗";
}
while (true){
if (temp.getNextNode()==null){
break;
}
if (temp.getNextNode().getNum()==heroNode.getNum()){
temp.getNextNode().setName(heroNode.getName());
temp.getNextNode().setNickName(heroNode.getNickName());
return "修改成功";
}
temp = temp.getNextNode();
}
}
}
public String deleteNode(HeroNode heroNode){
HeroNode temp = headNode;
while (true){
if (temp.getNextNode()==null){
return "失敗";
}
while (true){
if (temp.getNextNode()==null){
break;
}
if (temp.getNextNode().getNum()==heroNode.getNum()){
if(temp.getNextNode().getNextNode()!=null){
temp.setNextNode(temp.getNextNode().getNextNode());
return "成功";
}else{
temp.setNextNode(null);
return "成功";
}
}
temp = temp.getNextNode();
}
}
}
}
3.測試類
package com.mytest.controller;
public class Demo03 {
public static void main(String[] args) {
HeroNode heroNode1 = new HeroNode(1,"松江1","及時雨");
HeroNode heroNode2 = new HeroNode(5,"松江5","及時雨");
HeroNode heroNode3 = new HeroNode(6,"松江6","及時雨");
HeroNode heroNode4 = new HeroNode(6,"松江6","及時雨");
HeroNode heroNode5 = new HeroNode(3,"松江3","及時雨");
SingleLinkList singleLinkList = new SingleLinkList();
/*
//1.在末尾追加節點
singleLinkList.addNode(heroNode1);
singleLinkList.addNode(heroNode2);
singleLinkList.addNode(heroNode3);
singleLinkList.addNode(heroNode4);
singleLinkList.addNode(heroNode5);*/
// 按順序添加節點
String s1 = singleLinkList.addNodeOrder(heroNode1);
System.out.println(s1);
String s2 = singleLinkList.addNodeOrder(heroNode2);
System.out.println(s2);
String s3 = singleLinkList.addNodeOrder(heroNode3);
System.out.println(s3);
String s4 = singleLinkList.addNodeOrder(heroNode4);
System.out.println(s4);
String s5 = singleLinkList.addNodeOrder(heroNode5);
System.out.println(s5);
singleLinkList.list();
// 修改節點
HeroNode heroNode6 = new HeroNode(1,"EZ","伊澤");
String s = singleLinkList.updateNode(heroNode6);
System.out.println(s);
singleLinkList.list();
// 刪除節點
HeroNode heroNode7 = new HeroNode(5,"","");
String s7 = singleLinkList.deleteNode(heroNode7);
System.out.println(s7);
singleLinkList.list();
}
}