Невозможно вставить узел в первую позицию в связанном списке - PullRequest
1 голос
/ 20 июня 2020

Я работаю над проектом по редактированию кадров, который связан с созданием коротких фильмов в формате GIF. Я хочу добавить функцию для изменения положения выбранных кадров. Например, если я хочу переместить фрейм с именем «3» в первую позицию:

до:

1->2->3->4->5->6->NULL

после:

3->1->2->4->5->6->NULL

Эта вещь работает для меня, когда я выбираю позиции в середине или в конце списка, но не работает при вводе позиции 1. Моя функция:

void insertFrameNode(FrameNode** list, FrameNode* addNode, int pos)
{
    int i = 0; // for loops
    FrameNode* before = *list;
    FrameNode* head = *list;
    if (pos == 1)
    {
        addNode->next = head;
        *list = addNode;
    }
    else 
    {
        for (i = 0; i < pos - 2; i++)
        {
            before = before->next;
        }
        addNode->next = before->next;
        before->next = addNode;
    }
    
}

Любая помощь будет очень принята. Спасибо!

1 Ответ

0 голосов
/ 20 июня 2020

head - указатель на список. Затем u приравнивает указатель списка к добавляемому узлу. Потому что: (*list)->next = head; === (*list)->next = addnode; === addnode->next = addnode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...