第二章测试1.
线性表中的数据元素有一个前驱多个后继。
A:对 B:错
答案:B
2.
用顺序结构存储,删除最后一个结点时,( )
A:其它 B:一定不会移动其它结点位置 C:可能会移动其它结点位置 D:会移动其它结点位置 3.
链表中逻辑上相邻的元素的物理地址__________相邻。
A:必定 B:一定不 C:不一定 D:其它 4.
1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。
//将合并逆置后的结果放在C表中,并删除B表
StatusListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C)
{
LinkList pa,pb,qa,qb;
pa=A;
pb=B;
qa=pa; //保存pa的前驱指针
qb=pb; //保存pb的前驱指针
pa=pa->next;
pb=pb->next;
A->next=NULL;
C=A;
while(pa&&pb){
if(pa->data<pb->data){
qa=pa;
pa=pa->next;
qa->next=A->next; //将当前最小结点插入A表表头
A->next=qa;
}
else{
qb=pb;
pb=pb->next;
( )//将当前最小结点插入B表表头
A->next=qb;
}
}
while(pa){
qa=pa;
pa=pa->next;
qa->next=A->next;
A->next=qa;
}
while(pb){
qb=pb;
pb=pb->next;
qb->next=A->next;
A->next=qb;
}
pb=B;
free(pb);
return OK;
}
A:qa->next=A->next B:qb->next=A->next C:qb->next=A; D:qa->next=A; 5.
假设某个单向循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表中某个结点的指针,试编写算法在链表中删除指针s所指结点的前驱结点。
StatusListDelete_CL(LinkList &S)
{
LinkList p,q;
if(S==S->next)return ERROR;
q=S;
p=S->next;
while( ){
q=p;
p=p->next;
}
q->next=p->next;
free(p);
return OK;
}
A:p==S B:p->next!=S C:p->next==S D:p!=S
温馨提示支付 ¥3.00 元后可查看付费内容,请先翻页预览!