这一道关于 链表的题目 qq各位大虾 怎么做!!!

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:07:45
有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。
??struct node
??{ int data;
??struct node *next;
??} *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;

本人学的是C 语言 就 数据结构 之类的题目 怎么做?
就这一类题目 怎样解决?????
我根本看不明白 题意~
怎么做~
晕~

q->next=r->next这个赋值必须在r->next=q这个之前。因为r->next的值是指向下一个结点的,要保证换位后也要连续。
另外,->next=r;的先后顺序没有要求。所以组合起来就有三种赋值顺序,即BCD答案所示。
A为错误答案。

这种题目学的是方法,你把书看熟了,多写几个程序,再做些题
还有这选A

恩 豆是a
q->next=r->next这里的的r->next已经被赋值为q了
于是乎就断线了

貌似是A