我正在尝试编写一个方法来查明链接列表中是否存在给定值。
// Returns true if the value exists in the list.
int llist_exists(LinkedList * list, int value) {
LinkedList *e;
e = list->head;
int result = 0;
while(e != NULL)
{
if(e == value)
{
result = 1;
break;
}
}
return result;
}
答案 0 :(得分:2)
在您的代码中,您将指针与int进行比较,并指出@xxbbcc,从不在列表中向前移动。 如果我们假设你的LinkedList类如下:
class LinkedList
{
public:
int value;
LinkedList *next;
};
int llist_exists(LinkedList * list, int value) {
LinkedList *e;
e = list->head;
int result = 0;
while(e != NULL)
{
if(e->value == value)
{
result = 1;
break;
}
e = e->next;
}
return result;
}
答案 1 :(得分:1)
您可能有一个无限循环,因为您从未将e
设置为列表中的下一个条目。您需要步入while
循环中的下一个条目;类似的东西:
while(e != NULL)
{
if(e.value == value)
{
result = 1;
break;
}
e = e->next;
}
此外,正如@sithereal指出的那样,您将e
与值进行比较,但e
是一个条目指针,而不是值。