我的任务是制作一个程序,按标题、类型、年份、评级、男主角等搜索 400 多部电影(使用链接列表链接在一起)。
但是有一个问题,我们只允许一个搜索函数通过链表进行搜索。此外,在该搜索功能中,我们只允许使用一个 while 循环——我假设在我的情况下将类似于......
while (moviePtr != NULL)
显然,如果是演员搜索或类型搜索,它们将有许多不同的实例。对于演员、流派、评级、年份、子流派和配角,它应该输出找到的每一个实例。(例如,如果 Kevin Bacon 在 x-men 和 notebook 中,它应该输出两者而不仅仅是其中一个(输出文件而不是屏幕))。
我发现自己完全被我们给予的这些限制所困扰。我的搜索功能将如何处理不同的数据类型?(年份和等级必须声明为整数)。它怎么会知道我到底在寻找什么?如果我正在搜索演员,我不希望它也搜索标题。
任何关于如何开始和开始的建议都非常感谢。
编辑:大家好,我想更新你们我所做的事情。我有 3 种不同的搜索功能。一个用于数值(年份和评级),1 用于类型和演员,最后一个用于标题。
这是所有三个的代码。首先是标题搜索。
void TitleSearched(MovieNode*head,
string titleSearched,
ofstream& outFile)
{
MovieNode* moviePtr;
bool found;
moviePtr = head;
found = false;
while (moviePtr !=NULL & !found)
{
if (moviePtr-> title == titleSearched)
{
found = true;
}
else
{
moviePtr = moviePtr -> next;
}
}
if (found)
{
cout << endl << titleSearched << " has been found!\n";
TitleOutput (moviePtr,outFile);
}
else
{
cout << endl << titleSearched << " was not found.\n";
}
}
现在是年份/评级搜索。
int NumSearched(MovieNode* head, int numSearched)
{
int instances;
MovieNode* moviePtr;
ofstream outFile;
moviePtr = head;
instances = 0;
while (moviePtr !=NULL)
{
if (moviePtr-> year == numSearched)
{
instances = instances +1;
NumOutList(moviePtr,outFile,"year",numSearched,instances);
moviePtr = moviePtr -> next;
}
else if (moviePtr->rating == numSearched)
{
instances = instances +1;
NumOutList(moviePtr,outFile,"rating",numSearched,instances);
moviePtr = moviePtr -> next;
}
else
{
moviePtr = moviePtr ->next;
}
}
return instances;
}
最后是流派/演员搜索。
int ItemSearch (MovieNode* head,string itemSearched, ofstream& outFile)
{
int instances;
MovieNode* moviePtr;
moviePtr = head;
instances = 0;
while (moviePtr !=NULL)
{
if (moviePtr-> genre == itemSearched || moviePtr ->subGenre == itemSearched)
{
instances = instances +1;
OutList(moviePtr,outFile,"Genre",itemSearched,instances);
moviePtr = moviePtr -> next;
}
else if (moviePtr->leadActor == itemSearched || moviePtr->supportActor == itemSearched)
{
instances = instances +1;
OutList(moviePtr,outFile,"Actor",itemSearched,instances);
moviePtr = moviePtr -> next;
}
else
{
moviePtr = moviePtr ->next;
}
}
return instances;
}
我想提醒你们我的任务是什么。1. 将这三个搜索函数合并为一个 2. 在搜索中只有一个 while 循环 3. 在任何给定函数中只有一个 return (但是,id 假设这将是一个组合时的 void 函数)
我相信我的主要问题是我的整数和字符串。我不允许将等级或年份声明为字符串。只是将这三者结合起来的代码格式让我很头疼