链表的免费功能不起作用
free function for linked-list not working
我已经在下面粘贴了我的功能代码以释放到以下结构的内容:
struct LetterFrequencyPair
{
char character;
int frequency;
struct LetterFrequencyPair* next;
};
创建和显示列表不是问题并且工作正常。但是,当我开始使用 free 函数时,什么也没有发生。为了找出问题的原因,我在代码中添加了打印的步骤语句。 (参见下面的函数)查看执行了多少代码。在输出中,我得到的只是 "Step 1" 而不是其他任何东西,因此表明错误发生在该行之后。我不确定这里哪里不对,因为它与我在另一个链表练习中使用的格式相同。
如果您发现我哪里出错了,请告诉我。另外,如果您需要查看整个代码(我很确定您不应该,因为这是错误所在)请告诉我,我将编辑问题以将其添加进去。:)
void freeList()
{
struct LetterFrequencyPair* temp;
temp = root;
if (temp == NULL)
{
printf("List is empty.\n");
}
else
{
printf("step 1\n");
while(temp != NULL);
{
printf("Step 2.\n");
struct LetterFrequencyPair* nexttemp = temp->next;
printf("step 3\n");
free(temp);
printf("Step 4\n");
temp = nexttemp;
printf("5\n");
}
printf("\n");
}
}
@Alexander Dmitriev 发现了错误(他对问题发表了评论)。
错误是;在行 while(temp != NULL);
删除了;该功能现在可以正常工作了。
我已经在下面粘贴了我的功能代码以释放到以下结构的内容:
struct LetterFrequencyPair
{
char character;
int frequency;
struct LetterFrequencyPair* next;
};
创建和显示列表不是问题并且工作正常。但是,当我开始使用 free 函数时,什么也没有发生。为了找出问题的原因,我在代码中添加了打印的步骤语句。 (参见下面的函数)查看执行了多少代码。在输出中,我得到的只是 "Step 1" 而不是其他任何东西,因此表明错误发生在该行之后。我不确定这里哪里不对,因为它与我在另一个链表练习中使用的格式相同。
如果您发现我哪里出错了,请告诉我。另外,如果您需要查看整个代码(我很确定您不应该,因为这是错误所在)请告诉我,我将编辑问题以将其添加进去。:)
void freeList()
{
struct LetterFrequencyPair* temp;
temp = root;
if (temp == NULL)
{
printf("List is empty.\n");
}
else
{
printf("step 1\n");
while(temp != NULL);
{
printf("Step 2.\n");
struct LetterFrequencyPair* nexttemp = temp->next;
printf("step 3\n");
free(temp);
printf("Step 4\n");
temp = nexttemp;
printf("5\n");
}
printf("\n");
}
}
@Alexander Dmitriev 发现了错误(他对问题发表了评论)。
错误是;在行 while(temp != NULL);
删除了;该功能现在可以正常工作了。