标签:
算法的设计依赖数据的逻辑结构
线性表的逻辑结构为:在数据元素的有限集合中,存在一个唯一的一个被称为“第一个“的数据元素,存在唯一一个被称为“最后一个“的数据元素,除了第一个元素外,所有的元素都只有一个前驱,除了最后一个数据元素外,所有的元素都有一个后驱。
通过了解线性表的逻辑结构,可以设计相应的算法:
Status initList(SqList *L); /* 操作结果:构造一个空的顺序线性表 */ Status destroyList(SqList *L); /* 初始条件:顺序线性表L已存在。操作结果:销毁顺序线性表L */ Status clearList(SqList *L); /* 初始条件:顺序线性表L已存在。操作结果:将L重置为空表 */ Status listEmpty(SqList *L); /* 初始条件:顺序线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE */ int listLength(SqList *L); /* 初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数 */ Status getElem(SqList L,int i,ElemType *e); /* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L) */ /* 操作结果:用e返回L中第i个数据元素的值 */ int locateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType)); /* 初始条件:顺序线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0) */ /* 操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。 */ Status priorElem(SqList L,ElemType cur_e,ElemType *pre_e); /* 初始条件:顺序线性表L已存在 */ /* 操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱, */ Status nextElem(SqList L,ElemType cur_e,ElemType *next_e); /* 初始条件:顺序线性表L已存在 */ /* 操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继, */ Status listInsert(SqList *L,int i,ElemType e); /* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1 */ /* 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 */ Status listDelete(SqList *L,int i,ElemType *e); /* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L) */ /* 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1 */ Status listTraverse(SqList L,void(*vi)(ElemType*)); /* 初始条件:顺序线性表L已存在 */ /* 操作结果:依次对L的每个数据元素调用函数vi()。一旦vi()失败,则操作失败 */
标签:
原文地址:http://www.cnblogs.com/gaoxing/p/4302415.html