问题 单项选择题

对于单链表,如果仅仅知道一个指向链表中某结点的指针p, (54) 将p所指结点的数据元素与其确实存在的直接前驱交换,对于单循环链表来说 (55) ,而对双向链表来说 (56)

(56)处填()。

A.可以

B.不可以

C.不确定

D.仅能一次

答案

参考答案:A

解析:

单链表和单循环链表的结点结构为:date、next双向链表的结点结构为:prior、date、next

①单链表。②单循环链表。③双向链表。

(1)从单链表中的p结点出发,找不到它的直接前驱,因此不能与其直接前驱交换。

(2)从单循环链表中的p结点出发,可以找到其直接前驱,因此,可以与其直接前驱结点交换数据。程序段如下:

q=p->next;

while(q->next!=p)

q=q->next;

temp=p->data;

p->data=q->data;

q->data=temp;

(3)从双循环链表中的p结点出发,可以找到其直接前驱,因此,可以与其直接前驱结点交换数据。程序段如下:

temp=p->prior->data;

p->Prior->data=p->data;

p->data=temp;

单项选择题
判断题