C找出链表中是否存在值

时间:2015-03-02 20:16:10

标签: c list pointers

我正在尝试编写一个方法来查明链接列表中是否存在给定值。

// 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;

}

2 个答案:

答案 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是一个条目指针,而不是值。