数据结构基础题(第一篇)
来源:互联网 发布:淘宝二级页面打不开 编辑:程序博客网 时间:2024/06/09 20:59
1)阅读下列函数说明和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 && (a) ) p = p->next;if (p != first){(b) ;< 结点类型说明 >*current = p;current->prior->next = current->next;current->next->prior = current->prior;p = current->prior;while (p != first && (c) ) p = p->prior;current->next = (d) ;current->prior = p;p->next->prior = current;p->next = (e) ;}elseprintf(“Sorry. Not find!\n”); \*没找到*\}
解答如下:
(a) p->data!=x
(b) p->freq++
(c) current->freq>p->freq
(d) p->next
(e) current
2)有一个用数组 C[1..m]表示的环形队列,m 为数组的长度。假设 f 为队头元素在数组中的位置,r 为队尾元素的后一位置(按顺时针方向)。若队列非空,则计算队列中元素个数的公式应为?
解答:公式为 (m+r-f)mod m
3)假设要存储一个数据集,数据维持有序,对其的操作只有插入、删除和顺序遍历,综合存储效率和运行速度,下列哪种数据结构是最适合的是?
A) 数组
B) 链表
C) 哈希表
D) 队列
解答:选择“链表”,即选择B)
4)就分类算法所用的辅助空间而言,堆分类、快速分类和归并分类的关系是?
A) 堆分类<快速分类<归并分类
B) 堆分类<归并分类<快速分类
C) 堆分类>归并分类>快速分类
D) 堆分类>快速分类>归并分类
解答:在分类算法里,堆分类的辅助空间为O(1),快速分类的辅助空间为O(nlogn),归并分类的辅助空间为O(n),由于O(n)>O(nlogn)>O(1),所以按所需的辅助空间从大到小排序时得到:
堆分类<快速分类<归并分类
即选择A)
5) 在堆排序算法中我们用一个数组A来模拟二叉树T,如果该A[0]存放的是T的根节点,那么A0”>K的父亲节点是?
A) (K-1)/2
B) K/2
C) (K+1)/2
D) 都不对
解答:
a)如果二叉树从1,2,3,…,n进行编号,则节点i 的父节点编号为[i/2](向下取整);
b)如果二叉树从0,1,2,…,m进行编号,则节点i的父节点编号为[(i-1)/2] (向下取整);
注意节点的起点编号,前者为1,后者为0,所以公式要进行相应的调整,由于题目编号的起点为A[0]即以0开始,所以父节点编号为(k-1)/2,即选A)
6)关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照关键码值递增的次序进行排序,若采用初始步长为4的Shell的排序法,则一趟扫描的结果是? ;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是? 。
解答:前者为QACSQDFXRHMY,后者为FHCDQAMQRSYX;
6.1)希尔排序,步长n,然后每次减半,直到最后为1。即 n/2 –>n/(2^2) –> n/(2^3) –> 1。比如当步长n=4时,那么步长依次减半,即 4 –> 2 –> 1。
题目所给为4,因此,上来1,5,9号元素(即QQR)进行比较,在这三个位置上进行排序,即还是QQR
然后2,6,10号元素(即HAD)进行比较,在这三个位置上进行排序,即变成了ADH,
依次排序后面的,即可获得QACSQDFXRHMY。
6.2)快排,主要看排序时,从后往前和从前往后的比较过程中,加不加等号。
以第一个元素为pivot,从后往前,遇到第一个比pivot小的,则换到前面,然后从前面开始往后遍历,遇到第一个比pivot大的则换到后面,此题答案对应的是没有等号的情况,即严格大才会换位置。
故为 FHCDQAMQRSYX
如图(1)所示:
- 数据结构基础题(第一篇)
- yaffs基础第一篇——yaffs中的核心数据结构
- yaffs基础第一篇——yaffs中的核心数据结构
- java数据结构与算法分析总结第一篇(基础)
- 数据结构--第一篇 绪论
- 研发类笔试题基础(第一篇
- 智力类笔试题基础(第一篇
- Windows笔试题基础(第一篇
- XML基础<第一篇>
- XML基础<第一篇>
- css基础---第一篇
- Android基础第一篇
- php基础第一篇
- java基础第一篇
- Java基础复习第一篇
- PhotoshopCS5 第一篇 图像基础
- lua 基础学习第一篇
- 第一篇 基础网络编程
- HDU 1695 GCD(欧拉函数+容斥原理)
- php学习--3 流程控制语句,字符串操作
- phpstorm 8.x注册码
- HDU5011-Game-西安赛区网络赛-博弈论-水题
- 2.1.3 Debugging of Shaders (about vertex input parameters) 着色器的调试(关于顶点输入参数)
- 数据结构基础题(第一篇)
- C/C++专项练习 (三)
- Android UI设计:ViewFlipper使图片循环滑动
- 计算机中的有符号数和无符号数
- 智能灯之Android控制端
- PHP 杂项函数
- 二维数组、指针、步长
- 官网下载Google Chrome离线安装包
- ExtJS Grid 每个Cell都显示tooltip