【正确答案】(1)数据结构
采用字符串的链接表示(用带头结点的单链表表示)定义。
(2)思路
从x的第一个字符开始在y中查找,找到第一个不在y中出现的字符,将这个字符返回。若x中所有字符均在y中出现,则返回'\0'。
(3)算法
char FindChar(LinkString x,LinkString y){
/*找出串x中第一个不在串y中出现的字符。若这样的字符不存在,则返回'\0'*/
PStrNode p=x->link,q; /*p指向x中的第一个结点*/
while(p!=NULL){
q=y->link; /*q指向y中的第一个结点*/
while(q!=NULL&&q->c!=p->c)q=q->link;
if(q==NULL)return p->c;
/*找到x中第一个不在y中出现的字符*/
p=p->link; /*p指向x中的下一个结点*/
}
return'\0'; /*x中所有字符均在y中出现,返回'\0'*/
}
(4)代价分析
设x的规模为nx,y的规模为ny,最好的时间代价为x中的第一个字符不在y中出现,则比较次数为ny=O(ny);最坏的时间代价为x中的所有元素都与y的最后一个字符相同,则比较次数为nx×ny=O(nx×ny)。
【答案解析】