第3章 线性结构汇总
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018年10月15日
第11页
用一维数组来示实现顺序表的数据存储区域。
考虑到线性表的运算有插入、删除等运算,即表长是可 变的,因此,数组的容量需设计的足够大,设用: data[MAXSIZE] 来表示,其中 MAXSIZE 是一个根据实际问 题定义的足够大的整数,线性表中的数据从data[0] 开始依次 存放,但当前线性表中的实际元素个数可能未达到 MAXSIZE多个,因此需用一个变量 last 来记录当前线性表 中最后一个元素在数组中的位置,即 last 起一个指示作用, 始终指向线性表中最后一个元素的位置 ,因此,表空时 last=-1。这种存储思想的具体描述可以是多样的。可以是: DataType[] data; int last;
2018年10月15日
第 7页
3.1.2 线性表的定义
线性表是具有相同数据类型的 n(n>=0) 个数据元素的 有限序列,通常记为: (a1,a2,… ai-1,ai,ai+1,…an) 其中n为表长, n=0 时称为空表。表中相邻元素之间 存在着顺序关系。将 ai-1 称为 ai 的直接前趋,ai+1 称为 ai 的直接后继。 需 要 说 明 的 是 : ai 为 序 号 为 i 的 数 据 元 素 (i=1,2,…,n),通常我们将它的数据类型抽象为 datatype, datatype根据具体问题而定,如在学生情况信息表中,它 是用户自定义的学生类型; 在字符串中,它是字符型; 等等。
2018年10月15日
第 3页
⒊教学重点
顺序表上插入、删除和定位运算的实现,单链表 的结构特点及类型说明,头指针和头结点的作用及区 别,定位、删除、插入运算在单链表上的实现,循环 链表、双链表的结构特点,循环链表、双链表上删除 与插入运算的实现;栈的定义、逻辑特点及基本运算, 栈的顺序存储结构、链式存储结构及运算,队列的定 义、逻辑特点及基本运算,队列的顺序存储结构、链 式存储结构ห้องสมุดไป่ตู้运算;串和数组的逻辑结构、基本运算、 存储方式,模式匹配算法,多维数组的存储方式,特 殊矩阵的压缩存储,稀疏矩阵的表示方法。
2018年10月15日
第8页
3.1.4 线性表的基本运算
⑴ 线性表初始化:Init_List(L)
⑵ 求线性表的长度:Length_List(L)
⑶ 取表元:Get_List(L,i) ⑷ 按值查找:Locate_List(L,x) ⑸ 插入操作:Insert_List(L,i,x) ⑹ 删除操作:Delete_List(L,i)
2018年10月15日
第 9页
在Java语言中可以用接口(Interface)的形式定义线性 表的ADT中的公有方法。 public interface List //线性结构的ADT { public void Init_List(L); //初始化线性表L public int Length_List(L); //求线性表L当前的长度 public DataType Get_List(L,i); //查找线性表L中的第i个元素 public int Locate_List(L,x); //查找给定元素x在线性表L中的位置 public int Insert_List(L,i,x); //在线性表L中插入值为x的元素作为第i个元素 public int Delete_List(L,i); //删除线性表中第i个元素 }//interface
2018年10月15日
3.2 线性表的顺序存储与实现
3.2.1 顺序表
第10页
线性表的顺序存储是指在内存中用地址连续的一块存
储空间依次顺序存放线性表各元素,用这种存储形式存储 的线性表称其为顺序表。
顺序存储可以按序号随机访问每一个数据元素:
设 a1的存储地址为Loc(a1),每个数据元素占d个存储 地址,则第i个数据元素的地址为: Loc(ai)=Loc(a1)+(i-1)*d 1≤i≤n
第3章
线性结构
第2页
⒈教学内容
线性表的逻辑结构、线性表的顺序存储、线性表的链 式存储、顺序表和链表的比较;栈和队列的逻辑结构、存储 实现及基本运算;字符串, 数组, 广义表的定义及运算。
⒉教学目的
理解线性表的定义及其运算,理解顺序表和链表的定义、 组织形式、结构特征和类型说明,掌握在这两种表上实现的 插入、删除和按值查找的算法,了解循环链表、双链表的结 构特点;理解栈和队列的定义、特征及基本运算;掌握栈和 队列的两种存储结构及基本运算的实现;了解串、数组、 广义表几中特殊的线形表的定义,理解和领会串的存储方 式和掌握常用的串运算,理解多维数组的结构特点和在内 存中的两种顺序存储方式,领会稀疏矩阵的压缩方式和简 单运算。
2018年10月15日
第 4页
⒋教学难点
线性表与线性结构的联系与区别,头结点在链 表中的作用、指针操作,删除、插入运算中的指针 操作顺序,双链表上指针的操作顺序;顺序栈的溢 出判断条件,循环队列的队空、队满判断条件,循 环队列上的插入、删除操作。
2018年10月15日
第5页
线性结构的特点是数据元素之间是一种线性 关系,数据元素“一个接一个的排列”。 线性表是最简单、最基本、也是最常用的线 性结构,本章我们讨论这种最基本的线性结构, 线性表有两种存储方法:顺序存储和链式存 储,它的主要基本操作是插入、删除和检索等。 此外,本章还在基本线性结构的基础上讨论 两种具有特殊操作规则的数据结构:堆栈和队列 实现及其应用,以及以字符为元素的线性结构字 符串的存储和操作实现。最后阐述多维数组和特 殊矩阵与线性结构的对应关系。
2018年10月15日
第 6页
3.1 引言
3.1.1 问题的提出
问题 1 :日常生活中看到的学生花名册、学生的成绩 单、通讯录、单位的职工工资表以及图书馆的图书目录等 等,这些表单具有一个共同的特点,都是由一行行结构相 同的数据构成。对这些表单经常进行的操作是修改、查找、 插入和删除。 问题 2 :日常生活中我们将洗好的盘子由下而上摆放 起来,使用的时候再从上至下依次取出,如果用计算机模 拟这一过程,盘子之间的逻辑关系是线性结构,但处理盘 子的摆放顺序需要遵循后摆放先取出的原则进行处理。 问题 3 :日常生活中排队购物、汽车进站出站、到银 行办理业务等事务处理过程,如果用计算机模拟,一般情 况是一个需要遵循先来先服务的处理原则的线性结构。