阅读以下说明和Java代码,将应填入 (n) 处的字句写在对应栏内。
[说明]
在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文类的内容或状态发生变化时,关联此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个Java源文件中,能够正确编译通过。
[Java代码]
//Subject.java文件
public interface Subject
public void attach(Observer DocExplorer);
public void detach(Observer DocExplorer);
void notifyObservers( );
//Observer.Java文件
public interface Obsever(
void update( (1) );
//OfficeDoc.Java文件
import Java.util.*;
public class OfficeDoc implements Subject//OfficeDoc类实现Subject接口
private Vector ObserverVector=new Java.util.Vector( );
//存储与OfficeDoc相关联的DocExplorer对象
public void attach(Obsever observer)
//将某DocExplorer对象与OfficeDoc相关联
ObserverVector.addElement(observer);
publ
阅读以下说明和Java代码,将应填入 (n) 处的字句写在对应栏内。
[说明]
在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文类的内容或状态发生变化时,关联此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个Java源文件中,能够正确编译通过。
[Java代码]
//Subject.java文件
public interface Subject
public void attach(Observer DocExplorer);
public void detach(Observer DocExplorer);
void notifyObservers( );
//Observer.Java文件
public interface Obsever(
void update( (1) );
//OfficeDoc.Java文件
import Java.util.*;
public class OfficeDoc implements Subject//OfficeDoc类实现Subject接口
private Vector ObserverVector=new Java.util.Vector( );
//存储与OfficeDoc相关联的DocExplorer对象
public void attach(Obsever observer)
//将某DocExplorer对象与OfficeDoc相关联
ObserverVector.addElement(observer);
publ
阅读以下说明和C代码,将应填入 (n) 处的字句写在对应栏内。
[说明]
下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ryt、try、tyr、ytr、yrt),但考虑到破译速度,采用如下方法。
注意到单词列表中不存在组成字符完全相同的单词(如Hack12与Hack21包含完全相同的字符),因此将单词中的字符进行重组再进行比较,例如,try单词重组为rty(按ASCⅡ码顺序),这样不管打乱的单词是什么顺序,只要是由r、t、y三个字母组成的均破译为try,大大提高破译速度。程序中借助二叉排序树以进一步提高查找效率,二叉排序树左子树(如果有)上的节点对应的值均小于根节点的值,右子树(如果有)上的节点对应的值均大于根节点的值。
函数中使用的符号定义如下:
#define NumberofWords 1275//单词总数
#define MaxLength 10//最长单词所含字符数
char WordList[NumberofWords][MaxLength];//存储单词列表
int cmp(Node *q,Node *p);//q与p比较。p小,返回负值;P大返回正值:相等,返回0
typedef struct Node(//二叉树节点
char *eleLetters;//重组后的字符串
int index;//对应单词表中的下标
struct Node *lChiId,*rChiid;//左右子节点
Node;
[C代码]
void reCompose(Node *p,char *temp)
//重纰,亦即将temp字符串中的字符升序排序,存储于p节点中
//采用直接插入排序法
char c;
strcpy(p->eleLetters,temp);//
int len=strlen(tem
我来回答: