вставить новый узел в любой индекс в одном связанном списке
Как мне создать функцию, которая позволит мне вставить новый узел в любой индекс в связанном списке? вот структура:
struct node {
int data;
struct node* next;
};
вот функция, обратите внимание, что есть только двойной указатель, индекс и параметр данных.
void insertN(struct node** headRef, int index, int data);
и вот как должен выглядеть результат после вызова insertN:
[ 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 ]
я знаю, как добавить новый узел в голову, но не в любой момент. как я думал
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;
}
я просто не уверен, как делать все это, потому что, если что-то было в узле, я должен также переместить все последующие узлы.