【发布时间】:2020-06-20 16:52:53
【问题描述】:
我正在从事与制作 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;
}
}
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
使用调试器 :)
-
还有,你确定pos不应该是0吗?
-
问题是我使用了多个 c 文件,所以编译器并不总是符合我的停止标记。我会用 0 试试。
-
如果您提供问题的minimal reproducible example 可能更容易帮助您。此外,您的问题更有可能获得赞成而不是反对。
-
列表看起来像什么而不是 3->1->2->4->5->6->NULL?
标签: c linked-list