1、学习资源:
PTA教学辅助平台
51课堂
2、数据结构的三要素
(1)逻辑结构:是对数据元素之间的逻辑关系。
(2)存储结构(物理结构):是数据结构在计算机中的表示和实现,故⼜称“存储结构”。
(3)数据的运算:施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,运算的实现是针对存储结构的。
3、ADTt抽象数据类型
(1)自定义数据类型
type struct
{
int num;
char name[20];
float score;
}SRUDENT;
STUDENT stu1,stu2,*p;
(2)“简化线性表”的抽象数据类型的定义
ADT Linear_list{
数据元素:所有ai属于同一数据对象,i=1,2,3……n,n>=0;
结构关系:所有数据元素ai(i=1,2,3……n-1)存在次序关系<ai,ai+1>,a1无前驱,an无后继;
基本操作:
InitList(L):初始化空线性表
ListLength(L):求线性表的表长
GetData(L,i):取线性表的第i 个元素
InsList(L,i,b):在线性表的第i 个位置插入元素b
DelList(L,i):删除线性表的第i个数据元素
}ADT Linear_list
3、用C语言实现ADT
(1)通过结构体将int,float等基本数据类型组合到一起,构成一个结构体类型,再用typedef为该类型或该类型指针重新起一个名字,以增强程序的抽象性、简洁性和可读性。即采用C语言中typedef自定义类型来实现
(2)用C语言的子函数来实现各个操作
4、算法
(1)算法 的特性
(2) 算法设计的要求
(3)算法描述
(4) 算法性能分析
算法效率:用依据该算法编制的程序在计算机上执行所消耗的时间和空间来度量
时间复杂度:T(n)=O(f(n))表示随问题规模n的增大,算法的执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。
f(n)为一个算法的语句频度之和,语句频度指的是语句在一个算法中重复执行的次数。
空间复杂度:S(n)=O(f(n))
例:
@1
for(i=0;i<n;i++)
b[n]=a[n-i-1];
for(i=0;i<n;i++)
a[i]=b[i];
S(n)=O(n)需要一个大小为n的辅助数组b;
@2
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
}
S(n)=O(1)仅需要一个变量t,问题与规模没有关系