怎么解决?
前天,老师出了一个题,是现写一个类String和一个Dictionary类,我在这里写出主要的函数来,
class String//具有字符串功能的类
{
public:
String();
String(char *s);
~String();
int hashCode();
int getLength() const;
char *getContent() const;
private:
char *str;
}
String::String()
{
int len=strlen(s);
str=new char[len+1];
strcpy(str,s);
}
int String::hashCode()//哈希码,返回前三个字符的ASCII值之和,如果字符串只有两个字符,就返回两个之和,只有一个就返回一个。
int String::getLength() const//返回字符串的长度。
char *String::getContent() const //返回字符串的内容。
class Dictionary//英汉字典的作用,
{
public:
Dictionary();
~Dictionary();
bool add(String,String);
bool modity(String,String);
String trans(String)
private:
String *en;//存放英文字符串
String *ch;//存放中文字符串
}
bool Dictionary::add(String s1,String s2)//将英文和他的汉文加入到字典中。
bool Dictionary::modity(String s1,String s2)//将英文和他的新汉文意思加入到字典中去替换掉原有的意思。
String Dictionary::trans(String s1)//输入英文,得到他的中文意思。
字典的存放有一定的规则,这跟String类中的哈希码有关,数组的前75的位置是根据英文的哈希码来除以75得到的余数来决定的。
如:字符串s1的哈希码计算出来为m值,n=m%75,则字符串应该存放在en[n]的位置(前提是此位置原为空,没有被占用),如果此处已经被占用了,则放在75~99的位置(顺序存放)。
我的问题主要是出现在判断位置是否被占用上,我怎么去判断这个位置上有无被占用。