我正在从事一个与制作 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;
}
}
任何帮助将不胜感激。谢谢!
head 是列表的指针。 >然后你等同于列表的指针来添加节点。
因为:
因为:
(*list)->next = head;
===(*list)->next = addnode;
===addnode->next = addnode