(科目:代码829,名称程序设计与数据结构)
一、考查目标
本复试题目包括计算机科学与技术专业两门主要课程:程序设计、数据结构,希望了解考生对该两门课程掌握的情况,主要考查:
1、掌握结构化程序设计的基本方法,了解面向对象程序设计的基本思路,对两种方法编写的程序有读、改、写的能力,能实现计算机常用算法的编制。
2、对计算机语言有较好的了解,能识别程序语言中的语法错误,能用像C++等语言编程,知道程序设计技巧和程序设计风格。
3、掌握数据结构的基本概念、基本原理和基本方法。
4、各类数据结构的特征、操作、存储表示和应用。
5、查找、内部排序与文件。
6、各种算法性能的分析与评价。
7、使用C(或C++)语言的风格描述算法和进行程序设计,具备综合应用相关知识分析问题和解决问题的能力。
二、考试形式与试卷结构
(一)试卷成绩及考试时间
本试卷满分为150分。考试时间为180分钟。
(二)答题方式
笔试
(三)试卷内容结构
程序设计内容占50分,其中程序设计基本知识约10分、读程序和分析程序的能力约25分、写程序的能力约15分。
数据结构内容占100分,其中数据结构基本知识约30分、算法分析与评价约30分、算法设计与综合应用约40分。
(四)试卷题型结构
选择题和填空题:共40分
简答题和综合应用题(含读程序):共60分
设计与应用分析题(含编写程序):共50分
三、考查范围
《程序设计部分》
1、像程序设计语言C/C++的发展,程序设计语言词、句子的组成,数据类型与表达式等概念,程序的基本组成,算法的概念和表示。
2、程序设计的上机过程,运行调试中常见错误的鉴别。
3、顺序结构、选择结构和循环结构语句的语法规定,能运用三种结构编写程序。
4、了解常用的程序风格和规范。
5、掌握函数组装程序的意义,对库函数、自定义函数、局部变量和全程变量有正确的知识,并能用函数进行程序设计,了解递归函数。
6、对批量数据的处理,能正确运用数组或结构体进行程序设计,能熟练处理字符数据。
7、了解指针、文件和异常处理、类与对象、封装、重载、继承的概念,能读懂面向对象程序。
《数据结构部分》
1、抽象数据类型,数据的逻辑结构与存储结构,算法基本特性与算法分析方法。
2、线性表的定义、逻辑结构、存储结构、基本操作、基本算法性能的分析。
3、栈的定义、特性、存储结构、基本操作、基本算法性能的分析,栈与递归算法及其基本应用。
4、队列的定义、特性、存储结构、基本操作、基本算法性能的分析以及基本应用。
5、串的定义、基本概念、存储结构、基本操作及基本应用;
6、数组的类型定义、存储结构与基本操作;特殊矩阵和稀疏矩阵的压缩存储及运算的实现;广义表的定义、基本性质与存储结构。
7、树的基本概念和基本操作;二叉树的基本概念、性质及存储结构;遍历二叉树和线索二叉树;树的存储结构、树与二叉树之间的转换、森林与二叉树之间的转换、树和森林的遍历;哈夫曼树(Huffman)及其应用。
8、图的基本概念和基本操作;图的存储结构;图的遍历、图的连通性问题;有向无环图、最短路径。
9、查找的概念;静态查找表、动态查找表、哈希表;各种查找算法的性能分析及其应用。
10、内部排序的概念;插入排序、快速排序、选择排序、归并排序、基数排序;各种排序算法的评价(稳定性、时间复杂度、空间复杂性度)及其应用。
11、文件的基本概念;顺序文件、索引文件。
四、样题
一、单项选择题:
1.对下列关键字序列用快速排序法进行排序时,速度最快的情形是:【】
A.{25、23、30、17、21、5、9}
B.{5、9、17、21、23、25、30}
C.{30、25、23、21、17、9、5}
D.{21、25、5、17、9、23、30}
二、填空题:
1.广义表D=((),(e),(a,(b,c,d)))的长度是【】
三、简答题:
1.请解释赫夫曼树与赫夫曼编码。
四、综合应用题
1.仔细阅读下列程序,然后回答问题
上述程序的功能(或作用)是什么?
答:
四、算法设计与分析(含程序设计):
1.设线性表的存储定义如下:
#defineMAX100
typedefstructrec
{
KeyTypekey;
ElemTypedata;
}elemnode[MAX];
这里的KeyType和ElemType可以是任何相应的数据类型。
请写出实现直接选择排序(即简单选择排序)的函数(这里的排序结果为升序):
注意:如出现函数的调用,请将被调用函数的算法一起写出。
voidselectsort(elemnoder,intn)