リンクリストに要素を特定の位置に追加する方法は何ですか?

指定された位置に要素をリストに追加するには、次の手順に従います。

  1. 新しいノードを作成し、挿入する要素を新しいノードの値に代入します。
  2. リストを巡回し、挿入する前のノードを見つけます。リストを巡回するために、目的の位置の前のノードを見つけるまで、ポインタを使用できます。
  3. 新しいノードのnextポインタを、目標位置の前のノードのnextポインタが指すノードに向ける。
  4. 新しいノードが指すべき前のノードのnextポインタを新しいノードに向けます。

以下はサンプルコードの実装例です:

public class ListNode {
    int val;
    ListNode next;

    ListNode(int val) {
        this.val = val;
    }
}

public ListNode insert(ListNode head, int position, int value) {
    if (position < 0) {  // 位置小于0时,直接返回原链表
        return head;
    }

    ListNode newNode = new ListNode(value);

    if (position == 0) {  // 插入位置是链表头部
        newNode.next = head;
        head = newNode;
    } else {
        ListNode prev = head;
        int count = 0;

        while (count < position - 1 && prev != null) {  // 找到要插入位置的前一个节点
            prev = prev.next;
            count++;
        }

        if (prev != null) {  // 找到位置,将新节点插入
            newNode.next = prev.next;
            prev.next = newNode;
        }
    }

    return head;
}

これにより、リストの特定の位置に要素を挿入することができます。

bannerAds