已知L是无表头结点的单链表且P结点既不是首元结点也不是尾元结点试从下列提供的答案中选择合适的语句序列
a 在P结点后插入S结点的语句序列是__________________
b 在P结点前插入S结点的语句序列是__________________
c 在表首插入S结点的语句序列是__________________
d 在表尾插入S结点的语句序列是__________________
() P>next=S;
() P>next=P>next>next;
() P>next=S>next;
() S>next=P>next;
() S>next=L;
() S>next=NULL;
() Q=P;
() while(P>next!=Q) P=P>next;
() while(P>next!=NULL) P=P>next;
() P=Q;
() P=L;
() L=S;
() L=P;
解a () ()
b () () () () ()
c () ()
d () () ()
已知L是带表头结点的非空单链表且P结点既不是首元结点也不是尾元结点试从下列提供的答案中选择合适的语句序列
a 删除P结点的直接后继结点的语句序列是____________________
b 删除P结点的直接前驱结点的语句序列是____________________
c 删除P结点的语句序列是____________________
d 删除首元结点的语句序列是____________________
e 删除尾元结点的语句序列是____________________
() P=P>next;
() P>next=P;
() P>next=P>next>next;
() P=P>next>next;
() while(P!=NULL) P=P>next;
() while(Q>next!=NULL) { P=Q; Q=Q>next; }
() while(P>next!=Q) P=P>next;
() while(P>next>next!=Q) P=P>next;
() while(P>next>next!=NULL) P=P>next;
() Q=P;
() Q=P>next;
() P=L;
() L=L>next;
() free(Q);
解a () () ()
b () () () () ()
c () () () () ()
d () () () ()
e () () () ()
已知P结点是某双向链表的中间结点试从下列提供的答案中选择合适的语句序列
a 在P结点后插入S结点的语句序列是_______________________
b 在P结点前插入S结点的语句序列是_______________________
c 删除P结点的直接后继结点的语句序列是_______________________
d 删除P结点的直接前驱结点的语句序列是_______________________
e 删除P结点的语句序列是_______________________
() P>next=P>next>next;
() P>priou=P>priou>priou;
() P>next=S;
() P>priou=S;
() S>next=P;
() S>priou=P;
() S>next=P>next;
() S>priou=P>priou;
() P>priou>next=P>next;
() P>priou>next=P;
() P>next>priou=P;
() P>next>priou=S;
() P>priou>next=S;
() P>next>priou=P>priou;
() Q=P>next;
() Q=P>priou;
() free(P);
() free(Q);
解a () () () ()
b () () () ()
c () () () ()
d () () () ()
e () () ()
简述以下算法的功能
() Status A(LinkedList L) { //L是无表头结点的单链表
if(L && L>next) {
Q=L;L=L>next;P=L;
while(P>next) P=P>next;
P>next=Q;Q>next=NULL;
}
return OK;
}
() void BB(LNode *s LNode *q) {
p=s;
while(p>next!=q) p=p>next;
p>next =s;
}
void AA(LNode *pa LNode *pb) {
//pa和pb分别指向单循环链表中的两个结点
BB(papb);
BB(pbpa);
}
解() 如果L的长度不小于将L的首元结点变成尾元结点
() 将单循环链表拆成两个单循环链表