数据结构第二章解读.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第二章解读

Visual Foxpro 第2章 线性表 2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 一元多项式的表示及相加 线性结构:一个数据元素的有序(次序)且是有限的集合。 线性结构的基本特征: ① 存在唯一的一个 “第一个”的数据元素; ② 存在唯一的一个 “最后一个”的数据元素; ③ 除第一个元素外,每个元素均有唯一的一个前驱; ④ 除最后一个元素外,每个元素均有唯一的一个后继。 2.1 线性表的类型定义 线性表 :是由n个类型相同的数据元素的有限序列。对n0,除第一元素无直接前驱、最后一个元素无直接后继外,其他的每一个数据元素只有一个直接前驱和一个直接后继。 抽象数据类型线性表的定义 ADT List{ 数据对象: D = { ai | ai∈ElemSet, i=1,2,…,n, n≥0 } {n为线性表的表长; n=0时的线性表为空表} 数据关系: R1 = {ai-1, ai | ai-1, ai∈D, i=2,3,…,n } {设线性表为(a1, a2,… ai,…an), 称i为ai在线性表中的位序。} 2.2 线性表的顺序表示和实现 线性表的顺序表示:用一组地址连续的存储单元依次存放线性表中的数据元素。 以”有序对相邻”表示ai-1,ai 即:LOC(ai) =LOC(ai-1) +l 一个数据元素所占存储量 所有数据元素的存储位置均取决于第一个数据元素的存储位置 LOC(ai) =LOC(a1) +(i-1)×l 基地址 顺序映像的C语言描述 #define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量 #define LISTINCREMENT 10 //线性表存储空间的分配增量 typedef struct{ ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量 // (以sizeof(ElemType)为单位) }SqList; //俗称顺序表 线性表的初始化操作 Status InitList_Sq(SqListL) { //构造一个空的线性表 L.elem =(ElemType *) malloc (LIST_INIT_SIZE*sizeof(ElemType) ); if (!L.elem) exit(OVERFLOW);//存储分配失败 L.length=0; //空表长度为0 L.listsize=LIST_INIT_SIZE; //初始存储容量 return OK; }//InitList_Sq 在顺序表中,第i个数据元素是L.elem[i-1] 线性表操作: ListInsert(L,i,e)的实现: (a1,…,ai-1,ai,…,an)改变为 (a1,…,ai-1,e,ai,…,an) Status ListInsert_Sq(SqList L, int i,ElemType e) { if (i1 ‖iL.length +1) return ERROR; if(L.length =L.listsize) { newbase = (ElemType *) realloc(L.elem,(L.listsize +LISTINCREMENT)*sizeof(ElemType)); if(!newbase) exit(OVERFLOW); L.elem =newbase; L.listsize + = LISTINCREMENT; } q =(L.elem[i-1]); //q指示插入位置 for(p =(L.elem[L.length-1]);p=q; --p) *(p +1) =*p; //插入位置及之后的元素右移 *q =e; //插入e + +L.length; //表长增1 return OK; }//ListInsert_Sq 算法时间复杂度:O(n) 考虑平均的情况: 假设在第i个元素之前插入的概率为Pi 则在长度为n的线性表中插入一个元素所需移动元素次数的期望值为: n+1 Eis

文档评论(0)

22ffbqq + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档