我有一个结构:
struct Node {
int value;
struct Node *next;
};
typedef struct Node List;
而且我已经实现了将项目添加到列表中,但是当它是给定列表中的第一个元素时,我从列表中删除元素时遇到问题,我的函数:
void removeItem(List *ptr, int i)
{
List *current = ptr;
List *prev = NULL;
while (current != NULL)
{
if (current->value == i)
{
//it's first element
if (prev == NULL)
{
List *replace = ptr->next;
free(current);
ptr = replace;
current = replace;
}
else
{
prev->next = current->next;
free(current);
current = prev->next;
}
}
else
{
prev = current;
current = current->next;
}
}
}
当我的清单是这样的:
1、2、3、4、5
使用removeItem(list, 1)后,它是:
0、2、3、4、5
0不应该在那里。
另一个问题是,当 typedef 不同时,我也应该实现这些功能:
typedef struct Node *List;
但是后来我得到了大量的“错误的参数类型”/“在不是结构或联合的东西中请求成员'值'”错误。我能找到一些应该如何处理的例子吗?