●对于单链表,如果仅仅知道一个指向链表中某结点的指针p, (54) 将p所指结点的数据元素与其确实存在的直接前驱交换,对于单循环链表来说 (55) ,而对双向链表来说 (56) 。(54) ~(56) A.可以B.不可以C.不确定D.仅能一次
●对于单链表,如果仅仅知道一个指向链表中某结点的指针p, (54) 将p所指结点的数据元素与其确实存在的直接前驱交换,对于单循环链表来说 (55) ,而对双向链表来说 (56) 。
(54) ~(56) A.可以
B.不可以
C.不确定
D.仅能一次
相关考题:
对于单链表,如果仅仅知道一个指向链表中某结点的指针p,(54)将p所指结点的数据元素与其确实存在的直接前驱交换,对于单循环链表来说(55),而对双向链表来说(56)。A.可以B.不可以C.不确定D.仅能一次
阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]函数ReverseList(LinkList headptr)的功能是将含有头结点的单链表就地逆置。处理思路是将链表中的指针逆转,即将原链表看成由两部分组成:已经完成逆置的部分和未完成逆置的部分,令s指向未逆置部分的第一个结点,并将该结点插入已完成部分的表头(头结点之后),直到全部结点的指针域都修改完成为止。例如,某单链表如图1所示,逆置过程中指针s的变化情况如图2所示。链表结点类型定义如下:typedef struct Node{ int data; Struct Node *next; }Node,*LinkList; [C函数] void ReverseList(LinkList headptr) { //含头结点的单链表就地逆置,headptr为头指针 LinkList p,s; if(______) return; //空链表(仅有头结点)时无需处理 P=______; //令P指向第一个元素结点 if(!P->next) return; //链表中仅有一个元素结点时无需处理 s=p->next; //s指向第二个元素结点 ______ =NULL; //设置第一个元素结点的指针域为空 while(s){ p=s; //令p指向未处理链表的第一个结点 s= ______; p->next=headptr->next; //将p所指结点插入已完成部分的表头 headptr->next= ______; } }
在一个单链表中,指针P指向结点是指针S所指向结点的直接前驱结点,从链表中删除S所指向结点的操作为:A.p=s;B.s->next=p->next;C.p->next=s->next;D.s=p;