java练习2

bandao
2021-11-28 / 0 评论 / 62 阅读 / 正在检测是否收录...

看不懂的链表

public class NodeTest {
    public static void main(String[] args) {
        Node node1 = new Node(1, "李白1", "刺客1");
        Node node2 = new Node(2, "李白2", "刺客2");
        Node node3 = new Node(3, "李白3", "刺客3");
        Node node4 = new Node(4, "李白4", "刺客4");
        Node node5 = new Node(5, "李白5", "刺客5");

        Node node6 = new Node(5, "李白", "刺客5");


        SingleLinkedList singleLinkedList = new SingleLinkedList();
        singleLinkedList.add(node1);
        singleLinkedList.add(node2);

        singleLinkedList.add(node4);
        singleLinkedList.add(node5);
        singleLinkedList.add2(node3);
        singleLinkedList.delete(3);
        singleLinkedList.delete(6);
        singleLinkedList.change(node6);
        singleLinkedList.change(1, "李白6", "刺客6");


        singleLinkedList.show();
    }
}

class SingleLinkedList{
    private Node head=new Node(0, "", "");
    public void add(Node node){
        Node temp = head;
        while (true){
            if (temp.next == null){
                break;
            }
            temp = temp.next;
        }
        temp.next = node;
    }

    public void add2(Node node){
        Node temp = head;
        boolean flag = false;
        while (true){
            if (temp.next == null){
                break;
            }
            if (temp.next.no > node.no){
                break;
            }else if (temp.next.no == node.no){
                flag = true;
                break;
            }
            temp = temp.next;
        }
        if (flag){
            System.out.println("编号已经存在,不能添加");
        }else {
            node.next = temp.next;
            temp.next = node;
        }
    }

    public void delete(int no){
        Node temp = head;
        boolean flag = false;
        while (true){
            if (temp.next == null){
                break;
            }
            if (temp.next.no == no){
                flag = true;
                break;
            }
            temp = temp.next;
        }
        if (flag){
            temp.next = temp.next.next;
        }else {
            System.out.println("不存在");
        }
    }
    public void change(int no, String name, String type){
        if(head.next == null){
            System.out.println("链表为空");
            return;
        }
        Node temp = head.next;
        boolean flag = false;
        while (true){
            if(temp == null){
                System.out.println("没有找到数据");
                break;
            }
            if (temp.no == no){
                flag = true;
                break;
            }
        }
        if (flag){
            temp.name = name;
            temp.type = type;
        }
    }
    public void change(Node node){
        Node temp = head;
        //boolean flag = false;
        delete(node.no);
        add2(node);
    }

    public void show(){
        if (head.next == null){
            System.out.println("该链表为空");
            return;
        }
        Node temp = head.next;
        while (true){
            if (temp == null){
                break;
            }
            System.out.println(temp);
            temp = temp.next;
        }
    }
}

class Node{
    public int no;
    public String name;
    public String type;
    public Node next;

    public Node(int no, String name, String type){
        this.no = no;
        this.name = name;
        this.type = type;
    }

    @Override
    public String toString() {
        return "Node{" +
                "no=" + no +
                ", name='" + name + '\'' +
                ", type='" + type + '\'' +
                '}';
    }

}
0

评论 (0)

取消