第2单元_线性表(顺序表).pptVIP

  • 12
  • 0
  • 约1.08万字
  • 约 58页
  • 2018-09-22 发布于湖北
  • 举报
第2单元_线性表(顺序表)

《实用数据结构》 第10单元 线性表 --线性表的应用 提问 程序=?+? 典型的数据结构(逻辑结构)有哪几种? 算法的评价方法有哪些? 如何评价算法的效率? 学习目标 知识目标 掌握线性表的定义与特点 掌握线性表的顺序存储原理与特点 掌握Arraylist类、 ListT类的使用 能力目标 能够理解线性表的顺序存储原理与特点 能够使用.NET框架的Arraylist类、ListT类解决实际问题; 重点与难点 第一部分:线性表概念及应用 主要内容 线性表的定义 线性表的顺序存储 .NET中表示线性表的类 2.1 线性表的定义及及抽象数据类型 2.1 线性表的定义及及抽象数据类型 日常生活中线性表的例子 人事档案表:按编号升序排列 职工工资表:按工号升序排列 学生成绩表:按学号升序排列 图书目录表:按书目号升序排列 列车时刻表:按列车开出时间升序排列 线性表的定义: n个数据元素的有限序列,n称为线性表的长度。 记为(a1,a2,a3,…,an) 数据元素ai可以是一个数,一个字符或一个记录等。 如(A,B,C,…),(68,38,58,88) 2.1 线性表的定义及及抽象数据类型 线性表的特征: 在数据元素的非空有限集中 唯一的一个被称为“第一个”的数据元素。 存在唯一的一个被称为“最后一个”的数据元素。 除第一个外,表中的每个数据元素均只有一个前驱 除最后一个外,表中的每个数据元素均只有一后继 元素之间为一对一的关系 线性表中的元素通常是变化的,元素之间的逻辑关系是不变的。--表现在删除和插入时需要移动相应位置后的所有元素。 2.1 线性表的定义及及抽象数据类型 线性表的抽象数据类型定义: ADT List is Data: 一个线性表List,假定用标识符List表示,它可以由任一种存储结构实现 Operation: void InitList(List L); //初始化线性表 int Add(List L,ElemTypet obj) //将对象添加到线性的结尾处。返回ArrayList 索引。 void Clear(List L) //从 ArrayList 中移除所有元素。 bool Search( List L,ElemTypet obj) //确定某元素是否在线性表中。 2.2 线性表的定义及其运算 void Insert (List L ,int index, ElemTypet obj) //将元素插入线性表的指定索引处。 void Remove(List L,ElemTypet obj) //从线性表中移除特定对象的第一个匹配项。 void RemoveAt(List L ,int index) //移除线性表 的指定索引处的元素。 void Sort() //排序,对线性表中的元素进行排序。 int IndexOf(List L,ElemTypet obj) //按值查找,查找某元素在线性表中的位置。 ElemTypet GetItem(int index) //取线性表指定索引(下标)处的元素 End List 2.2.1 线性表的顺序存储结构 含义: 线性表的顺序存储结构,也称顺序表,是用一组连续的存储单元依次存放线性表中的元素。 特点:逻辑上相邻的结点物理位置上也相邻。 设线性表的每个元素占d byte,并以所占的第一个存储单元作为数据元素的存储地址,则:  表中第i+1个元素与第i个元素的存储位置关系:     loc(ai+1)=loc(ai)+d 第i个元素的存储位置: loc(ai)=loc(a1)+(i-1)*d 如图所示(另附)  ——从这个意义上讲,顺序表是随机存取结构。 2.2.1 线性表的顺序存储结构 2.2.1线性表的顺序存储结构 NOTE: 线性表的抽象类型类似于C#中类的描述,实际上我们就可以用C#的类来实现抽象数据类型。 用类表示顺序表 把结构类型中定义的数据对象变为类中的字段; 把所有对线性表的基本操作定义为类的方法。 把类中的数组元素类型定义为Object,使得线性表的元素类型可以取任意类型。 第三部分 .NET中的线性表 ArrayList类 ListT类 HashTable类 DictionaryK,V类 任务 使用集合实现班级的学员列表 理解和使用泛型 ListT实现班级的学员列表 集合类学习目标 理解集合的概念 熟练使用集合访问数据 理解泛型概念 熟练使用各种泛型集合 数组的局限 能否动态的维护一个集合?

文档评论(0)

1亿VIP精品文档

相关文档