天勤考研高分笔记:数据结构与算法解析

需积分: 10 18 下载量 59 浏览量 更新于2024-09-09 6 收藏 988KB PDF 举报
"这是一份天勤考研高分笔记,主要涵盖了数据结构的相关知识点,适合计算机考研备考者使用。笔记详尽梳理了数据结构的基本概念、算法分析以及线性表的各类实现方式,同时提到了栈和队列的特性及应用。" 在计算机科学中,数据结构是组织和管理大量数据的关键,它直接影响到程序的效率和性能。这份笔记首先介绍了数据的物理结构,包括顺序、链接、索引和散列四种类型。顺序结构是最基础的,例如数组,元素存储在连续的内存位置;链接结构通过指针连接各个节点,如链表;索引结构通常用于快速查找,比如B树和哈希表;而散列则是通过特定的函数将元素映射到存储位置,实现快速存取。 算法的五个基本特性是:有穷性、确定性、可行性、输入和输出。在C/C++编程中,笔记提到了指针的引用语法`int *&x`,表示x是一个对整型指针的引用;`malloc()`函数用于动态内存分配,使用后需用`free()`释放;二维数组如`inta[4][5]`具有四行五列,最后一列用于存放结束标识'\0'。 时间复杂度是衡量算法运行效率的重要指标。笔记列举了遍历字符数组、使用`switch`语句、定义字符串等例子,并指出时间复杂度依赖于问题规模n和输入数据的初始状态。常见的大O符号表示法如O(1)、O(log n)、O(n)、O(n log n)、O(n^2)等,用于表示基本运算的频度。乘法规则和加法规则可用于计算多层循环的时间复杂度。 空间复杂度则是算法运行时所需内存空间与问题规模的关系,记为S(n)。原地工作的算法其辅助空间为常量,即S(n) = O(1)。 在讨论线性表时,笔记区分了顺序表和链表。顺序表支持随机访问,但存储空间固定且插入操作可能导致大量元素移动,存储密度为1。链表则不支持随机访问,但存储空间可动态分配,存储密度小于1。笔记详细描述了链表的定义,包括带头结点的单链表、双链表、循环链表和静态链表。 栈是一种后进先出(LIFO)的数据结构,适用于需要记忆功能的场景,如括号匹配、递归等。队列则是先进先出(FIFO)的数据结构,常见于任务调度、缓冲区管理等。笔记提到了卡特兰数,它是计算不同元素进栈和出栈序列数量的数学公式。 最后,笔记简单介绍了栈和队列的应用,如顺序栈和链栈的区别,其中顺序栈的数组下标从0开始,不同于通常的顺序表从1开始。 这份笔记全面覆盖了数据结构的基础知识,对于准备计算机考研的学生来说是一份宝贵的参考资料。