- 1、本文档共117页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表;教学目标;教学内容;线性结构的特点:;(a1, a2, … ai-1,ai, ai+1 ,…, an)
;例1 分析26 个英文字母组成的英文表;ADT List {
数据对象:D={ai|ai∈ElemSet, i=1,2,...,n, n=0}
数据关系: R= {ai,ai+1|ai,ai+1∈D, i=1,2,...,n-1}
基本操作:
InitList(L)
DestoryList(L)
ClearList(L)
ListLength(L)
ListEmpty(L)
GetElem(L,i,e)
LocateELem(L,e)
PriorElem(L,cur_e,pre_e)
NextElem(L,cur_e,next_e)
ListInsert(L,i,e)
ListDelete(L,i)
TraverseList(L)
}ADT List;2.2 线性表的顺序表示和实现;元素n;顺序存储结构的线性表称作顺序表, 示意图如下:;例:#define MaxSize 10
typedef int ElemType;
typedef struct {
ElemType elem[MaxSize];
int length;
} SqList;
void main()
{
SqList L;
L.elem[0] = 15;
L.elem[1] = 5;
L.elem[2] = 22;
L.length = 3;
……
};用动态数组实现:
typedef struct
{
ElemType *elem; //动态存储空间的首地址
int length; //当前元素的个数,最后一个下标为length-1
int MaxSize; //动态存储空间的大小,即elem数组的长度
} SqList;
本课程接下来均采用动态数组
;例:
typedef int ElemType;
typedef struct {
ElemType *elem;
int length;
int MaxSize;
} SqList;
void main() {
SqList L;
L.MaxSize = 10;
L.elem = (ElemType *)malloc(L.MaxSize*sizeof(ElemType));
L.elem[0] = 15; L.elem[1] = 5; L.elem[2] = 22;
L.length = 3;
……..
free(L.elem);
};典型操作的算法实现;2. 销毁线性表L
void DestroyList(SqList L)
{
if (L.elem) delete[ ]L.elem; //释放存储空间
};4. 求线性表L的长度
int ListLength(SqList L)
{
return (L.length);
};6. 获取线性表L中指定位置数据元素的内容
int GetElem(SqList L,int i,ElemType e)
{
if (i1||iL.length)
return ERROR;
e=L.elem[i-1]; //第i-1的单元存储着第i个数据
return OK;
};查找算法时间效率分析:
查找成功时:最坏情况与平均情况均是 O(n)
查找不成功时: O(n);查找成功的平均比较次数(pi为各项的查找概率)
文档评论(0)