有以下结构体说明和变量定义 struct node { int data; struct node *next; } *p,*q,*r; 指针p、q、r分别指向一个链表中的三个连续结点,现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是 。 A r->next=q; q->next=r->next;p->next=r; B q->next=r->next;p->next=r; r->next=q; C p->next=r; q->next=r->next;r->next=q; D q->next=r->next;r->next=q;p->next=r;
时间: 2023-12-06 08:43:50 浏览: 145
实验9(1) 掌握C语言环境下结构体和共用体类型变量的定义和使用方法.doc
正确的程序段应该是 B:q->next=r->next; p->next=r; r->next=q;。
解释如下:
- A 选项中,r->next=q; 是正确的,但是 q->next=r->next; 这一步会导致链表断开。
- C 选项中,p->next=r; 是正确的,但是 q->next=r->next; 这一步会导致链表断开。
- D 选项中,q->next=r->next; 和 r->next=q; 是正确的,但是 p->next=r; 这一步会导致链表断开。
因此,只有 B 选项中,三个操作都是正确的,可以保持链表的连续性。
阅读全文