它是一个自排序的节点,如果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;
}
}
答案 0 :(得分:0)
根据您的代码,虽然循环将在两种情况下终止,
loc==null or loc->data >= value
。在这两种情况下,都没有在给定列表中找到您的搜索输入。
因此,loc==null
或loc->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”条件正在检查的内容。