程序=数据结构+算法
研究对象:非数值运算程序设计中的操作对象,以及对象之间关系
数据结构:数据元素及数据元素之间的关系
抽象数据类型的形式定义:(D S P)
D 数据对象
S是D上的关系集
P是对D的基本操作集
格式:
ADT 抽象数据对象类型名{
D:<数据对象>
S:<数据关系>
P:<基本操作>
}ADT 抽象数据对象类型名
//定义一个圆
ADT Circle{
D={r,x,y|r,x,y均为实数}
R={<r,x,y>|r是半径,<x,y>是圆心坐标}
Circle(&C,r,x,y}//构造一个圆//返回参数要加上&
double Area(C)//求圆的面积
double Circumfenrence(C)//求圆的周长
} ADT Circle
//定义复数
ADT Complex{
D={r1,r2|r1,r2都是实数}
S={<r1,r2>|r1是实部,r2是虚部}
assign(&C,v1,v2)//构造复数C
destroy(&C)//销毁复数C
}ADT Complex
算法(类C语言)
//预定义常量及类型
//函数结果状态代码
#define OK 1
#define Error 0
#define OVERFLOW -2
//Status 是函数返回值类型,值是函数结果状态代码
typedef int Status;//typedef描述存储结构,数据元素类型约定为ElemType,自行定义
//算法格式
函数类型 函数名
{
//算法说明
语句序列
}//函数名
//结束语句
return 表达式;
return;
case/break
//输入输出语句
//cin>>变量1...>>变量n;
//cout<<表达式1<<...<<表达式n;
//定义复数
ADT Complex{
D={r1,r2|r1,r2都是实数}
S={<r1,r2>|r1是实部,r2是虚部}
assign(&C,v1,v2)//构造复数C
destroy(&C)//销毁复数C
}ADT Complex
//构造复数
typedef struct{
float realpart; //实部
float imagpart; //虚部
}Complex
//复数实现部分
void Creat(&Complex C,float x,float y)
{//构造复数
C.realpart=x;
C.imagepart=y;
}
float GetReal(Complex C)//取复数x+yi的实部
{
return C.realpart;
}
float Getimage (Complex C)//取复数x+yi的虚部
{
return C.imagepart;
}
Complex Add(Comlpex C1,Complex C2)//求复数C1+C2
{
Complex sum;
sum.realpart=C1.realpart+C2.realpart;
sum.imagepart=C1.imagepart+C2.imagepart;
return sum;
}
算法特性:
有穷性--在规定时间内完成
确定性--不会产生二义性
可行性--有限次
输入--有0个或多个输入
输出--有1个或多个输出
评价算法优劣的标准:
正确性Correctness
可读性Readablility
健壮性Robustness
高效性Efficiency
算法的时间复杂度:......(wait......)