已知两个按升序排列的单链表La和Lb,它们分别包含节点a1->a2->...->am 和 b1->b2->...->bn,其中ai和bj表示节点的值。现在使用MergeList函数将它们合并成一个按升序排列的单链表Lc。在合并的过程中,如果pa指向La的节点ai,pb指向Lb的节点bj,且ai > bj,那么在执行 `pc->next = pb; pc = pb; pb = pb->next;` 之后,以下哪个说法是正确的?

答案解析

核心考点说明:链表合并操作,特别是对指针操作的理解。解题思路分析:MergeList函数通过比较pa和pb指向的节点的值,将较小的节点插入到Lc链表之后。当ai > bj时,执行`pc->next = pb; pc = pb; pb = pb->next;`,意味着将pb(即节点bj)插入到Lc链表的末尾,然后pc指向新插入的节点,pb移动到下一个节点。每个选项的详细分析:A. La链表中节点ai将被从链表中删除:错误。代码中没有删除La中的任何节点,只是比较了它的值。B. Lc链表中pc指向的节点将是原Lb中的节点bj:正确。在执行 `pc->next=pb; pc=pb;` 后,pc指向的即为pb指向的节点bj。C. Lc链表中,节点bj的下一个节点一定是原Lb中的节点bj+1:错误。节点bj被插入到Lc中后,其next指针指向的是Lc的下一个节点,该节点可能来自La也可能来自Lb,不一定是原Lb中的bj+1。D. La链表中节点ai和Lb中节点bj的相对顺序不会改变:错误。由于ai>bj,节点bj被先插入到Lc链表,因此在Lc中,节点bj将出现在ai之前,相对顺序发生了改变。易错点提醒:理解链表的指针操作,特别是pc的作用,注意插入操作后pc和pb的变化。正确答案的关键依据:`pc->next=pb; pc=pb;`的操作是将pb节点加入Lc链表,并移动pc到新加入的节点。错误选项的具体问题:A项误认为删除节点,C项混淆链表连接的逻辑,D项错误地认为相对顺序不变。
正确答案:B
随机推荐
开始刷题