单链表的增删改代码实现

定义节点:

class Node{
    int value;
    Node next;

    public Node(int value ){
        this.value = value;
    }

    @Override
    public String toString() {
        return "Node{" +
                "value=" + value
                +
                '}';
    }
}

定义链表及其操作:

class SingleLinkedList{
    //定义头结点
    private Node head = new Node(0);

    //尾插法
    public void add_Node(Node newNode){
        Node temp = head;
        while (temp.next !=null){
            temp = temp.next;
        }
        temp.next = newNode;
    }

    public Node getHead() {
        return head;
    }

    //头插法,增加节点
    public void addFirst(Node newNode){
        if (head.next == null){
            head.next = newNode;
        }else {
            newNode.next = head.next;
            head.next = newNode;
        }
    }
    //删除节点
    public void deleteNode(Node node){
        Node temp = head;
        if (temp.next == null){
            System.out.println("链表为空");
            return;
        }
        while (temp !=null){
            if (temp.next == node){
                temp.next = temp.next.next;
                break;
            }
            temp = temp.next;
        }
    }
    //获取链表长度
    public int getLength(Node head){
        Node temp = head;
        int length = 0;
        if (head.next == null){
            System.out.println("链表为空");
        }else {
            while (temp.next != null){
                length++;
                temp = temp.next;
            }
        }
        return length;
    }

    //打印链表
    public void printLinkedList(){
        Node temp = head;
        if (temp.next == null){
            System.out.println("链表为空");
        }
        while (temp.next != null){
            temp = temp.next;
            System.out.println(temp);
        }
    }
}
posted @ 2020-07-19 15:43  硬盘红了  阅读(167)  评论(0编辑  收藏  举报