首页 > 试题广场 >

有以下结构体声明和变量定义,如图所示: 指针p

[不定项选择题]
有以下结构体声明和变量定义,如图所示:

指针p、r、q分别指向一个链表中的三个连续节点。
struct node {
    int date;
    struct node *next;
} *p, *q, *r;
先要将q和r所指节点的先后位置交换,同时要保持链表的连续,以下错误的程序段是()

  • r->next=q;p->next=r->next;p->next=r;
  • q->next=r->next;p->next=r;r->next=q;
  • p->next=r;q->next=r->next;r->next=q;
  • q->next=r->next;r->next=q->next;p->next=r;
A选项中,
r ->next = q;  //将r指向q
p->next = r ->next; //p的指针域指向r->next = q;那么p依然指向了q,故错误
D选项
q->next = r ->next //q指针域指向r下一个节点
r ->next = q->next;//r指针域指向q的下一个节点,即r重新指向了r节点原本就指向的下一个节点,故错误

发表于 2018-05-19 14:26:55 回复(3)
分析一下BC为什么正确 选项B,①先将q的下一个节点指向r的下一个节点假设为s ②再将p的下一个节点指向r ③再将r的下一个节点指向q(此时顺序为prqs) C选项同理,只是交换了前两步顺序
编辑于 2019-01-03 11:54:58 回复(0)
在将q赋给r->next之前,要将r->next赋给q->next
发表于 2020-04-04 23:01:59 回复(3)
选的时候:这两个肯定错不了 交完卷:什么竟然错了!! 看答案:卧槽,让选错的😭
发表于 2023-08-06 15:05:24 回复(0)
选项选的刚好反过来,一看,果然,选错误的😂
发表于 2023-04-05 16:40:36 回复(0)
d 应该改成 r 的 next 等于q
发表于 2023-07-04 17:20:33 回复(0)