一、指针p、q和r依次指向某循环链表中三个相邻的结点,交换结点*q和结点*r在表中次序的程序段是()
A:
p->next=r;q->next=r->next;r->next=q;
B:
p->next=r;r->next=q;q->next=r->next;
C:
r->next=q;q->next=r->next;p->next=r;
D:
r->next=q;p->next=r;q->next=r->next;
二、在一个单链表中,已知q所指结点是p所指结点的后继结点,若在p和q之间插入s所指结点,则正确的操作是()
A:
s->next=p->next;p->next=s;
B:
s->next=q;p->next=s->next;
C:
q->next=s;s->next=p;
D:
p->next=s;s->next=p;
我相信很多人应该都跟我一样,一开始都不明白这种题目。我思考了之后,想到了一个很好理解的方法。
所谓X1->next = X2->next,X1->next表示的是目前准备要指向的目标,X2指的是需要调换的那个项。
比如说第一题。原来的顺序是PQRP,因为要把QR调换顺序。所以Q->next = R->next。
比如说第二题,原来的顺序是PQ,因为要把S放到中间变成PSQ,这样的话,就相当于S->next替换了P->next的位置。所以应该有S->next = P->next。