- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构CH2-1
/*算法2-2*/ int InsItem(Sequenlist *L,int i,elemtype item) { int j; if(L-len==maxsize) {printf(表满);return(-1);} if(i1||iL-len+1) {printf(位置错);return(0);} for(j=L-len-1;j=i-1;j--) L-data[j+1]=L-data[j]; L-data[i-1]=item; L-len++; return(1); } /*算法2-3*/ int DelItem(Sequenlist *L,int i) { int j; if((i1) || (iL-len)) /*检查空表及删除位置的合法性*/ {printf(不存在第i个元素);return (0);} for(j=i;j=L-len-1;j++) L-data[j-1]=L-data[j]; /*向上移动*/ L-len--; /*表长减小*/ return (1); } 算法的设计取决于数据结构,算法的实现依赖于存储结构。数据的运算是在逻辑结构上定义的操作算法,如增、删、改、查 同学处理del用0标志,则不为线性表 指针函数 int *create(int x,int y),是一个函数 ;函数指针 int (*create)(int x,int y) 是一个指针,可以调用任意满足接口约定的函数,即赋给函数指针的函数应该和函数指针所指的函数原型是一致的。 方面 层次 数据表示 数据处理 抽象 逻辑结构 基本运算 实现 存储结构 算法 评价 不同数据结构的比较及算法分析 数据结构的课程内容 2.1 线性表的定义及基本操作 2.2 线性表的顺序存储 2.3 线性表的链式存储 2.4 线性表存储方式小结 2.5 线性表的应用 2.1 线性表的定义及基本操作 2.1.1 线性表的定义 2.1.2 线性表的基本运算 定义:一个线性表是具有相同类型的n(n≧0)个数据元素的有限序列,通常记为: 例 英文字母表(A,B,C,…..Z) 例 特征: i为元素的序号 元素个数n—表长度,n=0空表 1in时 ai的直接前驱是ai-1,a1无直接前驱 ai的直接后继是ai+1,an无直接后继 元素同构,且不能出现缺项 2.1.1 线性表的定义 第二章 线性表 线性结构特点:在数据元素的非空有限集中 存在唯一的一个被称作“第一个”的数据元素 存在唯一的一个被称作“最后一个”的数据元素 除第一个外,集合中的每个数据元素均只有一个前驱 除最后一个外,集合中的每个数据元素均只有一个后继 2.1.2 线性表的基本运算 初始化:InitList(*L) 构造一个空的线性表 插入:InsItem(*L,i,item)在第i个位置上插入一个值为item的元素 删除:DelItem(*L,i)删除序号为i的数据元素 清空线性表ClearList(L) 判空ListEmpty(L) 求长度:LenItem(*L)返回表中所含元素的个数 按值查找:LocItem(*L,item)返回首次出现item的序号或地址,查找失败时返回一个特殊值 取表元:GetItem(*L,i,item)返回第i个元素的值或地址 取前驱GetPrior(*L,item,prior) 取后继GetNext(*L,item,next) 2.2 线性表的顺序存储 2.2.1 顺序表 2.2.2 顺序表上基本运算的实现 2.2.3 顺序表应用举例 元素地址计算方法: LOC(ai)=LOC(a1)+(i-1)*d 1≦i≦n 特点: 逻辑上相邻—物理地址相邻 随机存取 实现:可用C语言的一维数组实现 LOC(a1)+(n-1)*d LOC(a1) LOC(a1)+(i-1)*d 存储地址 LOC(a1)+d an ….. ai ….. a2 a1 d 2.2.1 顺序表的定义 顺序表:用一组地址连续的存储单元顺序存放线性表的各元素叫~ 实现1: #define MAXSIZE 1000 elemtype data[MAXSIZE]; int len;/*顺序表的表长*/ 例 typedef int elemtype; a1 a2 an 0 1 n-1 data 数组下标 MAXSIZE-1 备用空间 顺序表存储结构的实现 例 typedef struct card { int num;
文档评论(0)