1.数据时外部世界信息的载体,他能被计算机识别、存储和加工处理,时计算机程序加工的原料。
2.数据对象是性质相同的数据元素的集合,是数据的一个子集。
3.数据类型可以分为两类:非结构的原子类型;结构类型。
数据结构:
1.数据结构的类型:
1.集合:结构中的数据元素除了存在“同属于一个集合”的关系外,不存在任何其他关系。
2.线性结构:该结构中的数据元素存在着一对一的关系。
3.树形结构:该结构的数据元素存在着一对多的关系。
4.图装结构:该结构中的数据元素存在着多对多的关系。
2.数据存储结构的类型:
1.顺序存储结构:通过数据元素在计算机存储器中的相对位置来表示出数据元素的逻辑关系。
2.链式存储结构:存储结构中的数据元素成为结点,在结点中附设地址域来存储与该结点相邻的结点的地址来实现结点间的逻辑关系。
这个地址称为引用。地址域称为引用域。
算法:
1.算法是对某一特定类型的问题的求解步骤的一种描述,是指令的有限序列。
2.特性:
1.有穷性:一个算法总是在执行有穷步之后结束,即算法的执行时间是有限的。
2.确定性:算法的每一个步骤都必须有确切的含义。
3.输入:一个算法具有零个或多个输入。
4.输出:一个算法具有一个或多个输出。
5.每一步都可以通过已经实现的基本运算有限次运行来实现。
3.算法的时间复杂度:
1.算法的时间复杂度是指该算法的运行时间与问题规模的对应关系。
2.算法中基本操作重复执行的次数(频度)f(n)作为算法的时间复杂度。
3.T(n)=O(f(n)):其中“O”表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
1.O(1) 常数阶,基本操作的执行频度与问题规模n无关。
2.O(n) 算法的基本操作执行频度与问题规模n呈线性增大关系。
例:
x=n; /*n>1*/
y=0;
while(y < x)
{
y=y+1; ①
}
3.n的二次开方
例:
x=n; /*n>1*/
y=0;
while(x >= (y+1)*(y+1))
{
y=y+1; ①
}
4.m*n*t
例 :
for(i=0;i<m;i++)
{
for(j=0;j<t;j++)
{
for(k=0;k<n;k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j]; ①
}
}
}
集合:
1.集合的表示法
1.穷举法:S={2,4,6,8,10}
2.描述法:S={X|X是偶数,且0<=X<=10}
2.集合的特性
1.确定性
2.无异性
3.无序性
单链表:
1.链表是用一组任意的存储单元来存储线性表中的数据元素(这组存储单元式可连续的,也可不连续的)
2.在存储数据元素时,除了存储数据元素本身的信息外,还要存储与相邻的数据元素的存储地址信息。
双向链表:
顺序表:
1.C#中,实现接口IList的类都是顺序表。
栈:
1.操作限定在表的尾端进行的线性表。表尾由于进行插入、删除等操作,把表尾称为栈顶(Top),另一端是固定的,叫栈底(Bottom)。
2.顺序存储。
链栈:
1.栈的另外一种存储方式是链栈存储,链栈通常用单链表来表示,它的实现是单链表的简化。
队列:
串:
树:
1.树是n个相同类型的数据元素的有限集合。树种的数据元素叫结点。
1.有且仅有一个特殊结点称为树的根结点,跟没有前驱结点。
2.若n>1,则除根节点外,其余结点被分成了m个互不相交的集合,其中每个集合本身都是一棵树。
2.二叉树
1.满二叉树:如果一颗二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这颗二叉树为满二叉树。
2.完全二叉树:深度为K,有N个结点的二叉树当且仅当其每一个结点都与深度为k,有n个结点的满二叉树中从1到n的结点
一一对应。
3.存储结构:顺序存储结构、二叉链表存储结构和三叉链表存储结构。