数据结构选填题

  1. c语言版数据结构中自定义结构通常用……………………………… ( C )
    A、变量 B、 共同体 C、 结构体 D、类

  2. 算法分析的目的是( C )。
    A.找出数据结构的合理性 B.研究算法中的输入和输出的关系
    C.分析算法的效率以求改进 D.分析算法的易懂性和文档性

  3. 以下说法错误的是( D )。
    A.完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达
    B.在三叉链表上,二叉树的求双亲操作很容易实现
    C.在二叉链表上,求根以及求左、右孩子等操作很容易实现
    D.在二叉链表上,求双亲操作的时间性能很好

  4. 将含有41个结点的完全二叉树从根结点开始编号,根为1号,后面按从上到下、从左到右的顺序对结点编号,那么编号为21的双亲结点编号为( A )。
    A.10 B.11 C.41 D.20

  5. 设指针P指向双链表的某一结点,则双链表结构的对称性可用( C )式来刻画。
    A.p->prior->nextp->next->next; B.p->prior->priorp->next-> prior;
    C.p->prior->nextp->next-> prior; D.p->next->nextp->prior->prior;

  6. 设深度为k的二叉树上只有度为0和度为2的结点,则这类二叉树上所含结点总数最少为( C )个。
    A.k+1 B.2k C.2k-1 D.2k+1

  7. 一个栈的入栈序列是a,b,c,d,e,则栈的不可能输出序列( C )。
    A.e,d,c,b,a B.d,e,c,b,a
    C.d,c,e,a,b D.a,b,c,d,e

  8. 设森林T中有4棵树,结点个数分别是n1、n2、n3、n4,当把森林T转换成一棵二叉树后,根结点的右子树上有( D )个结点。
    A.n1 - 1 B.n1 C.n1 + n2 + n3 D.n2 + n3 + n4

  9. 从栈顶指针为Top的链栈中删除一个结点,并将被删结点的值保存到x中其操作步骤为( A )。
    A.x=Top->data;Top=Top->next; B.Top=Top->next; x=Top->data;
    C.x=Top; Top=Top->next; D.x=Top->data;

  10. n个结点的线索二叉树中的线索数目为( C )。
    A.(n-1)个 B.n个 C.(n+1)个 D.(n+2)个

  11. 设串S1=‘ABCDEFG’,S2=‘PQRST’,函数StringConcat(X,Y)返回X和Y串的连接串,SubString(S,I,J)返回串S中从序号I的字符开始的J个字符组成的子串,StringLength(S)返回串S的长度,则StringConcat(SubString(S1,2,StringLength(S2)),SubString(S1,StringLength(S2),2))的结果串是( D )。
    A.‘BCDEF’ B.‘BCDEFG’ C.‘BCDQRST’ D.‘BCDEFEF’

  12. 二维数组A[1…10,1…20]采用列序为主序方式存储,每个数据元素占1个存储单元,且A[1,1]的存储地址是200,则A[6,12]的存储地址是( B )。
    A.317 B.315 C.313 D.730

  13. 设有两个无向图G =(V,E),G’ =(V’,E’),如果G’是G的生成树,则下列说法不正确的是( D)。
    A.G’是G的子图 B.G’是G的极小子图,且V’ = V
    C.G’是G的五环子图 D.G’是G的连通分量

  14. 将长度为n 的单链表接在长度为m的单链表之后的算法的时间复杂度为( C )
    A、O(1) B、O(n) C、O(m) D、O(m+n)

  15. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的( B )倍。
    A.1/2 B.1 C.2 D.4

  16. 设图G采用邻接表存储,则拓扑排序算法的时间复杂度为( B )。
    A.O(n) B.O(n + e) C.O(n * n) D.O(n * e)

a
d
c
e
b
17. 如图二叉排序树中,
当删除节点a时
为保持仍然是二叉排序树,
可将以下哪节点替换……………………………………………………………( D )
A、 b B、 c C、 d D、 e
18. 用某种排序方法对序列(25、84、21、47、15、27、68、35、20)进行排序,记录序列的变化情况如下:
25 84 21 47 15 27 68 35 20
20 15 21 25 47 27 68 35 84
15 20 21 25 35 27 47 68 84
15 20 21 25 27 35 47 68 84
则采用的排序方法是( C  )。
  A.直接选择排序 B.气泡排序 C.快速排序 D.2-路归并排序

  1. 具有24个记录的序列,采用气泡排序最少的比较次数为(B )。
       A. 1 B. 23 C. 24 D. 529
  2. 若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为( D )
    A.顺序存储结构 B.链式存储结构 C.索引存储结构 D.散列存储结构

