- 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
您可能关注的文档
- 第一课 美好生活的向导第二框 关于世界观的学说.ppt
- 第七章 分散型测控网络技术.ppt
- 第七章 国家机关(上).ppt
- 第七章 机械的运转及其速度波动的调节.ppt
- 第七章 违约责任.ppt
- 第七章技术移转授课教师:林俊裕空中大学管理与资讯学系.ppt
- 第三单元 统一国家的建立.ppt
- 第三单元综合探究.ppt
- 第三章 从现代课程论到后现代课程论.ppt
- 第三章 商事行为法律制度.ppt
- 数据流通利用设施发展研究白皮书_37页_1004kb.pptx
- 食品饮料行业深度报告_原奶价格周期向上_板块配置价值愈显_59页_2mb.pptx
- 风电2026年行业策略_国内需求稳升_出海加速_国内外盈利共振_34页_2mb.pptx
- 数读IPO系列_2025年沪深新股总结_36页_1mb.pptx
- 2026年投资展望系列之十二_股债之锚_2026通胀的温度_34页_1mb.pptx
- 家电行业资金面系列专题一_从业绩博弈到稀缺性溢价——家电板块估值重构与白电龙头新机遇_47页_3mb.pptx
- 医药行业2026年度医疗器械策略报告出海篇_破局内卷_向全球价值链中高端迈进_53页_2mb.pptx
- 出海概念股票池及主题指数_扬帆出海孕育的四个投资机遇_17页_1mb.pptx
- 交运行业2026年投资策略_航空盈利修复可期_航运绿色转型提速_45页_3mb.pptx
- 资本周期系列_从业绩变脸到价值修复_22页_697kb.pptx
原创力文档

文档评论(0)