数据结构 第二章教学课件 .ppt
《数据结构 第二章教学课件 .ppt》由会员分享,可在线阅读,更多相关《数据结构 第二章教学课件 .ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构 第二章教学课件 第二章第二章 线性表线性表数据结构数据结构目目录录第二章第二章第二章第二章线性表线性表线性表线性表4 41 12 23 3 线性表的逻辑结构线性表的逻辑结构线性表的顺序表示和实现线性表的顺序表示和实现线性表的链式表示和实现线性表的链式表示和实现小结小结总总体要求体要求掌握掌握线性表的逻辑结构及两种不同的存储结构;线性表的逻辑结构及两种不同的存储结构;掌握掌握两类存储结构(顺序和链式存储结构)的表示两类存储结构(顺序和链式存储结构)的表示方法,以及单链表、循环链表、双向链表的特点;方法,以及单链表、循环链表、双向链表的特点;掌握掌握线性表在顺序存储结构及链式存储结构上实
2、现线性表在顺序存储结构及链式存储结构上实现基本操作(查找、插入、删除、等)的算法及分析;基本操作(查找、插入、删除、等)的算法及分析;能够针对具体应用问题的要求和性质,选择合适的能够针对具体应用问题的要求和性质,选择合适的存储结构设计出有效算法,解决与线性表相关的实际存储结构设计出有效算法,解决与线性表相关的实际问题;问题;2.1 线线性表的性表的逻辑结逻辑结构构 线性表(线性表(Linear ListLinear List)是是n n个数据元素的有限个数据元素的有限序列,可表示为:序列,可表示为:(a1,a2,an)。u2.1.1 线性表的概念线性表的概念a ai i 是表中数据元素是表中数
3、据元素是表中数据元素是表中数据元素 称称 i 为为 ai 在线性表中的在线性表中的位序位序。称称 n 为线性表的为线性表的表长表长;称称 n=0 时的线性表为时的线性表为空表空表。例例1、26个大写英文字母组成的字母表个大写英文字母组成的字母表 (A,B,Z)例例2、某学校从、某学校从2000年开始拥有的职工数目年开始拥有的职工数目(48,64,77,93,112,136,167,235)该线性表的数据元该线性表的数据元素是一个字母素是一个字母该线性表的数据元该线性表的数据元素是一个正整数素是一个正整数例例3、图书信息表、图书信息表该线性表的数据元素是该线性表的数据元素是一本图书的基本信息一本
4、图书的基本信息线线性表的特点性表的特点a1a2a3a4a5a61 1集合中必存在唯一的一个集合中必存在唯一的一个“第一元素第一元素”;2 2集合中必存在唯一的一个集合中必存在唯一的一个 “最后元素最后元素”3 3除最后元素之外,均有除最后元素之外,均有 唯一的后继唯一的后继;4 4除第一元素之外,均有除第一元素之外,均有 唯一的前驱唯一的前驱。初始化初始化:构造一个空的线性表。:构造一个空的线性表。销毁销毁:销毁一个已存在的线性表。:销毁一个已存在的线性表。插入插入:第:第i i个位置之前插入一个新元素。个位置之前插入一个新元素。删除删除:删除线性表中的第:删除线性表中的第i i个数据元素。个
5、数据元素。更新更新:更新第:更新第i i个数据元素。个数据元素。查找查找:找出线性表中满足特定条件的元素的位置:找出线性表中满足特定条件的元素的位置获取获取:取线性表中的第:取线性表中的第i i个数据元素个数据元素判空判空:判断当前线性表是否为空:判断当前线性表是否为空求长度求长度:求出线性表中数据元素的个数:求出线性表中数据元素的个数正序遍历正序遍历:依次访问线性表中每个元素并输出:依次访问线性表中每个元素并输出u2.1.2 线性表的基本操作线性表的基本操作引引用用型型加加工工型型u2.2 线性表的顺序表示和实现线性表的顺序表示和实现2.2.1 线性表的顺序表示线性表的顺序表示 线性表的顺序
6、表示指的是用一组线性表的顺序表示指的是用一组地址连续的存地址连续的存储单元储单元依次存储线性表的数据元素。通常称这种存依次存储线性表的数据元素。通常称这种存储结构的线性表为储结构的线性表为顺序表顺序表。LOC(ai)=LOC(a1)+(i-1)L每个元素需占每个元素需占用用L L个存储单元个存储单元2.2.2 顺序表的实现顺序表的实现顺序存储结构线性表泛型类的定义如下:顺序存储结构线性表泛型类的定义如下:public class sequenceListfinal int maxSize=10;private T listArray;private int length;public sequ
7、enceList()public sequenceList(int n)public boolean add(T obj,int pos)public T delete(int pos)public int find(T obj)public T value(int pos)./此处省略部分成员方法此处省略部分成员方法 顺序表中一维数组顺序表中一维数组的初始长度的初始长度存储元素的数组对象存储元素的数组对象保存顺序表的当前长度保存顺序表的当前长度【算法算法2-2-1】顺序表的初始化顺序表的初始化无参构造方法无参构造方法public sequenceList()length=0;/线性表初始为空
8、线性表初始为空listArray=(T)new ObjectmaxSize;由于不能实例化一个泛型对由于不能实例化一个泛型对象,所以在构造器中可以先象,所以在构造器中可以先实例化一个实例化一个ObjectObject数组,然数组,然后把它转换为一个泛型数组。后把它转换为一个泛型数组。有参构造方法有参构造方法public sequenceList(int n)if(n=0)System.out.println(error);System.exit(1);length=0;/线性表初始为空线性表初始为空 listArray=(T)new Objectn;顺序表的插入顺序表的插入O(n)【算法算法2
9、-2-2】顺序表的插入顺序表的插入public boolean add(T obj,int pos)if(poslength+1)System.out.println(pos值不合法值不合法);return false;.如果顺序表数组空间已经存满,见下一页如果顺序表数组空间已经存满,见下一页 for(int i=length;i=pos;i-)listArrayi=listArrayi-1;listArraypos-1=obj;length+;return true;将插入位置之后的数据元素将插入位置之后的数据元素组,按照从后到前的次序依组,按照从后到前的次序依次后移一个位置。次后移一个位置
10、。/如果顺序表数组空间已经存满,如果顺序表数组空间已经存满,重新分配存储空间重新分配存储空间if(length=listArray.length)T p=(T)new Objectlength*2;for(int i=0;ilength;i+)pi=listArrayi;listArray=p;把原数组中的元素复把原数组中的元素复制到新的存储空间制到新的存储空间更改更改listArray所所引用的地址引用的地址顺序表的删除顺序表的删除O(n)删除删除顺序表顺序表一个数据元素,平均约移动表一个数据元素,平均约移动表中一半元素中一半元素,时间复杂度为,时间复杂度为【算法算法2-2-3】顺序表的删除
11、顺序表的删除public T remove(int pos).顺序表为空顺序表为空/删除位置不合法均无法执行删除位置不合法均无法执行 T x=listArraypos-1;for(int i=pos;i=length;i+)listArrayi-1=listArrayi;length-;return x;将删除位置之后的数据元将删除位置之后的数据元素组,按照从前到后的次素组,按照从前到后的次序依次前移一个位置。序依次前移一个位置。【算法算法2-2-4】顺序表的查找顺序表的查找public int find(T obj)if(isEmpty()System.out.println(顺序表为空顺序
12、表为空);return-1;elsefor(int i=0;ilength;i+)if(listArrayi.equals(obj)return i+1;return-1;【算法算法2-2-5】顺序表的获取元素顺序表的获取元素public T value(int pos)if(isEmpty()System.out.println(顺序表为空顺序表为空);return null;else if(poslength)System.out.println(pos值不合法值不合法);return null;return listArraypos-1;【算法算法2-2-6】顺序表的更新元素顺序表的更新
13、元素public boolean modify(T obj,int pos)if(isEmpty()System.out.println(顺序表为空顺序表为空);return false;else if(poslength)System.out.println(error);return false;listArraypos-1=obj;return true;【算法算法2-2-7】顺序表的判空顺序表的判空public boolean isEmpty()return length=0;【算法算法2-2-8】顺序表求长度顺序表求长度public int size()return length;【
14、算法算法2-2-9】顺序表正序输出顺序表正序输出public void nextOrder()for(int i=0;ilength;i+)System.out.println(listArrayi);u2.2.3 顺序表的应用顺序表的应用【例例2-1】有顺序表有顺序表LA和和LB,其元素均按从小到大的,其元素均按从小到大的升序排列,编写一个算法将它们合并成一个顺序表升序排列,编写一个算法将它们合并成一个顺序表LC,要求,要求LC的元素也是从小到大的升序排列。的元素也是从小到大的升序排列。算法思路:算法思路:依次扫描依次扫描LA和和LB的元素,比较线性表的元素,比较线性表LA和和LB当前元素的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第二章教学课件 第二 教学 课件
限制150内