2005年下半年软件设计师下午试题及答案
下午试题
C++题目#include
constOBS_MAXNUM=20;
__(1)___;
classDocExplorer{
public:
DocExplorer((2)*doc);
___(3)___voidupdate(OfficeDoc*doc)=0;
};
classOfficeDoc{
private:
DocExplorer*myObs[OBS_MAXNUM]
intindex;
public:
OfficeDoc(){
index=0;
voidattach(DocExplorer*o){
1
if(index=OBS_MAXNUM||o==NULL)return;
for(intloop=0;loopif(myObs[loop]
==o)return;
myObs[index]=o;
index++;
}
voiddetach(DocExplorer)*o{
if(o==null)return;
for(intloop=0;loopif(myObs[loop]
==o){
if(loop=index-
2)myObs[loop]=myObs[index-1];
myObs[index-1]=NULL;
index--;
break;
}
}
}
private:
1
voidnotifyObs(){
for(intloop=0;loop
myObs[loop]-____(4)____;
}
};
DocExplorer:ocexplorer(OfficeDoc*doc){
doc-______(5)_____;
}
试题四:
散列文件的存储单位称为桶(BUCKET)。假如一个桶能存放m个记
录,当桶中已经有m个同义词(散列函数值相同)的记录时,存放
第m+1个同义词会发生“益出”。此时需要将第m+1个同义词存放
到另一个“益出桶”的桶中。相对的,称存放前m个同义词的桶
称为基桶。益处桶和基桶大小相同,用指针链接。查找指定元素记
录时,首先在基桶中查找。若找到,则成功返回,否则沿指针到益
处桶中查找。
为了简化起见,散列文件的存储单位以内存单元表示。
函数InsertToHashTable(intNewElemKey)的功能是:若新的元
素NewElemKey正确插入散列文件中。则返回1,否则0。
1
采用的散列函数为Hash(NewElemKey)=NewElemKey%P,其中P
为设定的基桶数目。
函数中使用的预定仪符号为:
#defineNULLKEY–1/*散列桶的空闲单元标示*/
#defineP