数据结构课堂习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章绪论
一、单项选择题
1.数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和运算等的学科。
①A.操作对象B.计算方法C.逻辑存储D.数据映象
②A.结构B.关系C.运算D.算法
2.数据结构被形式地定义为(D,R),其中D是①的有限集合,R 是K上的②的有限集合。
①A.算法B.数据元素C.数据操作D.逻辑结构
②A.操作B.映象C.存储D.关系
3.在数据结构中,从逻辑上可以把数据结构分成①。
A.动态结构和静态结构B.紧凑结构和非紧凑结构
C.线性结构和非线性结构D.内部结构和外部结构
4.线性表的顺序存储结构是一种①的存储结构,线性表的链式存储结构是一种②的存储结构。
A.随机存取B.顺序存取C.索引存取D.散列存取5.在计算机存储器内表示时,物理地址和逻辑地址是连续的,称之为
A.逻辑结构B.顺序存储结构
C.链表存储结构D.以上都不对
1. A,B
2. B,D
3. C
4.A,B
5. B
二、填空题
1.数据逻辑结构包括①、②、③和④四种类型。
2.线性结构中元素之间存在①关系,树形结构中元素之间存在②关系,图形结构中元素之间存在③关系。
3.下面程序段的时间复杂度是①。
for(i=0; i for(j=i; j 4.下面程序段的时间复杂度是①。 s=0; for(i=0;i for(j=0; j s+=b[i][j]; sum=s; 5.下面程序段的时间复杂度是①。 for (i=1; i for (j=1; j for (k=1; k 1.集合、线性、树、图 2.一对一、一对多、多对多 3. O(2n) 4. O(2n) 5.O(2n) 线性表 一、填空题 1.设长度为n的顺序线性表在任何位置上插入或删除操作都是等概 率的,则插入一个元素时平均需要向__移动_______个元素,删除一个元素时平均需要向___移动______个元素。 2.线性表的链式存储结构中,元素之间的线性关系是通过结点中的 ________域来实现的。 3.线性表的顺序存储结构中逻辑上相邻的元素,物理位置 __________相邻;线性表的链式存储结构中逻辑上相邻的元素,物理位置__________相邻。 4.对于顺序表,访问结点的时间复杂度为_____,增加、删除结点的 时间复杂度为_____。对于单链表,访问结点的时间复杂度为_____,增加、删除结点的时间复杂度为_____;在已知的结点*p 后插入一个新结点的时间复杂度为____,删除已知结点*p的时间复杂度为____。 5.双向链表中每个结点含有两个指针域,其中一个指针域指向 _______结点,另一个指针域指向______结点。 6.在一个单链表中p所指结点之前插入一个s (值为e)所指结点时, 可执行如下操作: q=head; while (q->next!=p) q=q->next; s= new Node; s->data=e; q->next= ; //填空 s->next= ; //填空 7.在一个单链表中删除p所指结点的后继结点时,应执行以下操作: q= p->next; p->next= _ ___; //填空 free(); //填空 8.在一个单链表中p所指结点之后插入一个s所指结点时,应执行 s->next=__ __和p->next=____的操作。 9.以head为头结点的循环双链表为空时,应满足 head->prior= ,head->next= 。 1. 后,n/2,前,(n-1)/2 2.指针 3.一定,不一定 4.O(1) ,O(n);O(n) ,O(n) ;O(1),O(1) 5.前驱,后继 6. s, p 7. q->next, q 8. p->next, s 9. head, head 二、选择 1.在长度为n的顺序线性表中删除第i个元素(1<=i<=n),则需要向前 移动的元素个数为()。 ⑴n-i ⑵n+1-i ⑶n-1-i ⑷i 2.设指针p指向单链表中的结点A,结点A的后继结点是结点B, 则删除结点B的操作为()。 ⑴p->next=p ⑵p=p->next ⑶p=p->next->next ⑷p->next=p->next->next 3.设指针p指向单链表中结点A,指针q指向单链表中结点A的前 驱结点B,指针s指向被插入的结点X,则在结点A和结点B之间插入结点X的操作为()。 ⑴s->next=p->next;p->next=s; ⑵q->next=s;s->next=p; ⑶p->next=s->next;s->next=p; ⑷p->next=s;s->next=q; 4.在长度为n的顺序线性表中的第i个元素(1<=i<=n+1)之前插入一个 新元素时,则需要向后移动的元素个数为()。 ⑴n-i ⑵n+1-i ⑶n-1-i ⑷i 5.在长度为n的有序线性表中插入一个元素后仍然保持有序的平均 时间复杂度为()。 ⑴O(log2n) ⑵O(1) ⑶O(n2) ⑷O(n) 6.设指针p指向双向链表中的结点A,指针s指向被插入的结点X, 则在结点A之后插入结点X的操作为()。 ⑴p->next=s;s->prior=p; p->next->prior=s;s->next=p->next; ⑵s->prior=p;s->next=p->next;p->next=s;p->next->prior=s; ⑶p->next=s;p->next->prior=s;s->prior=p;s->next->p->next; ⑷s->prior=p;s->next=p->next;p->next->prior=s;p->next=s; 7.指针p指向双向链表中的结点A,则删除结点A的操作是()。 ⑴p->prior->next=p->next;p->next->prior=p->prior;