【正确答案】(1)pa=LA->next
(2)pb, 或pb!=0, 或pb!=NULL
(3)pb=pb->next
(4)pre->next
(5)pre->next
【答案解析】 本题考查C程序设计基本技术及指针的应用。
题目中涉及的考点主要有链表的查找、删除运算以及程序逻辑,分析程序时首先要明确各个变量所起的作用,并按照语句组分析各段代码的功能,从而完成空缺处的代码填充。
根据注释,空(1)处应为指针变量pa赋值,使其指向LA链表的第一个元素结点,由于LA为指向头结点的指针,因此空(1)处应填入“pa=LA->next”。
以指针pa的值为循环条件的以下循环语句用于遍历LA的每一个元素。

显然,通过“pb=LB->next”已经令pb指向了LB的第一个元素,接下来的while语句就用于和LB的元素 pb->data 逐个比较,显然,空(2)处应填入“pb”,表明pb为非空指针,使得循环体中进行“pa—>data==pb->data”运算时,pb指针是有效的。在该循环中,若找到了两个链表的共有元素,则用break跳出循环,此时pb正指向LB中的该共有元素;否则继续在LB中查找,那就需要在空(3)处填入“pb=pb->next”。
在LB结束查找后,如果找到了与pa->data相同的元素,则之前已经令pb指向它:若是没有找到,则pb是空指针。
因此,接下来根据pb的值判断是否需要删除LA的当前元素。若不删除,则执行语句组“pre=pa;pa=pa->next;”,继续考察LA的后续元素;若需删除(pa指向的结点),则相关指针的指向如下图所示。
