前言:今天(2015年9月14日)去一家公司面试(仍是霸面)C/C++开发工程师,没有通过系统地复习就一后果,被虐了。为了下次面试,因此如今趁着有时间从新学下数据结构(C语言版,严蔚敏著)。在这记录学习资料,通常都是书上写的。面试
一、什么是数据结构算法
1.1定义:数据结构是互相之间存在一种或多种特定关系的数据元素的集合。数组
1.2四种基本结构:集合结构,线性结构,树形结构,图状结构(网状)。(关系)数据结构
1.3数据结构的形式定义:数据结构是一个二元组, Data_Struct=(D,S),其中D是数据元素的有限集,S是D上关系的有限集。学习
1.4数据的逻辑结构:数据结构中定义中的关系描述的是数据元素之间的逻辑关系;分两种:线性结构(线性表{是一种有限序列,如数组和链式等},栈LIFO{限定仅在表尾进行插 入或删除操做的线性表},队列FIFO)和非线性结构(树,图)spa
数据的物理结构:数据结构在计算机的表示(映像)成为数据的物理结构(存储结构);分两种:顺序存储结构,链式存储结构,索引存储,散列存储。code
二、抽象数据类型ADT(Abstract Data Type)对象
2.1定义:是指一个数学模型及定义在该模型上的一组操做。定义仅取决于数据的逻辑特性。blog
2.2一个包含抽象数据类型的软件模块组成:定义,表示,实现三部分,三元组定义式以下:(D,S,P),其中D是数据对象,S是D上的关系集,P是对D的基本操做集。索引
抽象数据类型的格式:
1 ADT 抽象数据类型{ 2 数据对象:<数据对象的定义> 3 数据关系:<数据关系的定义> 4 基本操做:<基本操做的定义> 5 }ADT 抽象数据类型名
基本操做名格式
基本操做名(参数表)
初始条件:描述
操做结果:描述
三、算法及算法分析
3.1算法:有穷性,肯定性,可行性,输入,输出。
3.2算法效率的度量
时间复杂度:T(n)=O(f(n))
空间复杂度:S(N)=O(f(n))