链表-按值搜索节点

时间:2018-09-29 15:38:59

标签: c++ linked-list nodes

当我通过search(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 :(得分:0)

根据您的代码,虽然循环将在两种情况下终止, loc==null or loc->data >= value。在这两种情况下,都没有在给定列表中找到您的搜索输入。

因此,loc==nullloc->data >= value应该添加到您的if支票中。

答案 1 :(得分:0)

这是通过值识别节点的方法之一。

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”条件正在检查的内容。