【计算题2022】考研数据结构计算题型整理(转载请注明出处)

数据结构计算题

题源来自《王道数据结构》


一、概论

1. 时间复杂度题型

1.1 循环主体中变量参与循环条件的判断

  • 方法:找出主体语句中与T(n)成正比的循环变量,将其代入条件中进行计算

  • 例题1:

    int i = 1;
    while(i<=n)
    	i = i*2;
    

    i * 2的次数正是主体语句的执行次数 t , 因此有 2 ^ t <= n,取对数后 t <= log2n, 则T(n) = O( log2n )

  • 例题2:

    int y = 5;
    while((y+1)*(y+1) < n)
        y = y+1;
    

    y + 1 的次数恰好与T(n)成正比,记 t 为该程序的执行次数并令 t = y-5,有y = t + 5 ,则(t+5+1) * ( t+5+1) < n,得 t < n^(1/2) - 6,故T(n) = O( n^(1/2) )


1.2 循环主体中的变量与循环条件无关

  • 方法:采用数学归纳法或直接累计循环次数,多层循环从内到外分析,只关注主体语句的执行次数。

  • 题型1:递归程序,一般使用公式进行递推

    int fact(int n){
        if(n<=1){
            return 1;
        }
        return n*fact(n-1);
    }
    

    本题是求阶乘的递归代码,即n * (n-1) * .... * 1。每次递归调用 fact() 的参数减1,递归出口为 fact(1) , 一共执行n次递归调用 fact() ,故T(n) = 1 + T(n-1) = 1+1+T(n-2) = 1+1+1+...+T(1) = n-1 + T(1)。 即T(n) = O(n)

  • 题型2:非递归程序,直接累计次数

    void fun(int n){
        int i = 0;
        while(i*i*i<=n)
            i++;
    }
    

    基本运算为 i++ ,设执行次数为 t ,有 t * t * t <= n, 即 t^3 <= n, 故有 t <= n^(1/3) 。即T(n) = O( n^(1/3) )


1.3 级数工具

  • 常用级数

    • 常函数级数

    • 算数级数

    • 幂方级数

    • 几何级数


二、线性表

1. 链表插入删除题型

  • 此种题型选择题方法:画图按照选项进行分析;大题方法:画图分析逐步写出代码
  • 代表题型:《王道》page36 - 6 \ 13 \ 14 \ 15 题

1.1 单链表插入删除

1.2 双链表插入删除


2. 判断空表条件

  • 此种题型要深入了解头结点的作用,对单链表和双链表的判空条件进行理解
  • 代表题型:《王道》page36 - 11 \ 18 题

2.1 单链表判空条件

2.2 双链表判空条件


3. 头指针、尾指针、循环链表

  • 此种题型通常给出操作,如末尾插入结点和删除结点,问选用哪种结构最节省时间
  • 解题技巧:明确各项操作中需要用到哪些,如末尾插入结点,需要找到前驱结点;删除结点,则需要尾指针。然后看选项哪一个结构全符合O(1)的
  • 代表题型:《王道》page37 - 19 \ 20 \ 21 题

4. 概念题

  • 此种题型考察概念与特点,常规题型,把线性表部分掌握熟练即可应付

三、栈和队列

1. 栈

1.1 概念题

  • 此种题型考察概念与特点,常规题型,熟悉内容即可应付。

1.2 链栈 - 进栈出栈代码选项题

  • 此种题型选择题方法:画图按照选项进行分析
  • 代表题型:《王道》page64 - 8 \ 9 题

1.3 栈的特性题

  • 此种题型考察栈的特性,专门出”不可能得到的序列是什么” ,”栈的容量至少是多少” ,“ 第 i 个输出元素是什么 ” 等挖坑的类型题目

  • 解题方法:要仔细,首先明白栈不可能出现逆序(隔层)的输出序列,具体题目去思考 ,画图也会很好的帮助

  • 代表题型:《王道》page64~65 - 12 \ 14 \ 16 \ 17 \ 18 \ 19 \ 20 \ 21 \ 22 题

  • 解析代表题:

    1. 若一个栈的输入序列是1,2,3,...,n,输出序列的第一个元素是n,则第 i 个输出元素是什么

      根据栈的特性,已知题目提到输出序列的第一个元素是n,则 n 之前的所有元素都压入栈中,接下来就是依次出栈了。则 i 个输出元素是 n - i +1

    2. 若一个栈的输入序列是1,2,3,...,n,输出序列的第一个元素是 i ,则第 j 个输出元素是什么

      与上题的唯一区别是,输出序列第一个元素不知道是在哪个位置,无法判断,因此第 j 个输出元素也将无法确定


2. 队列

2.1 概念题

  • 此种题型考察概念与特点,常规题型,熟悉内容即可应付。

2.2 循环队列 - 判断队空队满求队长

  • 此种题型选择题方法:画图按照选项进行分析
  • 代表题型:《王道》page78 - 5 \ 6 \ 9 \ 10 题

2.3 循环队列 - 求front、rear的值

  • 此种题型选择题方法:画图按照选项进行分析
  • 代表题型:《王道》page78 - 7 \ 8 题

四、树和二叉树

五、图

六、数组

七、查找

八、算法填空

posted @ 2022-08-25 17:28  陈景中  阅读(569)  评论(0编辑  收藏  举报