浙江工商大学程序设计2004考研试题研究生入学考试试题考研真题
● 摘要
杭州商学院2004年硕士研究生入学考试试卷(A 卷)
招生专业:管理科学与工程
考试科目:423程序设计
考试时间:3小时
一、简答题(本大题共5小题,每小题5分,共计25分)
1、试举例说明对相同的逻辑结构,同一种运算在不同的存储方式下实现,其运算效率不同。
2、给出下算法的时间复杂度:
main( )
{
int x , n , y ;
scanf(“%d”, &n);
x=n; y=0;
while(x>=(y+1)(y+1))
y++;
}
3、表示一个有1000个顶点、1000条边的有向图的邻接矩阵有多少个矩阵元素?是否是稀疏矩阵?
4、对链表设置表头结点的作用是什么?(至少说出2条好处)
5、快速排序在什么情况下排序算法产生恶化,原因是什么?
二、给出下面问题的算法函数描述(本大题共3小题,每小题10分,共计30分)
1、 设计一个将单循环链表逆置的算法函数。
2、 给定一棵用二叉链表表示的二叉树,每个结点都有2个指针(lchild ,rchild ),分别用来指向其左右、子女,该树的根结点指针为t ,试编写一个非递归求二叉树的叶子结点数目的算法函数。
3、 设无向图采用邻接矩阵方法存储,请给出其广度优先搜索的算法函数。
三、下面是一段电文{CASE TAT A SA},根据字符出现的频率做权值构造一棵哈夫曼树,并给出每个字符的哈夫曼编码。(本大题共1小题,每小题10分,共计10分)
四、设散列表为HT[0..16],即表的大小为m=17。现采用双散列法解决冲突。散列函数为:H0(key )=key%13;注:%是求余数运算(=mod),
Hi=(REV (key+1)%13+1)%17;i=1,2,3,…,m-1
其中,函数REV (x )表示颠倒10进制数x 的各位,如REV (37)=73,REV (7)=7等。若插入的关键码序列为{37,8,31,20,19,18,53,27}。试画出插入这8个关键码后的散列表。(本大题共1小题,每小题10分,共计10分)
五、算法及程序填空(本大题共4小题,共计10个空,每个空4分,共计40分)
1、 下算法程序是在栈顶指针为HS 的链表中,计算该链栈中结点个数的函数。 函数:
typedef struct node1
{
int data;
struct node1 next;
}node;
int count(HS )