- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件基础-2-02线性表
线性表 第二节 线性表 2.1 线性表的逻辑结构 定义:一个线性表是n个数据元素的有限序列 2.2 线性表的 顺序存储结构 typedef定义类型步骤 按定义变量方法先写出定义体 如 int i; 将变量名换成新类型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新类型名定义变量 如 INTEGER i,j; 插入 定义:线性表的插入是指在第I(1?i ? n+1)个元素之前插入一个新的数据元素x,使长度为n的线性表 算法时间复杂度T(n) 设Pi是在第i个元素之前插入一个元素的概率,则在长度为n的线性表中插入一个元素时,所需移动的元素次数的平均次数为: 删除 定义:线性表的删除是指将第i(1?i ? n)个元素删除,使长度为n的线性表 算法评价 设Qi是删除第i个元素的概率,则在长度为n的线性表中删除一个元素所需移动的元素次数的平均次数为: 顺序存储结构的优缺点 优点 逻辑相邻,物理相邻 可随机存取任一元素 存储空间使用紧凑 缺点 插入、删除操作需要移动大量的元素 预先分配空间需按最大空间分配,利用不充分 表容量难以扩充 2.3 线性表的链式存储结构 特点: 用一组任意的存储单元存储线性表的数据元素 利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素 每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息 结点 数据域:元素本身信息 指针域:指示直接后继的存储位置 实现 单链表的基本运算 查找:查找单链表中是否存在结点X,若有则返回指向X结点的指针;否则返回NULL 算法描述 算法描述 单链表特点 它是一种动态结构,整个存储空间为多个链表共用 不需预先分配空间 指针占用额外存储空间 不能随机存取,查找速度慢 循环链表(circular linked list) 循环链表是表中最后一个结点的指针指向头结点,使链表构成环状 特点:从表中任一结点出发均可找到表中其他结点,提高查找效率 操作与单链表基本一致,循环条件不同 单链表p或p-link=NULL 循环链表p或p-link=H 双向链表(double linked list) 单链表具有单向性的缺点 结点定义 2.4 线性表的应用举例 一元多项式的表示及相加 一元多项式的表示: 单链表的结点定义 * 线性表 顺序表 链表 顺序表与链表的比较 ? 什么是线性DS、线性表 ? 了解线性DS的特点 ? 了解线性DS的逻辑结构、 物理结构以及操作 教学目标: 学习要求 通过本单元的学习,了解并掌握: ? 线性DS的常用存储结构 顺序、链表 单向、双向、循环链表等 ? 线性DS的有关算法 增、删、改 例 英文字母表(A,B,C,…..Z)是一个线性表 例 数据元素 特征: 元素个数n—表长度,n=0空表 1in时 ai的直接前驱是ai-1,a1无直接前驱 ai的直接后继是ai+1,an无直接后继 元素同构,且不能出现缺项 线性表的特点 除第一个元素外,其他每一个元素有一个且仅有一个直接前驱。 除最后一个元素外,其他每一个元素有一个且仅有一个直接后继。 a1 a2 a3 a4 a5 a6 顺序表 (Sequential List) 顺序表的定义和特点 定义 将线性表中的元素相继存放在一个连续的存储空间中。 可利用一维数组描述存储结构 特点 线性表的顺序存储方式 遍历 顺序访问, 可以随机存取 25 34 57 16 48 09 0 1 2 3 4 5 data 顺序表的连续存储方式 35 27 49 18 60 54 77 83 41 02 0 1 2 3 4 5 6 7 8 9 l l l l l l l l l l LOC(i) = LOC(i-1)+l = a+i*l LOC(i) = LOC(i-1)+l = a+i*l, i 0 a, i = 0 a+i*l a a1 a2 an 0 1 n-1 1 2 n 内存 V数组下标 元素序号 M-1 typedef int DATATYPE; #defin
文档评论(0)