一、单项选择题。(每个选项3分,20个选项,共60分)
1. 在一个单链表中,若p所指的结点不是最后结点,在p所指结点之后插进s所指结点,则应执行操纵( B )。
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
2. 在下列排序方法中,不稳定的方法有( C )。
A. 回并排序与基数排序
B. 插进排序与希尔排序
C. 堆排序与快速排序
D. 选择排序与冒泡排序
3. 在多级存储体系中,“Cache-主存”结构的作用是解决( D )的题目。
A. 主存容量不足
B. 辅存与CPU 速度不匹配
C. 主存与辅存速度不匹配
D. 主存与CPU速度不匹配
4. 在需要经常查找结点的先驱与后继的场合中,使用( B )比较合适。
A. 单链表
B. 循环链表
C. 链栈
5. 带头结点的单链表head为空的判定条件( B )。
A. head=NULL
B. head->next=NULL
C. head->next=head
D. head!=NULL
6. 将一个递回算法改为对应的非递回算法时,通常需要使用( D )。
A. 优先队列
B. 队列
C. 循环队列
D. 栈
7. 下列描述的不是链表的优点是( C )。
A. 逻辑上相邻的结点物理上不必邻接
B. 插进、删除运算操纵方便,不必移动结点
C. 所需存储空间比线性表节省
D. 无需事先估计存储空间的大小
8. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句INSERT、DELETE、UPDATE实现( D )功能。
A. 数据查询
B. 数据控制
C. 数据定义
D. 数据操纵
9. 设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有m(m>0)个叶子结点,那么该二叉树上的结点总数为( B )。
A. 2m+1
B. 2m-1
C. 2(m-1)
D. 2m
10. TCP/IP协议栈的网络层的主要功能是通过( A )来完成的。
A. IP协议
B. TCP协议
C. 以太网协议
D. IGP协议
11. 实现不同的作业处理方式(如:批处理、分时处理、实时处理等),主要是基于操纵系统对( A )治理采取了不同的策略。
A. 处理机
B. 存储
C. 数据库
D. 文件
12. 下面关于编译系统和解释系统的观点中,错误的是( A )。
A. 解释程序不产生目标代码,它直接执行源程序或源程序的内部形式
B. 使用编译系统时会区分编译阶段和运行阶段
C. 一般来说,解释系统比编译系统复杂,但是可移植性好
D. 一般来说,建立在编译基础上的系统在执行速度上要优于建立在解释执行基础上的系统
13. 散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址。由于散列函数不是一对一的关系,所以
选择好的( D )方法是散列文件的关键。
A. 散列函数
B. 除余法中的质数
C. 冲突处理
D. 散列函数和冲突处理
14. 衡量查找算法效率的主要标准是( C )。
A. 元素个数
B. 所需的存储量
C. 均匀查找长度
D. 算法难易程度
15. 对于#include A. #include B. #include “filename.h”只搜索用户工作路径 C. #include D. 两者可能等价 16. 类定义的外部,可以被访问的成员有( C )。 A. 所有类成员 B. private或protected的类成员 C. public的类成员 D. public或private的类成员 17. 下列的模板说明中,正确的有( A,C )(两个答案)。 A. template B. template C. template D. template 18. 中断响应时间是指( C )。 A. 从中断处理开始到中断处理结束所用的时间 B. 从发出中断请求到中断处理结束所用的时间 C. 从发出中断请求到进进中断处理所用的时间 D. 从中断处理结束到再次中断请求的时间 19. ( A )面向对象程序设计语言不同于其他语言的主要特点。 A. 继续性 B. 消息传递 C. 多态性 D. 封装性 20. TCP/IP模型的体系结构中,ICMP协议属于( B )。 A. 应用层 B. 网络层 C. 数据链路层 D. 传输层 二、填空题。(每空4分,总计40分) 1. 阅读下列说明和流程图,将应填进(n)的字句写在答题纸的对应栏内。 【说明】 正弦函数可以用如下的泰勒级数展开式来计算: 下面的流程图描述了利用上述展开式计算并打印sin(x)的近似值的过程,其中用E(>0)表示误差要求,小于该误差即可结束计算,打印结果。 【流程图】 2. 阅读下列函数说明和C代码,将应填进(n)处的字句写在答题纸的对应栏内。 【说明】设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向先驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0.每当在链表上进行一次L.Locate(x)操纵时,令元素值x的结点的访问频度freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。 【函数】 void Locate(int &x) { <结点类型说明> *p=first->next; while(p!=first && p->data!=x ) p=p->next; if (p!=first) { p->freq++ ; <结点类型说明> *current=p; current->prior->next=current->next; current->next->prior=current->prior; p=current->prior; while(p!=first && current->freq>p->freq ) p=p->prior; current->next= p->next ; current->prior=p; p->next->prior=current; p->next= current ; } else printf(“Sorry. Not find!\ ”); \\*没找到*\\ } 三、附加题(30分) “背包题目”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,…,wn,希看从N件物品中选择若干物品,所选物品的重量之和恰能放进该背包,即所选物品的重量之和即是S。递回和非递回解法都能求得“背包题目”的一组解,试写出“背包题目”的非递回解法。