在链表C ++中搜索Object的某个字段

时间:2018-03-06 08:03:38

标签: c++ linked-list

int Search(int x) {
        Node* temp = head;
        int pos = 1;
        while(temp != nullptr){
            if(temp->data == x)
                return pos;
            else{
                temp=temp->next;
                pos++;
            }
        }
        return 0;
}

此搜索功能用于搜索我创建的链表中的整数,并返回整数的位置。我现在使用的链接列表涉及具有四个字段的Person对象:名称,年龄,身高和体重。如何编写搜索功能以按名称搜索用户,然后在找到后打印出整个人员?我尝试写这个,但它不起作用:

Person Search(Person*A) {
        Node* temp = head;
        int pos = 1;
        while(temp != nullptr){
            if(temp->data == A)
                return *A;
            else{
                temp=temp->next;
                pos++;
            }
        }
        return *A;
}

最后我认为我需要名字的setter / getters,我需要传递参数搜索(Person.getName()),但这也是一个错误。有人可以向我解释如何做到这一点?我没有在网上找到任何类似的东西,所以任何帮助将不胜感激。提前谢谢!

1 个答案:

答案 0 :(得分:1)

我认为搜索功能类似于以下代码:

Person* Search(std::string search_name) {
        Node* temp = head;
        while(temp != nullptr){
            if(temp->data->name == search_name){ //compare name
                return temp->data;
            }
            temp=temp->next;
        }
        return nullptr;
}

输入要搜索的名称,该函数将返回人物指针