数据结构 试题

前言

这里是 数据结构 系列文章,主要介绍计算机二级考试中的涉及到数据结构的知识点 /
数据结构在计算机科学中处处都有存在,例如编译系统要使用栈、散列表、语法树等;操作系统要使用队列、存储管理表、目录树等等。

关于作者:

转载请注明出处


题目

  1. 在单链表中,增加头结点的目的是

    • 方便运算的实现
    • 使单链表中至少有一个节点
    • 表示表节点中首节点的位置
    • 说明单链表是线性表的链式存储实现
  2. 算法分析的目的是

    • 找出数据结构的合理性
    • 找出算法中输入和输出之间的关系
    • 分析算法的易懂性和可靠性
    • 分析算法的效率以求改进
  3. 对于长度为n的线性表,在最坏情况下,各排序算法所对应的比较次数中正确的是

    • 冒泡排序为n/2
    • 冒泡排序为n
    • 快速排序为n
    • 快速排序为n(n-1)/2
  4. 已知数据表A中每个元素距离其最终位置不远,为节省时间,应采用的算法是

    • 堆排序
    • 直接插入排序
    • 快速排序
    • 直接选择排序
  5. 下列关于栈的描述中,错误的是

    • 栈是先进后出的线性表
    • 栈只能顺序存储
    • 栈具有记忆功能
    • 对栈的插入与删除操作中,不需要改变栈底指针
  6. 试述二叉树中前序遍历,中序遍历,后序遍历的顺序

解析

  1. 头节点不仅表示了表中首节点的位置,而且根据单链表(包含头节点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头节点目的是为了便于运算的实现。

  2. 算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。

  3. 假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序的最坏情况比较次数也是n(n-1)/2。

  4. 当数据表中每个元素距离其最终位置不远,意味着数据表中元素基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少。

  5. 栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。所以栈又被称为先进后出表(FILO-First In LastOut)。线性表可以顺序存储,也可以链式存储,栈是线性表,因此也可以采用链式存储结构。

  6. 根据先左后右的原则下,根据访问根结点的次序,二叉树的遍历分为3种:前序遍历、中序遍历和后序遍历。
    • 前序遍历指,先访问根结点,再遍历左子树,最后遍历右子数,并且在遍历左、右子树的时候,仍然按先访问根结点,再遍历左子树,最后遍历右子数的顺序。
    • 中序遍历指,先遍历左子树,再访问根结点,最后遍历右子数,并且在遍历左、右子树的时候,仍然按先遍历左子树,再访问根结点,最后遍历右子数的顺序。
    • 后序遍历指,先遍历左子树,再遍历右子数,最后访问根结点,并且在遍历左、右子树的时候,仍然是按先遍历左子树,再遍历右子树,最后访问根结点的顺序。

图表复盘

题目数量错误数量错误率
20630%

涉及知识点出现次数占比
链表114%
算法分析114%
排序算法342%
114%
二叉树114%

精度自小数点后两位

小结

目前来看,排序算法频率较为突出,占比最大,其他例如链表、栈也各占14%,二叉树虽只有14%,但涉及到的点确实更为复杂,考了前中后序遍历。
但也不排除有样本数量过少,分析不够准确的点