版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
线性表的顺序存储第1页,课件共26页,创作于2023年2月2.1线性表的逻辑结构简单地说,线性表的逻辑结构是指线性表数据元素之间的关系。线性结构是最简单且最常用的数据结构,而线性表是最典型的线性结构。线性结构的特点是数据元素之间是一种线性关系,即一对一关系。下面从线性表的定义及基本运算方面来讨论它的逻辑结构。第2页,课件共26页,创作于2023年2月2.1.1线性表的定义线性表定义如下:线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,通常记为:(a1,a2,…ai-1,ai,ai+1,…an)第3页,课件共26页,创作于2023年2月2.1.2线性表的数学定义和逻辑图从数学定义方面来说,线性表(LinearList)是具有相同属性的数据元素的一个有限序列。该序列中所含元素的个数叫做线性表的长度,用n表示(n≥0)。当n=0时,表示线性表是一个空表,即表中不包含任何元素。设序列中第i个元素为ai(1≤i≤n),则线性表的一般表示为:(a1,a2,…ai-1,ai,ai+1,…an)第4页,课件共26页,创作于2023年2月2.1.3线性表的基本操作数据结构的操作是定义在逻辑结构层次上的,而操作的具体实现是建立在存储结构上的。因此,下面定义的线性表的基本操作作为逻辑结构的一部分,每一个操作的具体实现只有在确定了线性表的存储结构之后才能完成。第5页,课件共26页,创作于2023年2月2.2线性表的顺序存储结构线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表的元素。而顺序存储结构,就是对线性表采用顺序存储方式存储数据时所使用变量的描述。下面从顺序表及其基本运算两方面来讨论顺序存储结构。第6页,课件共26页,创作于2023年2月2.2.1顺序表定义简单地说,用顺序存储方法存储的线性表简称为顺序表
(SequentialList)。线性表中的所有元素按其逻辑顺序相继存放在一个连续的存储空间中,其存储地址与次序相同,所以也可以说它是一种随机存取的存储结构。下面通过实例描述推导出数据元素ai的存储地址计算公式,并讲解其随机存取的特点。第7页,课件共26页,创作于2023年2月2.2.2顺序存储结构类型C语言中的数组在内存中占用的存储空间就是一组连续的存储区域,所以,数组具有表示顺序表的数据存储区域的优越特性。下面介绍在C语言中,实现线性表的顺序存储结构的类型定义。定义线性表的顺序存储类型时,用数组来存储线性表中的所有元素,用整型变量来存储线性表的长度。为了便于进行线性表的操作,把用于存储线性表元素的数组和存储线性表长度的变量同时说明在一个记录类型中。第8页,课件共26页,创作于2023年2月2.2.3顺序表的基本运算本节主要讨论采用顺序存储结构来实现各种基本的运算,先介绍求顺序表的长度、判断表是否为空、判断表是否为满、清空表、取顺序表数据元素、显示线性表等较简单的基本运算实现方法。对顺序表的创建、查找、插入、删除等复杂操作单独分节讨论。1.求顺序表的长度2.判断表是否为空3.判断表是否为满4.清空表5.取顺序表数据元素6.显示线性表第9页,课件共26页,创作于2023年2月2.3顺序表的建立顺序表的建立是指实现顺序表的初始化并给各结点关联相应的数据元素。上一节主要介绍顺序表的较简单的运算,而顺序表的建立运算对数据结构初学者来说相对困难些。读者要掌握C语言程序设计方法,且具有一定的编程经验才能独立解决上机实验过程中出现的问题。顺序表建立算法实现如下:voidCreate_List(SqList*L,intn){ inti; for(i=0;i<n;i++) scanf("%d",&L->data[i]); L->length=n; }第10页,课件共26页,创作于2023年2月2.4顺序表的查找顺序表的查找是在指定的顺序表L中查找指定位序i的数据元素或指定数据元素x的位序。若L中存在该序号或其值与x相等的数据元素,则返回值为该数据元素的值或在线性表中的位序。顺序表的查找是最基本的查找方法,主要分为按位置查找元素和按内容查找元素两种操作。第11页,课件共26页,创作于2023年2月2.4.1按位置查找元素顺序表是一种随机存取结构,所以在顺序表中按位置查找元素非常容易,只要查找位置合法,可直接返回对应的数据元素。按位置查找元素算法实现如下:DataTypeLocate_List(SqListL,inti){ DataTypee; if(i<1||i>Length_List(L)) { printf("输入的位置非法!"); return0;} e=L.data[i-1]; return(e); }第12页,课件共26页,创作于2023年2月2.4.2按值查找元素按值查找元素是在顺序表中查找是否有结点值等于给定值x的结点,若有,则返回首次找到的其值为x的结点的存储位置;如果顺序表中没有与给定值匹配的数据元素,返回一个特殊值表示查找失败。顺序表按值查找元素算法实现如下:intLocate_List(SqListL,DataTypex){ inti=0; while(i<L.length&&L.data[i]!=x) i++; if(i<L.length) return(i+1); else return0; }第13页,课件共26页,创作于2023年2月2.4.3顺序表的查找操作的效率分析顺序表是一种随机存取结构,按位置查找时间复杂度为常量O(1),故顺序表中按位置查找非常方便。顺序表的按值查找元素算法中的主要运算是比较,比较的次数与给定值在表中的位置和表长有关。当给定值与第一个数据元素相等时,比较次数为1;当与第二个数据元素相等时,比较次数为2;而当给定值与最后一个元素相等时,比较次数为n。所以,平均比较次数为(n+1)/2。故得出结论,按值查找元素算法的时间复杂度为O(n),查找时间与表的长度有关。第14页,课件共26页,创作于2023年2月2.5顺序表的插入与删除顺序表的插入与删除操作实现向表中添加新的数据元素或删除存在的数据元素。插入与删除是表的最常用、最重要的两个操作,当然学习起来也是比较困难的。两个操作的实现可能涉及前面介绍的所有的算法。第15页,课件共26页,创作于2023年2月2.5.1在顺序表的第i个位置插入一个元素顺序表的插入运算是指在顺序表的第i(1≤i≤n+1)个位置上,插入一个新结点x,使长度为n的线性表:(a1,a2,…ai-1,ai,ai+1,…an)变成长度为n+1的线性表:(a1,a2,…ai-1,x,ai,ai+1,…an)第16页,课件共26页,创作于2023年2月2.5.1在顺序表的第i个位置插入一个元素第17页,课件共26页,创作于2023年2月2.5.2删除顺序表的第i个位置元素顺序表的删除操作是指将表中第i个数据元素从顺序表中删除,删除后使原表长为n的表:(a1,a2,…ai-1,ai,ai+1,…an)变成长度为n-1的线性表:(a1,a2,…ai-1,ai+1,…an)第18页,课件共26页,创作于2023年2月2.5.2删除顺序表的第i个位置元素第19页,课件共26页,创作于2023年2月2.5.3顺序表的插入与删除操作的效率分析本节开头提到顺序表的插入与删除操作的实现可能涉及前面介绍的所有的算法,通过对两算法的操作描述可知,主要涉及对顺序表的判表空、判表满、取表长、查找、取值等操作,其中还附加了大量结点的移动操作。下面分别分析两算法的实现效率。1.顺序表的插入操作算法的时间复杂度分析2.顺序表的删除操作算法的时间复杂度分析第20页,课件共26页,创作于2023年2月2.6顺序表的典型例题线性表是数据结构中最简单、最常用的一种线性结构,也是学习数据结构全部内容的基础,其掌握的好坏直接影响着后继知识的学习。在线性表中,顺序表的结构又是最简单的,本节通过一些典型例题来掌握对顺序表的各种操作实现过程。第21页,课件共26页,创作于2023年2月2.7算法设计实训前面讨论了顺序表的各种操作实例,本节主要介绍顺序存储结构的上机实训。通过对算法设计的学习,可以理解线性表在顺序存储结构下的操作方法,掌握顺序存储结构的常见算法。下面介绍采用顺序存储结构实现的学生成绩管理的详细设计过程。第22页,课件共26页,创作于2023年2月2.7.1学生成绩管理需求分析学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。本实例的实质是完成对学生成绩信息的建立、查找、插入、修改、删除等功能。首先定义学生的数据结构,然后将每个功能封装成函数来完成对数据的操作,最后完成主函数的设计来调用各个子函数,实现设计功能并得出运行结果。第23页,课件共26页,创作于2023年2月2.7.2学生成绩管理数据结构本实例操作数据是一组学生的成绩信息,每条学生的成绩信息由学号、姓名和成绩组成,这组学生的成绩信息具有相同特性,属于同一数据对象,相邻数据元素之间存在序偶关系。由此可以看出,这些数据具有顺序表中数据元素的性质,所以该系统的数据采用顺序表来存储比较合适。在具体的实践应用中,读者要学会使用C语言中提供的结构体和数组来存储顺序表,掌握顺序存储结构的特点。第24页,课件共26页,创作于2023年2月2.7.3学生成绩管理的实现结合学生成绩管理需求分析和增加的数据结构可实现抽象数据类型的描述,给出最终完善后的结构体描述及各功能函数的详细定义。1.抽象数据类型描述2.主要功能模块实现第25页,课件共26页,创作于2023年2月2.8本章小结线性表是最简单、最基本、最常用的数据结构,线性表的特点是数据元素之间存在一对一的线性关系,也就是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年航空行业氢能源应用报告
- 2026年伊春市伊春区事业单位人员招聘笔试备考题库及答案详解
- 2025年荆州市荆州区公务员人员招聘笔试试题及答案详解
- 2026年湖北省荆门市公务员人员招聘考试备考题库及答案详解
- 2025年南京市白下区事业单位人员招聘笔试试题及答案详解
- 2026年淄博市淄川区公务员人员招聘笔试参考题库及答案详解
- 2026年洛阳市老城区公务员人员招聘考试备考试题及答案详解
- 2025年芜湖市鸠江区公务员人员招聘考试试题及答案详解
- 2026年银川市西夏区公务员人员招聘考试备考试题及答案详解
- 2026年咸阳启迪中学招聘教师考试参考题库及答案解析
- 老年人认知障碍预防干预技术标准
- 2026年湖南中医药高等专科学校高职单招笔试职业技能测验试题库含答案解析3套试卷
- 2025年中国养老地产行业市场研究报告:CCRC与居家养老
- 2026-2027学年人教版八年级上学期数学第一次月考模拟测试抢分卷(含答案)
- 成本实操-有色金属矿采选成本核算SOP
- 教师五年专业发展目标达成情况个人总结
- 雨课堂学堂云在线《人工智能原理》单元测试考核答案
- GJB3243A-2021电子元器件表面安装要求
- 2025年4月自考03450公共部门人力资源管理试题
- 网络培训平台管理制度
- T/CNESA 1003-2020电力储能系统用电池连接电缆
评论
0/150
提交评论