リンクリストに要素を特定の位置に追加する方法は何ですか?
指定された位置に要素をリストに追加するには、次の手順に従います。
- 新しいノードを作成し、挿入する要素を新しいノードの値に代入します。
- リストを巡回し、挿入する前のノードを見つけます。リストを巡回するために、目的の位置の前のノードを見つけるまで、ポインタを使用できます。
- 新しいノードのnextポインタを、目標位置の前のノードのnextポインタが指すノードに向ける。
- 新しいノードが指すべき前のノードの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;
}
これにより、リストの特定の位置に要素を挿入することができます。