java链表添加头节点方法没有用

链表初始化后,再用定义的添加头节点方法没有用。

// 一个类链表里包含类节点

class MyNodeLsit {
    class Node {
        int val;
        Node next;
        Node (int val) {
            this.val = val;
        }
    }
    private Node head;
    private int size;

    public MyNodeLsit () {
        this.head = null;
        this.size = 0;
    }
    // 获得索引的值
    public int getId (int index) {
        if(index >= this.size) {
            return -1;
        }
        Node cur = head;
        while( index-- > 0) {
            cur = cur.next;
        }
        return cur.val;
    }
    // 在第一个添加节点
    public void addPreData (int val) {
        size++;
        Node newHead = new Node(val);
        if (head != null) {
            newHead.next = head;
        }
        head = newHead;
    }

    // 在最后一个添加节点
    public void addLastData (int val) {
        this.size ++;
        Node newNode = new Node(val);
        Node cur = this.head;
        if(cur !=null) {
            while(cur.next != null) {
                cur = cur.next;
            }
            cur.next = newNode;
        }
        else {
            this.head = newNode; 
        }
    }
    // 删除指定的节点
    public void deleteAtindex(int index) {
        if(index >= this.size) {
            return;
        }
        Node cur = this.head;
        while(--index > 0) {
            cur = cur.next;
        }
        // 遍历到要删除的上一个节点处
        cur.next = cur.next.next;
        this.size--;
    }
    // 在指定位置添加指定值
    public void addAtIndex(int index, int val) {
        boolean b = index < 0;
        if (index >= this.size || b) {
            return;
        }
        else if(index == this.size-1) {
            this.addLastData(val);
        }
        else if(index == 0) {
            this.addPreData(val);
        }
        else {
            Node cur = this.head;
            Node newNode = new Node(val);
            while(--index > 0) {
                cur = cur.next;
            }
            newNode.next = cur.next;
            cur.next = newNode;
            this.size++;
        }

    }

链表初始化用到了添加头结点的方式,再在主函数里添加头结点,不知道为什么添加不了。
都是初始化时候的值

图片说明

图片说明

希望能有大佬帮下忙


泛舟湖上清波郎朗
浏览 641回答 2
2回答

holdtom

原来是print(head)里的head节点是初始化的head节点,并不是添加后的新head节点
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java