【问题标题】:Create Method Insert Before Linked List [closed]在链接列表之前创建方法插入[关闭]
【发布时间】:2021-07-17 08:06:24
【问题描述】:

我已经创建了一个 insert after 方法,现在我必须通过修改我的方法来创建一个 insert before 方法。我需要更改什么才能成为 insert before 方法?

public void insertAfter(int key, int input){
    Node ndInput = new Node(input, null);
    Node temp = head;
    do{
        if(temp.data == key){
            ndInput.next = temp.next;
            temp.next = ndInput;
            if(ndInput.next == null) tail = ndInput;
            break;
        }
        temp = temp.next;
    }while(temp != null);
}

【问题讨论】:

    标签: java linked-list insert singly-linked-list


    【解决方案1】:

    首先,当列表为空时,您当前的代码将失败。另外,最好:

    • 仅在找到密钥时创建节点
    • 利用Node构造函数的第二个参数立即初始化next属性。

    所以:

    public void insertAfter(int key, int input) {
        Node temp = head;
        while (temp != null) { // Loop condition should be here, to deal with empty list
            if (temp.data == key) {
                temp.next = new Node(input, temp.next); // Create here & use 2nd arg
                if (temp == tail) tail = temp.next;
                break;
            }
            temp = temp.next;
        }
    }
    

    要创建insertBefore,请在temp.next 中而不是temp 中查找密钥。由于您仍然需要处理空列表的情况,因此可以更好地成为单独的条件。

    当插入的节点成为第一个时,您还需要调整头部。另一方面,不再需要检查插入的节点是否成为尾部,因为这当然是不可能的:

    public void insertBefore(int key, int input){
        if (head == null) return; // Add as separate check
        if (head.data == key) { // Case where head needs to refer to new node
            head = new Node(input, head);
            return;
        }
        Node temp = head;
        while (temp.next != null) { // Check whether there is a next node
            if (temp.next.data == key) { // Check data in next node
                temp.next = new Node(input, temp.next);
                break;
            }
            temp = temp.next;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      相关资源
      最近更新 更多