暑期实习第一步

数据结构与STL基础知识复习

1、数据存储结构:顺序存储结构和链式存储结构

2、算法与程序概念略有差别:算法要满足5个准则(输入,输出,有穷性,确定性和可行性),程序可以不满足有穷性

3、算法分析:时间复杂度(多项式时间算法和指数时间算法)、空间复杂度

4、STL(standard template library,标准模板类)是C++语言提供的一个基础模板集合,包含各种常用的存储数据的模板类和相应的操作函数,为开发者提供了一种快速有效的访问机制。STL最初由惠普实验室开发,1998年被定为国际标准。

5、STL有13个头文件,由6部分组成空间管理器、迭代器(类似指针)、泛函、适配器、容器(顺序容器,排序容器和哈希容器)和算法。

6、顺序表是一种随机的存储结构,静态存储分配,方便查询操作。注,C++数组的下标从0开始。

7、链表是一种顺序存取方式,动态存储分配,可分为单链表、双链表和循环链表,方便插入和删除等操作。

8、STL与线性表(6和7)相关的容器有向量(vector,数组实现),列表(list,链式存储的双向循环链表)等顺序容器。

9、栈:后进先出(LIFO),顺序存储结构和链式存储结构。

10、队列:先进先出(FIFO),循环队列(队头指针所指位置永不存储队列元素,队列长度(rear-front+QueueSize)%QueueSize),链队列。

11、串:模式匹配(即定位算法)。朴素模式匹配算法(BF算法)基本思想是将模式串的各个字符依次与目标串进行比较,如果模式串的全部字符比较完成后都与目标串的对应字符相同,则说明在目标串中已经找到模式串。如果比较到某个字符不同后,将模式串与目标串的下一个字符开始重新比较。改进算法有KMP算法和BM算法等。

12、STL与栈、队列和串(9、10和11)相关的模板类有双端队列容器(deque)、栈适配器(stack)、队列适配器(queue)、优先级队列适配器(priority_queue)和串容器(string)。

13、多维数组存储方式:行优先存储和列优先存储;矩阵的压缩存储:特殊矩阵(对称矩阵、三角矩阵和对角矩阵),稀疏矩阵的存储的方法:三元组表和十字链表;广义表是一种非线性结构。

14、树:有序树{二叉树和哈夫曼树(带权路径最短的二叉树,最优二叉树)},存储结构:双亲表示法(静态链表)、孩子表示法(一维数组和多个单链表结合)和孩子兄弟表示法(二叉链表)。

15、树的遍历:每个结点被访问一次且仅被访问一次 

前序遍历:根左右

后序遍历:左右根

层序遍历:广度遍历,按层次从上到下,从左到右

16、二叉树:满二叉树(所有叶子节点位于最后一层且其他分支结点度为2)和完全二叉树(相比于满二叉树,最后一层可以不满)

二叉树的遍历:由前序遍历和中序遍历可确定唯一二叉树,由后序遍历和中序遍历也可确定唯一二叉树

前序遍历:根左右

中序遍历:左根右

后序遍历:左右根

17、树和森林:前序遍历森林(树)=前序遍历该森林(树)对应的二叉树;后序遍历森林(树)=中序遍历该森林(树)对应的二叉树。

18、哈夫曼树(最优二叉树):哈夫曼编码是1952年最先由Huffman提出来的有一种广泛应用于数据压缩的一种有效编码方式。构造方法,最小权值结点两两合并。

19、图:存储结构有邻接矩阵、邻接表、十字链表、邻接多重表和边集数组。图的遍历:深度优先遍历(前序遍历,栈)和广度优先遍历(层序遍历,队列)。

20、最小生成树:

普利姆算法(Prim),不断选取最小值的边并把对应的顶点不断并入集合的过程,时间复杂度O(n^2);

克鲁斯卡尔算法(Kruskal),为使生成树上边的权值之和最小,其中每一条边的权值应该尽可能小,时间复杂度O(n^2)。

21、最短路径:

Dijkstra算法解决一个顶点到所有其它顶点的最短路径,基本思想,按路径长度递增的次序产生源点到其余各顶点的最短路径,时间复杂度O(n^2);

Floyd算法求任意两点间的最短路径,邻接矩阵求解,时间复杂度为O(n^3)。

22、查找:

静态查找(顺序查找、折半查找和分块查找),线性表

动态查找(二叉排序树和平衡二叉树),树表,二叉排序/查找树(左<根<右)中序遍历为递增有序序列;平衡二叉排序树左右子树高度之差的绝对值<=1

散列查找(散列技术),散列表

散列函数设计方法:直接定址法、除留余数法、数字分析法、平方取中法和折叠法

冲突处理方法:开放定址法、链地址法和公共溢出法

23、排序基本上是基于顺序表设计的,分为插入排序、交换排序、选择排序和归并排序。

插入排序:最简单的为直接插入排序(稳定,每个元素距离其最终位置不远)、希尔排序(不稳定)

交换排序:起泡排序(稳定)、快速排序(不稳定)

选择排序:简单选择排序(不稳定)、堆排序(不稳定)

归并排序:二路归并排序(稳定)

 



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值