2020 真题
数据结构部分
一、选择题
- 阅读下列程序,时间复杂度为____。
for(int i=0;i<n;i++)
for(int j=1;j<n;j*=2)
a[i][j]=i*j;
A. O(n) B. O(n2) C. O(log2n) D. O(nlog2n) - 递归过程或函数调用时,处理和返回地址,要用一种____的数据结构。
A. 栈 B.队列 C.循环队列 D.二叉树 - 为 5 个使用频率不等的字符设计哈夫曼编码,不可能的是____。
A. 00,100,101,110,111
B. 000,001,010,011,1
C. 110,001,01,10,11
D. 0000,0001,001,01,1 - 若链表最常用的操作是在最后一个节点之后插入一个节点和删除第一个节
点,则采用____存储方法最节省时间。
A. 单链表 B.双链表 C.循环单链表 D.循环双链表 - 长度为 n 的非空双向链表中,已知点结构为(prior,data,next),指针变量 p 指向第 i 个节点(1≤i≤n),指针变量 q 指向待插入的新节点,则在第 i 个节点前插入新元素的链接关系,修改操作为_____。
A. p->prior=q; q->next=q; p->next->prior=q; q->next = p->next;
B. q->prior=p->prior; p->prior->next=q; q->next=p; p->prior=q->next;
C. q->next=p; p->next=q; q->prior->next=q; q->next=p;
D. p->prior->next=q; q->next=p; q->prior=p->prior; p->prior=q; - 一循环队列 Q,n 为队列最大容量,front,rear 为头尾指针,尾指针指向最后一个元素的下一个位置,已知 front,rear(rear<front)的值,则队列中数据元素个数为_____。
A. (rear-front +n) mod n;
B. rear-front;
C. (n-rear-front)mod n;
D. (n-rear+front) mod n; - 一个已经按元素值排好序的顺序表,长为 125,采用折半查找方法查找与给定值相等的元素,则查找元素成功时至多进行____次关键字比较。
A. 4 B. 5 C. 6 D.7 - 一个具有 1001 个节点的完全二叉树,其叶节点个数为____。
A.250 B. 500 C.505 D.501 - 下列哪一种方法可以独自判断一个有向图是否有环____。
A. 求节点的度 B.拓扑排序 C. 求关键路径 D. 求最短路径 - 高度为 2 的 5 阶 B-树,所含关键字的个数最少是_____。
A. 5 B. 7 C.8 D.14
二、填空题 - 一个二叉树先序遍历:ABHFDECKG,中序遍历:HBDFAEKCG,则后序遍历顺序为:______。
- 二维数组 A[6][10],每个元素占 4 个存储单元,按列优先存储 A[0][0]地址为860,则 A[3][5]存储地址为____。
- 森林中有 4 棵树,每棵树节点个数依次为 n1,n2,n3,n4,把森林转化为二叉树后,根节点右子树有___个节点。
- 一组关键字为(45,80,55,40,42,85)利用堆排序建立的初始堆(大顶堆)为_______。
- 一棵完全二叉树的第 6 层(根为第一层)有 8 个叶节点,则完全二叉树节点最多有_______。
三、综合题 - (证明题)一棵度为 m 的树,树中有 n1 个度为 1 的节点,n2 个度为 2 的节点,n3 个度为 3 的节点,以此类推,Nm 是度为 m 的节点个数,证明有多少度为0 的节点。(写出推导过程)
- 按关键字 4,5,6,2,1,3 输入顺序构造一棵平衡二叉树(AVL)
(1)画出构造平衡二叉树的过程。
(2)画出删除节点 4 后的平衡二叉树。 - 有 V1 到 V6 共 6 个小区将要建设连通的燃气管道,各路线铺设成本如下图,
问:将供气站建设在哪个小区可以使成本最低?(应该说怎么铺设管道更好)
19. 散列函数 H(k)=k%13,散列表地址空间 0-12,用线性探测法解决冲突,将关键字(18,22,78,205,40,16,35,104,61)依次存入,试构造散列表。
(1)画出插入 9 个字后的散列表。
(2)计算等概率下查找成功时的平均搜索长度 ASL。
20. 待排序的数据序列为{80,42,175,16,90,25,98,50,36,88}写出快速排序每次排序的结果。
四、写程序
21. 使用带头节点的单链表表示一个整数系数一元多项式,且多项式按指数升序排列,设计算法实现两个多项式相加运算。
(1)按要求定义一元多项式存储结构
(2)若 head1,head2 为两个多项式链表头指针,编写函数实现 2 个多项式相加运算,要求函数返回值生成新的结果多项式的头指针。