【发布时间】:2015-01-19 13:06:12
【问题描述】:
我想从函数中的值指定的列表中删除一些元素。如果函数的 'val' 等于我在列表中的第一个元素,我的函数将不起作用。否则效果很好。有什么想法吗?
struct elem {
int val;
struct elem *next;
};
void del(struct elem *list, int val) {
struct elem* tmp = list;
struct elem* prev = NULL;
while (tmp != NULL) {
if (tmp->val == val) {
if (prev == NULL) {
tmp = tmp->next;
free(list);
list = tmp;
} else {
prev->next = tmp->next;
free(tmp);
tmp = prev->next;
}
} else {
prev = tmp;
tmp = tmp->next;
}
}
}
【问题讨论】:
-
由于你是在
del()中修改list,所以将其作为双指针传递。