第二章 线性表.pptVIP

  • 7
  • 0
  • 约4.47千字
  • 约 45页
  • 2017-02-15 发布于北京
  • 举报
第二章 线性表.ppt

第二章 线性表 教学目的和要求: 理解线性表的逻辑结构、存储结构。 通过设计一个线性表,进一步提高编程能力。 教学重点和难点:线性表的插入、删除 总授课时间:12课时 2.1线性表的类型定义 定义: n(?0)个数据元素的有限序列,记作(a1, …ai-1, ai,ai+1,…, an) 其中,ai 是表中数据元素,n 是表长度。 特点: 同一线性表中元素具有相同特性。 相邻数据元素之间存在序偶关系(可以理解为先后关系)。 除第一个元素外,其他每一个元素有一个且仅有一个直接前驱。 除最后一个元素外,其他每一个元素有一个且仅有一个直接后继。 2.2线性表的顺序表示和实现-----顺序表 此处加入C++中vector模板的使用方法(已经录制的视频),让大家从直观上了解向量(即线性表)的优点。我们这门课主要探究的是构造数据结构的原理,强调大家在了解原理的基础上既可能的使用已经存在的优秀代码。 1、顺序表的定义:将线性表中的元素相继存放在一个连续的存储空间中。 存储结构:数组。 特点:线性表的顺序存储方式。 存取方式:随机存取 顺序存储结构示意图 2、顺序表中元素ai存储位置的计算公式 Loc(ai)=Loc(ai-1)+L Loc(ai)=Loc(a1)+(i-1)*L 其中L是单个元素所占的字节数 3、顺序表的基本操作 求表的长度 可以事先定义一个变量Length,其初始值为0。每插入一个元素,其值增加一。可以看出,Length始终指向顺序表中最顶端元素。 在顺序表中插入元素 在顺序表中插入元素 插入成功 推广一下:在长度为n的线性表中插入一个元素e,平均需要移动几次: 在第n+1处插入,需要移动0次 在第n处插入,需要移动1次 在第n-1处插入,需要移动2次 … 在第1处插入,需要移动n次 所以,1——n+1个位置,共有n+1次,平均移动次数为: 在顺序表中删除元素 在顺序表中删除元素 在顺序表中删除元素20 在顺序表中删除元素20 在顺序表中删除元素20 在顺序表中删除元素20 在顺序表中删除元素20 在顺序表中删除元素20 删除成功 推广一下:在长度为n的线性表中删除一个元素e,平均需要移动几次: 删除第1个元素,需要移动n-1次 删除第2个元素,需要移动n-2次 删除第3个元素,需要移动n-3次 …… 删除第n个元素,需要移动0次 所以,1——n,共n个位置,平均需要移动: 返回指定位置元素的值。GetItem(int i) 返回线性表中第i个位置的值。由于是基于数组的,故按照下标访问元素非常方便。如果数组的首地址(或者说数组名)为elem,则语句为 return elem[i]。 查找某个元素是否在顺序表中存在:Find(DataType e)。 查找元素e是否在顺序表中存在,若存在返回其下标,否则返回-1。需要从前到后或者从后到前逐个比较 4、顺序表的具体实现 为了实现顺序表,肯定要使用一块连续的空间;为了能够动态的改变空间的大小,肯定要使用动态空间的申请方法;为了操作方便,引入一个变量来记录顺序表中元素的多少,引入一个变量来记录当前共有多少个空间;为了操作方便,顺序表的第一个空间可以不用。 头文件: #includestdlib.h//C语言的标准库 #includeiostream.h//C++的输入输出 #define List_INIT_SIZE 3 //线性表存储空间的初始分配量 #define LISTINCREMENT 3 //线性表存储空间的分配增量 typedef int ElemType; typedef struct { ElemType *elem;//存储空间首地址 int length;//线性表中元素个数 int listsize;//当前线性表的最大容量 }SqList; int InitList_Sq(SqList L) {//构造一个空的线性表 L.elem=(ElemType *)malloc(List_INIT_SIZE*sizeof(ElemType));//申请空间 //也可以用下面语句实现 //L.elem=new ElemType[List_INIT_SIZE]; if(0==L.elem) return 0; L.length=0; L.listsize=List_INIT_SIZE; return 1; } int ListInsert_Sq(SqList L,int i,ElemType e) {//在顺序表L的第i个位置插入元素e if(i1 || iL.length+1 ) return 0;//插入位置不合法 if(L.length=L.listsize-1

文档评论(0)

1亿VIP精品文档

相关文档