我有 2 个功能。函数 Find 进行双向搜索,这意味着它按部分搜索数组,直到找到键并返回其位置。函数 removef 或 (remove fast) 抓取该位置并将其从字符串数组中删除。我正在使用命令行界面,它要求用户输入命令和字符串(字符串被删除),因此不需要提示用户输入字符串。
这是我的查找功能
int StringList::Find(string key, int start, int end)
{
int middle = (end + start)/2;
if (key > str[middle])
{
return Find(key,middle,end);
}
else if ( key < str[middle])
{
return Find(key,start,middle);
}
else if (key == str[middle])
{
return middle;
}
}
Find 函数应该确定键是在数组的上半部分还是下半部分(中间以上或中间以下),然后继续划分,直到找到需要删除的键或字符串。
这是removef:
void StringList::removef(string s)
{
int loc = Find(s,0,10000); //ignore these parameters, i know they are wrong they are just an example
for(int j=loc; j<(numberOfStrings)-1; j++)
{
str[j] = str[j+1];
}
numberOfStrings--;
}
我的问题是我的 Find 功能使用双向搜索。关于我可以解决的任何问题的任何建议?我真的卡住了。谢谢!