Fügen Sie einen neuen Knoten an einem beliebigen Index in einer einzelnen verknüpften Liste ein

Wie würde ich vorgehen, um eine Funktion zu erstellen, mit der ich einen neuen Knoten an einem beliebigen Index in einer verknüpften Liste einfügen kann? Hier ist die Struktur:

struct node {
    int data;
    struct node* next;
};

Hier ist die Funktion, beachten Sie, dass es nur einen Doppelzeiger, einen Index und einen Datenparameter gibt.

void insertN(struct node** headRef, int index, int data);

Und so sollte das Ergebnis nach dem Aufruf von insertN aussehen:

[ HEAD ] -> [ 0 ] -> [ 15 ] -> [ 10 ] -> [ 5 ] -> [ NULL ]
insertN( &head, 3, -44);
[ HEAD ] -> [ 0 ] -> [ 15 ] -> [ 10 ] -> [ -44 ] -> [ 5 ] -> [ NULL ]
insertN( &head, 4, -55);
[ HEAD ] -> [ 0 ] -> [ 15 ] -> [ 10 ] -> [ -44 ] -> [-55 ] -> [ 5 ] -> [ NULL ]
insertN( &head, 0, -66);
[ HEAD ] -> [ -66 ] -> [ 0 ] -> [ 15 ] -> [ 10 ] -> [ 5 ] -> [ NULL ]

Ich weiß, wie man einen neuen Knoten zum Kopf hinzufügt, aber an keiner Stelle. Die Art, wie ich dachte, war

void insertN(struct node** headRef, int index, int data) {
    struct node* new;
    int i;
    for (i = 0; i <= index; i++) {
        if (i == index) {
            /* move what was here to next node and put in new node */
        }
    }

    return;
}

Ich bin nur unsicher, wie ich das alles machen soll, denn wenn sich etwas im Knoten befand, muss ich auch alle nachfolgenden Knoten verschieben.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage