在成员函数中使用ADT无法获得正确的返回值

时间:2017-04-24 22:42:40

标签: c++ recursion linked-list abstract-data-type

template<class Type>
Type* unorderedLinkedList<Type>:: newSearch(nodeType<Type> *head, const Type& x)const
{
    if (head == NULL)
        return 0;

    if (head->info == x)
        return ???(head or *head?);

    return newSearch(head->link, x);
}

template <class Type>
Type* unorderedLinkedList<Type>::recursiveLinkSeqSearch(const Type& item) const
{
    nodeType<Type> *current;
    current=this->first;
    return newSearch(current, item);


}

现在我对提出这个问题感到愚蠢,但我无法弄清楚这个函数的返回值。在主代码中我需要返回一个bool或类似的东西。主要看起来像。

unorderedLinkedList<classType> l1;
   classType *st;
   l1.recursiveLinkSeqSearch(st);
   if(l1){}else{};

我已经对功能做了很多改动但没有成功,我真的很感激任何帮助。

2 个答案:

答案 0 :(得分:0)

对我来说,看起来你应该回归'头'。如果类型真的必须保持原样,你必须进行类型转换:

return (Type*)head;

但是,也许您想要做的是改变函数的返回值:

template<class Type>
nodeType<Type>* unorderedLinkedList<Type>:: newSearch(nodeType<Type> *head, const Type& x)const
{
// Function body
}

template <class Type>
nodeType<Type>* unorderedLinkedList<Type>::recursiveLinkSeqSearch(const Type& item) const
{
// Function body
}

但是,如果不知道细节,很难确定,所以你可能也想做其他事情。

答案 1 :(得分:0)

如上面的评论

return &head->info;

这解决了类的所有问题并解决了数据类型的问题