【正确答案】正确答案:应先找出链表L2在链表L1中的出现,然后将L1中的L2倒置过来。设L2在L1中出现时第一个字母结点前驱的指针为pre,最后一个字母结点在L1中为g所指结点的前驱,则在保存pre后继结点指针(s)的情况下,执行pre一>next=q。之后将S到g结点的前驱依次插入pre结点之后,实现了L2在L1中的倒置。核心语句段如下: while(pre&&s)//pre指向L1当前趟起点的前驱,q和s分别指向L1和L2当前结点 if(q一>data==s一>data){q:q一>next ; s=s一>next ;) //对应字母相等,指针后移 else{pre=pre->next;q=pre->next;s=L2->next;) //下一趟匹配初始化 if(s==null)//匹配成功,q为L1中与L2最后一个结点相同数据域结点的后继 fr=pre一>next; //r初始指向匹配的首字母结点 pre一>next=q; //将*pre与*q结点链接起来 while(r!=q)(8=r一>next;r->next=pre->next;pre->next=r;r=s;)//逐结点倒置 } else cout<<“L2并未在L1中出现”<
【答案解析】