数据结构基础题(第一篇)

来源:互联网 发布:淘宝二级页面打不开 编辑:程序博客网 时间: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)所示:

这里写图片描述

图(1)希尔排序和快速排序,在第一次扫描时的详细过程

0 0