- 线性结构部分
- 若某语句执行频度为(n+n2log2n+5n2)/n1/2;用大O表示为:
2、下列程序片段的复杂度分别为?
- i=s=0; while (s<n) {i++;s+=i;}
- x=n;y=0; while (x>=(y+1)*(y+1)) y=y+1;
- i=1; while(i<=n) i=i*2;
3、一组待排序序列为(75,18,22,33,1,25,91),目标是升序排列,给出按照基数排序(r=10)、冒泡排序方法执行一趟后的元素分布。
4、在如下数组A中存储了一个线性表,表头指针为A[0].next,试写出该线性表
A 0 1 2 3 4 5 6 7
12 | 50 | 78 | 90 | 34 | 22 | ||
3 | 5 | 7 | 2 | 0 | 4 | 1 |
5、在含n个元素的线性存储表中,删除第i个元素(0<=i<=n-1),需要移动的元素个数为多少?
6、数组int a[7][11]; 的每个元素占4个字节,若按行存储,a[0][0]对应地址为0;则元素a[3][5]对应地址为?
7、一个栈的进栈序列为abcde,则不可能的出栈序列为:
- edbca B. decba C. dceba D. abcde
8、设有一组关键字:{26,14,89,01,68,20,84,27,55,22,21,79},采用哈希函数:H(key)=key mod 13,采用线性开型寻址方法解决溢出。
1)在0∽12的散列地址空间中对该关键字序列构造哈希表。
2)搜索元素27,55所花的比较次数各是多少?
3)给出删除元素01后的散列表。
9、试比较数组、链表和间接寻址的优缺点;Hash和跳表的优缺点;模拟指针的优点。
10、给出k维数组的行、列优先映射公式。
11、举例特殊矩阵映射到一维数组。(反对角、等对角、上三角等)
- 层次结构部分
1、二叉树的层次遍历序列为ABCDEFG,中序遍历序列为FDBACEG,写出该二叉树的后序遍历序列。
2、某二叉搜索树的层次遍历序列为(30,20,50,10,60,70),该二叉搜索树是不是完全二叉树?为什么?
3、叙述图的深度优先遍历和宽度优先遍历中,堆栈和队列的作用。
4、递增有序单向链表,有重复元素,设计算法去除重复元素。例如 (10,12,12,27,38) 去除重复元素后将变为(10,12,27,38)。叙述算法思想并给出算法实现,分析算法复杂性。
5、二叉树采用二叉链表存储结构,设计算法判断二叉树是否为最大堆。叙述算法思想并给出算法实现。
6、对于完全二叉树(1,2,3,4,5,6,7,8,9,10,11),要求:
1) 写出其前序序列;
2) 将其调整为最大堆,写出调整后的序列;
3) 插入元素12,写出插入以后的堆。
7、给定一输入序列{ 16, 3, 7, 11, 9, 26, 18, 14, 15 }
1)构建二叉搜索树。
2)构建AVL搜索树。
8、M叉搜索树、B树的基本概念,以及B树的插入删除(参见课堂练习)。
9、依次插入元素:3, 1, 4, 5, 9, 2, 6, 8, 7, 0 到初始为空的2-3 树,并给出每步操作需要读写盘的块数。(假设每次操作都需要重新读入索引)。
- 网状结构部分
- 生成最小生成树的Kruskal算法中,如何判定是否存在回路 ?
- 叙述拓扑排序的算法思想。并给出下图的所有拓扑序列。
3、有如下的网络邻接矩阵,画出该图;给出图的邻接链表表示;画出一棵最小生成树。
- 算法设计部分
- 线性表使用公式化描述方式存储。编写一个函数,从一给定的线性表A中删除值在x~y(x<=y)之间(包含x和y)的所有元素,要求以较高的效率来实现,并给出时间复杂度。
- 上题目中线性表以单链表实现。
- 在二叉树上给出任意两个叶子节点,给出求出其最近共同祖先的算法和复杂性。(假设树以三叉存储)。
4、某学院有20门必修课程,使用1、2、3、…、19、20作为课程编号。(i,j)表示课程i是课程j的先行课,即课程i必须在课程j之前的学期开设。对任意给出的先行课关系集合S={(1,2},(1,3),(3,5), (2,6),…},如何计算该学院的20门必修课程至少需要安排多少个学期才能符合要求?
5、一个班级有36个学生,使用1、2、3、…、35、36作为学号。(i,j)表示学生i和学生j在一个宿舍。对任意给出的集合S={(1,2},(6,9),(15,17), (1,6),…},如何得到集合S共包含多少个不同的宿舍?