связанный список - поиск узла по значению - PullRequest
0 голосов
/ 29 сентября 2018

это самосортируемый узел, когда я ищу узел с помощью функции поиска (int x), программа останавливается, если x>, ​​то наибольшее значение узла, то есть последующее значение узла, следующее за программой

   void search(int value)
      {
    if(!isEmpty())
    {

        loc = start;
        pedloc = NULL;
        int n=1;
        while(loc != NULL && loc->data < value)
        {
             pedloc= loc;
            loc = loc->next;
        n++;
        }

        if(loc != NULL && loc->data != value)
        {
            loc = NULL;
            cout<<"value not exist"<<endl;
            return;
        }

        cout<<"value "<<loc->data<<" is present at #" 
      <<n<<" node"<<endl;
    }

  }

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Вот один из способов идентификации узла по значению.

void search(int value)
    {
        node *temp=new node;
        temp=head;
        int pos = 1;
        while(temp!=NULL)
        {
            if(temp->data == value)
            {
                cout << "" << value << " is at position: " << pos << endl;
                break;
            }
            else if (temp->next == NULL && temp->data != value)
            {
                cout << "" << value << " is not part of the linked list" << endl;
                break;
            }
            temp=temp->next;
            pos++;
        }
    }

Этот пример кода соответствует тому, чего вы хотите достичь.Легче найти узел по значению внутри цикла.Когда узел найден, просто разорвите цикл.Если мы находимся на последнем узле, а значение не существует, это означает, что значение и впоследствии узел не является частью связанного списка, который проверяет условие «else if».

0 голосов
/ 29 сентября 2018

Согласно вашему коду, цикл будет прерван в двух случаях, если loc==null or loc->data >= value.В обоих этих случаях ваш поисковый запрос не найден в данном списке.

, следовательно, loc==null или loc->data >= value должны быть добавлены в ваш чек if.

...