第三章 链表 基本题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章链表

基本题

3.2.1单项选择题

1.不带头结点的单链表head为空的判定条件是

A.head=NULL

B.head->next=NULL

C.head->next=head

D.head!=NULL

2.带头接待点的单链表head为空的判定条件是

A.head=NULL

B.head->next=NULL

C.head->next=head

D.head!=NULL

3.非空的循环单链表head的尾结点(由p所指向)满足

A.p->head=NULL

B.p=NULL

C.p->next=head

D.p=head

4.在循环双链表p的所指结点之后插入s所指结点的操作是

A.p->right=s; s->left=p; p->right->lefe=s; s->right=p->right;

B.p->right=s; p->right->left=s; s->lefe=p; s->right=p->right;

C.s->lefe=p; s->right=p->right; p->right=s; p->right->left=s;

D.s->left=p; s->right=p->right; p->right->left=s; p->right=s;

5.在一个单链表中,已知q所指结点是所指结点p的前驱结点,若在q和p之间插入结点S,则执行

A.s->next=p->next; p->next=s;

B.p->next=s->next; s->next=p;

C.q->next=s; s->next=p;

D.p->next=s; s->next=q;

6.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行

A.s->next=p; p->next=s;

B.s->next=p->next; p->next=s;

C.s->next=p->next; p=s;

D.p->next=s; s->next=p;

7.在一个单链表中,若删除p所指结点的后续结点,则执行

A.p->next=p->next->next;

B.p=p->next; p->next=p->next->next;

C.p->next=p->next

D.p=p->next->next

8.假设双链表结点的类型如下:

typedef struct linknode

{int data; /*数据域*/

Struct linknode *llink; /*llink是指向前驱结点的指针域*/

Struct linknode *rlink; /*rlink是指向后续结点的指针域*/

}bnode

下面给出的算法段是要把一个所指新结点作为非空双向链表中的所指结点的前驱结点插入到该双链表中,能正确完成要求的算法段是

A.q->rling=p; q->llink=p->llink; p->llink=q;

p->llink->rlink=q;

B.p->llink=q; q->rlink=p; p->llink->rlink=q; q->llink=p->llink;

C.q->llink=p->llink; q->rlink=p; p->llink->rlink=q; p->llink=q;

D.以上都不对

9.从一个具有n个结点的有序单链表中查找其值等于x结点时,在查找成功的情况下,需平

均比较()个结点。

A.n

B.n/2

C.(n-1)/2

D.O(n㏒2n)

10.给定有n个元素的向量,建立一个有序单链表的时间复杂

A.O(1)

B.O(n)

C.O(n2)

D.O(n㏒2n)

11.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是

A.O(1)

B.O(n)

C.O(n2)

D.O(n㏒2n)

12.向一个栈顶指针为HS的链栈中插入一个s所指结点时,则执行

A.HS->next=s;

B.s->next=HS->next; HS->next=s;

C.s->next=HS; HS=s;

D.s->next=HS; HS=HS->next

13.从一个栈顶指针为HS的链栈中删除一个结点时,用x保存被删除结点的值,则执行A.x=HS; HS=HS->next;

B.x=HS->data;

C.HS=HS->nex

t; x=HS->data;

D.x=HS->data; HS=HS->next;

14.在一个链队中,假设f和r分别为队首和队尾指针,则插入s所指结点的运算是

A.f->next=s; f=s;

B.r->next=s; r=s;

C.s->next=r;r=s;

D.s->next=f; f=s;

15.在一个链队中,假设f和r分队为队首和队尾指针,则删除一个结点的运算是

A.r=f->next;

B.r=r->next;

C.f=f->next;

D.f=r->next;

3.2.2填空题

1.单链表是()的连接存储表示。

2.可以使用()表示树型结构。

3.在双链表中,每个结点有两个指针域,一个指向(1),另一个指向(2)。

4.在一个单链表中的所指结点之前插入一个所指结点时,可执行如下操作:

s->next=(1); p->next=s; t=p->data; p->data=(2); s->data=(3);

5.在一个单链表中删除p所指结点时,应执行如下操作:

q=p->next; p->data=p->next->data; p->next=( ); free(q);

6.带有一个头结点的单链表head为空的条件是( ).

7.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=(1)和

相关文档
最新文档