为什么我在此列表中获取垃圾值

时间:2012-06-21 04:04:09

标签: c list

我有一个单独的链表,节点和列表结构定义为:

typedef struct _node
{
   int data;
   node* next;
} node;

typedef struct _list
{
   node* start;
} list;

我编写了一个函数来从列表中删除特定值的前导条目,但它似乎没有按预期工作。运行我的函数并重新打印我的列表后,而不是元素不再存在,其位置有一个很大的值(大约134520848)。我删除定义值的前导值的函数是:

void removeLead(list* l, int n)
{
   node* current = l->start;
   node* temp = NULL;

   while (current->data == n)
   {
      temp = current;
      l->start = current->next;
      free(temp);
   }
}

如果我有4个前导值== n那么,在运行removeLead()之后,我有3个前导条目~134520848。

1 个答案:

答案 0 :(得分:3)

代码中有错误。您没有重新分配当前变量。

void removeLead(list* l, int n)
{
   node* current = l->start;
   node* temp = NULL;

   while (current->data == n)
   {
      temp = current;
      current = current->next;
      if(l->start == temp)
          l->start = current;
      free(temp);
   }
}