二.填空题

  1. 设n为正数,试确定以下程序段中前面加@的语句的频度: n^2
    k=0
    for (i=1,i<=n;i++)
    for(j=i;j<=n;j++)
    @k++

  2. 常见时间复杂度的量级有:常数阶O( 1 )、对数阶O( log2 n )、线性阶O( n )、平方阶O( n^2 )和指数阶O( 2^n )。通常认为,具有指数阶量级的算法是 最复杂 的。

  3. 具有100个结点的完全二叉树的深度是 7 。

  4. 设有30个值,用它们构造一棵哈夫曼树,则该哈夫曼树中共有 59 个结点。

  5. 假设以S和X分别表示入栈和出栈操作,则对输入序列a,b,c,d,e进行一系列栈操作SSXSXSSXXXX之后,得到的输出序列为 bceda 。

  6. 设有一个空栈,现在输入序列为1,2,3,4,5,经过push,push,pop,push,pop,push,后栈顶指针所指元素是 4 。

  7. 设无向图G中顶点数为n,则图G最少有 0 条边,最多有 n(n-1)/2 条边。
    若G为有向图,有n个顶点,则图至少有 0 条边,最多有 n(n-1) 条边。

  8. 折半查找方法仅适用于,这样的表:表中的记录必须 有序 ,其存储结构必须是 顺序存储 。

  9. 已知广义表LS=(a,(b,c,d),c),运用GetHead和GetTail函数取出原子d的运算过程为 。gettail(gettail(gethead(gethead(gettail(LS)))))

  10. 在插入排序和选择排序中,若初始数据基本正序,则选用 插入排序 ,若初始数据基本反序,则选用 选择排序。

