问题
单项选择题
对于单链表,如果仅仅知道一个指向链表中某结点的指针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;