- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机软件技术基础 教 师:曾晓东 电 话E_mail: zengxiaodong@263.net 第三章 线性结构 3.1 线性表 一、线性表概念与运算 二、线性表的顺序存储结构 三、线性表的链式存储结构 四、循环链表与双向链表 3.2 栈和队列 3.3 数组 3.1 线性表 一、线性表的概念与运算 1、线性表概念 定义: n(n≥0)个同类元素构成的有限线性序列,表示为L=(a1,a2,…,an)。 n为线性表L的表长 线性表的结构特性 除第一个元素外,线性表中所有元素有唯一直接前驱 除最后一个元素外,线性表中所有元素有唯一直接后继 ai的直接前驱是ai-1,直接后继是ai+1 一、线性表的概念与运算 2、线性表运算 1)初始化 initiate ( L) 建立一个空线性表 2)求表长 length (L) 求表的数据元素个数 3)取结点 get(L, i) 给定元素序号 i,取元素内容(或结点地址指针) 4)定位 locate(L, x) 给定元素内容x,取元素序号 i(或结点地址指针) 5)插入 insert(L , i, x) 给定结点序号i,在其前(或其后)插入结点 6)删除 delete(L, i) 给定结点序号,删除该结点(或其后结点) 7)遍历 getlist(L) 以某种顺序读取线性表L的所有元素一次 8)查找 search(L,x)查找数据元素x在线性表L中的序号或结点地址 9)排序 sort(L) 按关键字递增或递减的顺序对L的元素重新排列 一、线性表的概念与运算 3、线性表的分类 按存储方式分类 顺序表 链表 按可进行的操作的不同分类 栈 队列 串 数组 3.1 线性表 二、线性表的顺序存储结构 1、顺序表 用一组地址连续的存储单元存放线性表的数据元素,称为线性表的顺序存储结构,也称为向量式存储结构。 该结构用高级语言中的一维数组类型表示。数组中的分量下标即为元素在线性表中的序号。例如:可用一维数组A[n]来存储线性表: (a1, a2 ,...,an)。 这里需要声明:C语言中,数组下标从0开始。 二、线性表的顺序存储结构 地址计算:设每个元素占L个单元,线性表在内存中的首地址为:Loc(a1)=b,则线性表中第i个元素的存储地址为: Loc(ai)=Loc(ai-1)+L=Loc(a1)+(i-1)L=b+(i-1)L 特点:这种存储结构只要知道元素的序号,就很容易找到第i个数据元素,且无论序号i为何值,找到第i个元素所需时间相同。所以,这种存储结构亦称为随机存储结构。 二、线性表的顺序存储结构 顺序表的类型定义 const int MAXSIZE 100; struct sequenlist { elemtype data[MAXSIZE]; int length; } 顺序表类型的变量定义 sequenlist list,L; 二、线性表的顺序存储结构 2、顺序表有关操作 1) 顺序表初始化 ⑴操作: 建立一个长度为零的空表 ⑵接口: 入口和出口参数均为表头指针 L ⑶算法描述:令表长度字段 list.length为零 ⑷函数实现: void setNull(sequenlist L ) { L. length = 0; } void setNull(sequenlist L ) { L.length = 0; } 二、线性表的顺序存储结构 2) 顺序表的插入 ⑴ 操作: 从末尾至第i个结点将内容依次后挪 将新结点放入第i个结点位置 表长度加一 ⑵ 接口: 入口参数: 表头指针 L,位置 i,新结点x 出口参数: 表头指针 L 函数值: 成功则返回1(用true表示), 失败则返回0(用false表示) 二、线性表的顺序存储结构 (3) 算法描述 二、线性表的顺序存储结构 (4) 函数实现 const int true = 1; const int false = 0; int insert(sequenlist L,int i,elemtype x){ int j; if(i1||iL.length+1) return(false); for(j=L.length-1;j=i;j--) L.data[j+1] = L.data[j]; L.data[i] = x; L.length ++ ; return(true); } 二、线性表的顺序存储结构 二、线性表的顺序存储结构 (5) 时间复杂度分析 二、线性表的顺序存储结构 3)顺序表的删除 ⑴ 操作: 从第i个结点至末尾将内容
您可能关注的文档
- 超好的软件工程.ppt
- 化工工艺学-第二章.ppt
- 第3章 C#程序设计(5学时-自学为主).ppt
- 20090411应变电测原理介绍.ppt
- 第八张所得税.ppt
- Auto_CAD_2009_中文版机械制图实战(第3章).ppt
- 电力系统分析基础(第二章)(2).ppt
- 第九章 线性回归分析.ppt
- 第六章 肉鸡的饲养管理.ppt
- 技术经济学原理及其应用第四章.ppt
- 历史的巨响 奋进的力量纪念我国第一颗原子弹爆炸成功60周年-热点速递“内容简介+素材集锦+时评+作文链接+范文”.docx
- 历史的巨响 奋进的力量:纪念我国第一颗原子弹爆炸成功60周年-热点速递“内容简介+素材集锦+时评+作文链接+范文”.docx
- 吉林省2016年中考文综试卷(解析版).doc
- 吉林省2016年中考文综试卷(解析版).doc
- 吉林省2016年度中考政 治试题(word版,含答案).doc
- 吉林省2016年中考政治试卷及答案【word版】.doc
- 2016年吉林省中考政治试题及答案解析.doc
- 吉林2016年初中毕业生学业考试.doc
- 竞聘技校数学老师演讲.docx
- 2016年吉林省中考政治试题解析.doc
文档评论(0)