1. 程式人生 > 其它 >Java 實現帶頭節點的單鏈表

Java 實現帶頭節點的單鏈表

技術標籤:java

public class SingleLinkedListDemo {
    public static void main(String[] args) {
        HeroNode node1 = new HeroNode(1,"test1","test11");
        HeroNode node2 = new HeroNode(2,"test2","test22");
        HeroNode node3 = new HeroNode(3,"test3"
,"test33"); HeroNode node4 = new HeroNode(4,"test4","test44"); HeroNode node5 = new HeroNode(5,"test5","test55"); SingleLinkedList singleLinkedList = new SingleLinkedList(); // singleLinkedList.add(node1); // singleLinkedList.add(node2);
// singleLinkedList.add(node3); // singleLinkedList.add(node5); // singleLinkedList.list(); singleLinkedList.addByOrder(node1); singleLinkedList.addByOrder(node3); singleLinkedList.addByOrder(node2); singleLinkedList.addByOrder(node5); singleLinkedList.
addByOrder(node4); singleLinkedList.list(); } } //建立SingleLinkedList管理英雄 class SingleLinkedList{ //初始化一個頭節點,頭節點不要動,不存放具體資料 private HeroNode head = new HeroNode(0,"",""); //不帶排序 //初始化頭節點,只要是temp.next為空就插入 public void add(HeroNode heroNode){ HeroNode temp = head; while (true){ if(temp.next == null){ break; } //temp.next不為空,移到下一位 temp = temp.next; } temp.next = heroNode; } public void addByOrder(HeroNode heroNode){ HeroNode temp = head; boolean flag = false; while (true){ if(temp.next == null){ break; } //判斷temp.next元素的編號是否大於要插入資料heroNode的no 如果大於說明插入位置為temp.next if(temp.next.no > heroNode.no){ break; }else if (temp.next.no == heroNode.no){ flag = true; } temp = temp.next; } //flag為true說明已存在此節點 if(flag){ System.out.println("已經存在此節點,不能重複加入!"); }else { /* 先把temp.next賦值給heroNode.next 分兩種情況 如果temp.next == null 則預設插入到最後。 如果temp.next.no > heroNode.no 說明待插入值的編號小於下一個值的編號 先把下一個值指向待插入值的.next 再把temp.next指向待插入值 */ heroNode.next = temp.next; temp.next = heroNode; } } 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; } } } //每個HeroNode都是一個節點 class HeroNode{ public int no; public String name; public String nickname; public 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 + '\''+"}"; } }