问答题 若x和y是两个单链表表示的串,请设计一个算法,找出x中第一个不在y中出现的字符。
【正确答案】(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)。
【答案解析】