当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 学习笔记 > 数据结构试题库,含答案

数据结构试题库,含答案 时间:2018-08-21      来源:未知

学习IT技术最多的就是练习题了,让理论与实践相结合,这样学习才是有效的,下面是华清的美女学霸,在一次次测试中,总结的常见的数据结构题,都是比较常见的哦,可以收藏来学习。

1. 选择题(共二十题,1~10题每题2分, 11~20题每题3分)

1. 数据结构通常研究数据的( )及运算。

A. 物理结构和逻辑结构 B. 存储和抽象 C. 理想和抽象 D. 理想与逻辑

2. 数据结构中,在逻辑上可以把数据结构分成( )。

A. 动态结构和静态结构B. 紧凑结构和非紧凑结构

D. 内部结构和外部结构

C. 线性结构和非线性结构

3. 若f(n)=3n2+2n+1, 则f(n)= ()。

B. O(n)C. O(2n)D. O(3n2)

A. O(n2)

4. 用单链表存储的线性表,存储的每个节点需要两个域,一个是数据域,另一个是(

)。

A. 当前节点的所在地址B. 后继节点的所在地址

C. 空指针域D. 空闲域

5. 设线性链表中节点的结构为(data, next),已知指针q所指节点是指针节点p的直接前驱,若在*q与*p之间插入节点*s,则应执行()操作。

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

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

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

6. 设线性链表中的节点的结构为(data, next),已知指针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;

7. 设线性链表中的节点的结构为(data, next),若想删除节点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. p指向线性链表中的某一节点,则在线性链表的表尾插入节点s的语句序列是()。

A. while(p->next!=NULL) p=p->next;p->next=s;s->next=NULL;

B. while(p!=NULL) p=p->next;p->next=s;s->next=NULL;

C. while(p->next!=NULL) p=p->next;s->next=p;p->next=NULL;

D. while(p!=NULL) p=p->next->next;p->next=s;s->next=p->next;

9. 一个栈的入栈序列为a,b,c,d,e,则出栈序列不可能的是()。

10. 如果以链表作为栈的存储结构,则出栈操作时()。

11. 如果以链表作为栈的存储结构,则入栈操作时()。

12. 在队列中存取数据的原则是()

A. 先进先出 B. 后进先出 C. 先进后出 D. 随意进出

13. 栈和队列的共同点是()

14. 判断一个队列sp为空的条件是()。

A. sp->front==sp->rear B. sp->front==sp->rear+1 C. sp->front==sp->rear-1 D. sp->front==NULL

15. 将含100个节点的完全二叉树从根这一层开始,每层上从左到右依次对节点编号,根节点的编号为1.编号为49的节点x的右孩子编号为()。

16. 先访问节点的左子树,然后访问该节点,最后访问节点的右子树,这种遍历称为(

)。

A. 中序遍历 B. 后序遍历 C. 先序遍历 D. 层次遍历

17. 一个具有767个节点的完全二叉树,其叶子节点个数为()。

18. 深度为 k 的完全二叉树中,最少有多少个结点()

A 2k-1-1B 2k-1C 2k-1+1D 2k-1

19. 对于二叉树的遍历算法,下面描述正确的是()

A void pre_order(bitree* root){//先序 printf("%d ",root->data);

pre_order(root->lchild);

pre_order(root->rchild);}

B void in_order(bitree* root){//中序 in_order(root->lchild);

in_order(root->rchild);

printf("%d ",root->data);}

C void post_order(bitree* root){//后序 post_order(root->lchild);

printf("%d ",root->data);

post_order(root->rchild);}

D void in_order(bitree* root){//中序 printf("%d ",root->data);

in_order(root->lchild);

in_order(root->rchild);}

20. 设指针变量 p 指向单链表中节点 A,若删除单链表中的节点 A,则需要修改指针的操作顺序为 ( )

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

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

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

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

2. 简答题(共3题,21题10分,22~23题各20分,编程题可忽略头文件)

21. 代码实现一个单链表的建立,头部插入,头部删除。

22. 代码实现一棵12个节点的完全二叉树

(1)递归实现节点的创建初始化。

(2)递归方法实现树的后序遍历。

(3)用顺序队列方法实现层次遍历。

23. 代码实现顺序循环队列的创建,入队,出队,测长,判空,判满,打印功能。

上一篇:数据结构基本知识点总结,比较全面

下一篇:Makefile详细教程,附带经典案例

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部