数据结构试题库,含答案

2019-03-07  本文已影响0人  cdhqyj

学习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. 代码实现顺序循环队列的创建,入队,出队,测长,判空,判满,打印功能。

上一篇下一篇

猜你喜欢

热点阅读