填空题 [说明] 若S和T是用结点大小为1的单链表存储的两个串,试设计一个算法找出S中第一个不在T中出现的字符。查找过程是这样的,取S中的一个字符(结点),然后和T中所有的字符一一比较,直到比完仍没有相同的字符时,查找过程结束,否则再取S中下一个字符,重新进行上述过程。 [函数] typedef struct node { char data; struct node *next; }LinkStrNode; //结点类型 typedef LinkStrNode *LinkString; //LinkString 为链串类型 LifikString S; //S 是链串的头指针 char SearchNoin ( LinkString S, LinkString T ) {//查找不在T中出现的字符 LinkStrNode *p, *q; {{U}} (1) {{/U}}; q=T; while ({{U}} (2) {{/U}}) {//取S中结点字符 while({{U}} (3) {{/U}})//进行字符比较 q=q->next; if(q==NULL) return {{U}}(4) {{/U}};//找到并返回字符值 q=T;//指针恢复串T的开始结点 ({{U}} (5) {{/U}}); } printf("there's no such character."); return NULL: }
  • 1、
【正确答案】 1、(1)p=S (2)p (3)q&&p->data!=q->data (4)p->data (5)p=p->next    
【答案解析】