单向链表
public class LinkedListTest {
public static void main(String[] args) {
LinkedList ll = new LinkedList();
HeroNode hero1 = new HeroNode(1, "亚瑟", "坦克");
HeroNode hero2 = new HeroNode(2, "后裔", "射手");
HeroNode hero3 = new HeroNode(3, "小乔", "法师");
HeroNode hero4 = new HeroNode(4, "韩信", "刺客");
ll.list();
ll.addByNo(hero2);
ll.addByNo(hero4);
ll.addByNo(hero1);
ll.addByNo(hero3);
ll.addByNo(hero2);
ll.list();
System.out.println("-----------删----------------");
ll.del(1);
ll.list();
System.out.println("-----------改----------------");
HeroNode hero5 = new HeroNode(5, "东皇太一", "坦克");
ll.upData(hero5);
ll.list();
System.out.println("-----------改----------------");
HeroNode hero6 = new HeroNode(5, "东皇", "法坦");
ll.upData(hero6);
ll.list();
System.out.println("-----------查----------------");
ll.find(3);
System.out.println("---------反转----------------");
ll.reserve();
ll.list();
}
}
class LinkedList{
HeroNode head = new HeroNode(0, "", "");
public void add(HeroNode hero){
HeroNode temp = head;
while(true){
if(temp.next == null){
temp.next = hero;
break;
}
temp = temp.next;
}
}
public void list(){
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;
}
}
public void addByNo(HeroNode hero){
HeroNode temp = head;
boolean flag = false;
while(true){
if(temp.next == null){
flag = true;
break;
}
if(temp.no == hero.no){
System.out.println(hero.no + "编号重复,不能添加");
break;
}else if(temp.next.no > hero.no){
flag = true;
break;
}
temp = temp.next;
}
if(flag){
hero.next = temp.next;
temp.next = hero;
}
}
public void del(int no){
if(head.next == null){
System.out.println("链表为空");
return;
}
HeroNode temp = head;
while(true){
if(temp.next.no == no){
temp.next = temp.next.next;
break;
}
temp = temp.next;
}
}
public void upData(HeroNode hero){
HeroNode temp = head;
while(true){
if(temp.next == null){
addByNo(hero);
break;
}
if(temp.next.no == hero.no){
temp.next.name = hero.name;
temp.next.nickname = hero.nickname;
break;
}
temp = temp.next;
}
}
public void find(int no){
HeroNode temp = head;
while(true){
if(temp.next == null){
System.out.println("找不到该节点信息");
break;
}else if(temp.next.no == no){
System.out.println(no + "的信息是:" + temp.next);
break;
}
temp = temp.next;
}
}
public void reserve(){
if(head.next == null || head.next.next == null){
return;
}
HeroNode resHead = new HeroNode(0,"", "");
HeroNode next = null;
HeroNode cur = head.next;
while(cur != null){
next = cur.next;
cur.next = resHead.next;
resHead.next = cur;
cur = next;
}
head.next = resHead.next;
}
}
class HeroNode{
int no;
String name;
String nickname;
HeroNode next;
public HeroNode(int no, String name, String nickname){
this.no = no;
this.name = name;
this.nickname = nickname;
}
@Override
public String toString() {
return "HeroNode [no=" + no + ", name=" + name + ", nickname=" + nickname + "]";
}
}