数据结构,搞不懂一个问题

img

img

img

img


自学的java遇到个问题。以上的四个是代码的截图连接,还差insert()。输出的应是有序的。

应是这样

img


public void insert(long key){
        Link node = new Link(key);
        //若为空直接插入
        if(first == null){
            first = node;
        }else{
            Link current = first;
            Link pre = first;
            //找到比key大的节点current
            while (current != null && current.dData < key){
                pre = current;
                current = current.next;
            }
            //插入节点
            // current > node 所以 node.net = current
            node.next = current;
            // pre < node 所以 pre.next = node
            // 特殊情况,当是最小的时候,需要改下first节点
            if(current == first){
                first = node;
            }else{
                pre.next = node;
            }
        }
    }

你想问什么呢?不会写insert吗?

那你的问题 是什么?

这里有一段代码,你可以参考一下

//按照id的大小添加数据
    public void addBySequence(NodeDemo1 node) {
        NodeDemo1 temp = head;
        if(temp.next == null) {
            temp.next = node;
        } else {
            while (temp.next != null) {
                if (temp.id == node.id) {
                    System.out.println("添加错误,序号已经存在");
                } else if (temp.id < node.id && node.id < temp.next.id) {
                        node.next = temp.next;
                        temp.next = node;
                        temp = temp.next;
                        return;
                }
                temp = temp.next;
            }
            if (temp.id == node.id) {
                System.out.println("添加错误,序号已经存在");
            } else {
                temp.next = node;
            }
        }
    }

需要补全insert()的代码吗?

public void insert(long key) {
        Link temp = first;
        first = new Link(key);
        first.next = temp;
    }