择 1.若结点的存储地址与其关键字之间存在某种函数关系,则称这种存储结构为( ) A.顺序存储结构 B.链式存储结构 C.线性存储结构 D.散列存储结构 2.在长度为100的顺序表的第10个位置上插入个元素,元素的移动次数为( ) A.90 B.91 C.89 D.92 3.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( ) A.顺序表 B.用头指针表示的单循环链表C.用尾指针表示的单循环链表D.单链表 4.若进栈序列为c, a,b,则通过入出栈操作可能得到的a,b,c的不同排列个数为( ) A.4 B.5 C.3 D.2 5.为查找某特定单词在文本中出现的位置,可应用的串运算是( ) A.插入 B.删除 C.串联接 D.子串定位 7.三维数组A[4][5][6]按行优先存储方法存储在内存中,若每个元素占2个存储单元,且数组中第个元素的存储地址为120,则元素A[2][4][5]的存储地址为( ) A.296 B.298 C.300 D.302 6.下列陈述中正确的是( ) A.二叉树是度为2的有序树 B.二叉树中结点只有个孩子时无左右之分 C.二叉树中必有度为2的结点D.二叉树中最多只有两棵子树,并且有左右之分 7.n个叶子的霍夫曼树结点总数为( ) A.2n B.2n-1 C.2n+1 D.不能确定 8.有向图的邻接矩阵中,每列元素之和为该顶点的( ) A.度 B.入度 C.出度 D.权值 9.100个结点完全二叉树高度是( ) A.9 B.10 C.11 D.12 10.n个顶点的无向完全图中含有向边的数目最多为( ) A.n-1 B.n C.n(n-1)/2 D.n(n-1) 11.已知个有向图如右所示,则从顶点a出发进行深度优先偏历,不可能得到的DFS序列为( ) A.a d b e f c B.a d c e f b C.a d c b f e D.a d e f c b 12.在最好和最坏情况下的时间复杂度均为O(nlogn)且稳定的排序方法是( ) A.快速排序 O(n*n) B.堆排序 C.归并排序 D.基数排序 13.不可能生成右图所示二叉排序树的关键字序列是( ) A.4 5 3 1 2 B.4 2 5 3 1 C.4 5 2 1 3 D.4 2 3 1 5 14.平衡二叉树中任结点的( ) A.左、右子树的高度均相同 B.左、右子树高度差的绝对值不超过1 C.左子树的高度均大于右子树的高度 D.左子树的高度均小于右子树的高度 15.在VSAM文件的控制区间中,记录的存储方式为( ) A.无序顺序 B.有序顺序 C.无序链接 D.有序链接 二、 16.若个算法中的语句频度为T(n)=3720n3/2+4nlogn,则算法的时间复杂度为________。 17.单链表中若在指针p所指的结点之后插入指针s所指结点,则可用下列两个语句实现该操作,是_s->next=p->next和_______ _。 18.假以S和X分别表示进栈和退栈操作,则对输入序列a,b,c,d,e进行系列栈操作SSXSXXSSXX之后,得到的输出序列为________。 19.串S=″I am a worker″的长度是________。 20.假10阶下三角矩阵按列优顺序压缩存储维数组C中,则C数组的大小为________。 21.在n个结点的二叉链表中,有________个空指针。 22.对关键字序列(52,80,63,44,48,21)进行趟简单择排序之后得到的结果为________。 23.由10个结点构成的二叉排序树,在等概率查找的假下,查找成功时的平均查找长度的最大值可能达到________,最小为 。 24头指针为f,尾指针为r的循环队列判断空的条件是 (r+1)%max==f 。 三、问答 1.已知个6行5列的稀疏矩阵中非零元的值分别为:9,41,6,8,-54,5和-8,它们在矩阵中的列号依次为:1,4,5,1,2,4和5,其行值依次为1,1,2,2,3和5。请写出该稀疏矩阵。 2.已知二叉树树T的先序遍历序列为ABCDE,中序遍历序列为CBDEA。请画出二叉树T。 3.对关键字序列(72,87,61,23,94,16,05,58)进行堆排序,使之按关键字递减次序排列。请写出排序过程中得到的初始堆和前三趟的序列状态。 初始堆:_94,87,。。。_______ 第1趟:{94},87,72,61,58,23,16,5 第2趟:{94,87},72,58,61,5, 23,16, 4.在关键字序列(07,12,15,18,27,32,41,92)中用二分查找法查找和给定值41相等的关键字,请写出查找过程中依次和给定值“41”比较的关键字。平均查找长度。 ASL=(1+2+3)/8= 霍夫曼树:给定若干关键字在某次通信中出现频率,要求构造霍夫曼树并求每个结点编码。a,b,c,d,e,f:2,5,7,8,12,30 关键字序列:4,7,11,14,49,54,散列函数H(key)=key%7,散列表长0。。6,线性探测法处理冲突,构造该散列表。 关键字序列: 14,7,11,4,49,54,写出直接插入排序,起泡排序,简单择排序(快速排序)每趟结果。 初始序列:{14,7,11,4,49,54} 第趟{4,7,11},14,{49,54} 第二趟:4,{7,11},14, 49,{54} 第三趟4,7,{11},14, 49,{54} 五、算法计 .假二叉树T采用如下定义的存储结构: typedef struct node { DataType data; struct node *lchild,*rchild; }BinTree;
### 关于 BUAA 数据结构 第三次作业 的 目前提供的引用内容并未直接提及北京航空航天大学(BUAA)数据结构课程第三次作业的具体目或解答。然而,可以从些间接的信息推断可能涉及的内容。 #### 可能涉及的知识点 根据引用中的描述[^4],可以推测数据结构课程可能会考察关于树的相关知识点,尤其是二叉树的性质及其计算方法。例如: - **总结点数的计算**:如果棵完全二叉树有不同度数的结点数量已知,则可以通过公式 `sum(所有结点个数)` 和 `sum(叶子节点个数)` 来求解具体数值。 ```python # 计算总节点数和叶子节点数的例子 degree_2_nodes = 20 degree_1_nodes = 10 degree_0_nodes_root = 1 total_nodes = (degree_2_nodes * 4) + (degree_1_nodes * 3) + (degree_0_nodes_root * 2) + (degree_1_nodes * 1) + 1 leaf_nodes = total_nodes - degree_2_nodes - degree_1_nodes - degree_0_nodes_root ``` 此部分逻辑可作为的基础之。 另外,在其他引用中提到的排序算法实现[^3]以及字符串处理等内容也可能成为考试的重点方向。比如加密映射表的应用场景或者单词查找等基础操作均有可能被计成相应类型的试。 综上所述,虽然无法确切给出第三次作业里每道具体的目答案,但从上述分析可以看出这些方面都是值得重点关注复习之处。 ### 提供段代码示例用于理解某些概念 下面展示了个简单的快速排序函数实现过程,这有助于加深对于排序类问的理解: ```python def quick_sort(array): if len(array) <= 1: return array else: pivot = array[len(array)//2] left = [x for x in array if x < pivot] middle = [x for x in array if x == pivot] right = [x for x in array if x > pivot] return quick_sort(left)+middle+quick_sort(right) # 测试用例 test_array = [3,6,8,10,1,2,1] print("Sorted Array:", quick_sort(test_array)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值