递归函数recusrive function
1.直接递归(direct recursion)
2.间接递归(indirect recursion)
a.数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
b.据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
c.数据项是数据的不可分割的最小单位。
d.数据结构在计算机中的表示(又称映象)称为数据的物理结构,又称存储结构。
它包括数据元素的表示和关系的表示。
有两种不同的存储结构:
顺序存储结构---- 其特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
链式存储结构---- 其特点是借助指示元素存储地址的指针(Pointer)表示数据元素之间的逻辑关系。
数据结构是相互这间存在一种或多种特定关系的数据元素的集合.
1.集合
2.线性结构
3.树形结构
4.图状结构或网状结构.
=============================基本操作的实现======================
Status InitTripet(Triplet &,ElemType v1,ElemType v2, ElemType v3)
{ //构造三元组T,依次置T的三个元素的初值为V1,V2和V3.
T = (ElemType *)malloc(3*sizeof(ElemType)); //分配3个元素的存储的存储空间.
if(!T)exit(OVERFLOW); //分配存储空间失败.
T[0] = v1; T[1] = v2; T[2] = v3;
return OK;
} //InitTripet
Status DestroyTriplet(Triplet &T)
{ //销毁三元组T
free(T); T = NULL;
return OK;
} // DestroyTriplet
Status Get(Triplet T, int i, ElemType &e)
{ //1<=i<=3,用e返回T的第i元的值.
if(i < 1 || i >3) return ERROR;
e = T[i-1];
return OK;
} //Get
Status Put(Triplet &T, int i, ElemType e)
{
// 1<=i<=3,置T的第i元的值为e.
if(i < 1 || i>3) return ERROR;
T[i-1]=e;
return OK;
} //put
Status IsAcending(Triplet T)
{ //如果T的三个元素按升序排序,则返回1, 否则返回0。
return(T[0] < T[1]) &&(T[1] <= T[2]);
} //IsAcending
Status IsDescending(Triplet T)
{//如果T的三个元素按降序排列,则返回1,否则返回0.
return(T[0] >= T[1] )&& (T[1] >[T[2]]);
} //IsDescending
Status Max(Triplet T, ElemType &e)
{ // 用e返回指向T的最大元素的值。
e = (T[0] >= T[1]) ?((T[0] >= T[2]) ?T[0]:T[2])
:((T[1] >= T[2])? T[1]:T[2]);
return OK;
} //Max
Status Min(Triplet T, ElemType &e)
{//用e返回指向T的最小元素的值。
e = (T[0] <= T[1]) ? ((T[0] <= T[2])? T[0]:T[2])
:((T[1] <= T[2])? T[1]:T[2]);
return OK;
} //Min
==============================================================
6.算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。
算法有五个特性:
⑴有穷性---- 一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成
⑵确定性---- 算法中每一条指令必须有确切的含义,读者理解时不会产生二义性.并且,在任何条件下,算法只有
唯一的一条执行路径,即对于相同的输入只能得出相同的输出。
⑶可行性---- 一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
⑷输入------ 一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。
⑸输出------ 一个算法有一个或多个的输出,这些输出是同输入有着某些特定关系的
-----------------------------------------------------------------
7.评价算法的好坏:
1.正确性(Correctness)
2.可读性(Readability)
3.健壮性(Robustness)
4.时间复杂性
5.空间复杂性
-----------------------------------------------------------------
评论