数据结构线性表学习教案.pptx
《数据结构线性表学习教案.pptx》由会员分享,可在线阅读,更多相关《数据结构线性表学习教案.pptx(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1数据结构数据结构(sh j ji u)线性表线性表第一页,共75页。内容提要内容提要内容提要内容提要1 1、定义线性、定义线性、定义线性、定义线性表抽象数据类表抽象数据类表抽象数据类表抽象数据类型;型;型;型;2 2、讨论、讨论、讨论、讨论(toln)(toln)线性线性线性线性表的顺序存储表的顺序存储表的顺序存储表的顺序存储表示方法;表示方法;表示方法;表示方法;3 3、讨论、讨论、讨论、讨论(toln)(toln)单链单链单链单链表、循环链表表、循环链表表、循环链表表、循环链表等链接存等链接存等链接存等链接存 储表示方法;储表示方法;储表示方法;储表示方法;4 4、线性表的、线性表
2、的、线性表的、线性表的应用实例应用实例应用实例应用实例多项式的多项式的多项式的多项式的 算术运算。算术运算。算术运算。算术运算。第1页/共75页第二页,共75页。2.1 2.1 线性表抽象数据类型线性表抽象数据类型(a)集合结构集合结构(b)线性结构线性结构(c)树形结构树形结构(d)图结构图结构图图1-2 四种基本的结构关系四种基本的结构关系课堂课堂课堂课堂(ktng)(ktng)(ktng)(ktng)提要提要提要提要第第第第2 2 2 2章章章章 线性表线性表线性表线性表2.1 2.1 2.1 2.1 线性表线性表线性表线性表ADTADTADTADT2.2 2.2 2.2 2.2 线性表
3、的顺序线性表的顺序线性表的顺序线性表的顺序表示表示表示表示2.3 2.3 2.3 2.3 线性表的链接线性表的链接线性表的链接线性表的链接表示表示表示表示2.4 2.4 2.4 2.4 多项式的算术多项式的算术多项式的算术多项式的算术运算运算运算运算第2页/共75页第三页,共75页。学 号姓 名 性 别 964501 王小红女 964502 林 悦女 964503 陈菁菁女 964504 张可可男 表1-1 学生情况表1.1.线性表举例线性表举例(j l)(j l)第3页/共75页第四页,共75页。线线性性表表是是n(0)个个元元素素a0,a1,an-1 的的有有序序集集合合,记记为为(a0,
4、a1,an-1)其其中中,n是是线线性性表表中中元元素素的的个个数数,称称为为(chn wi)线线性性表表的的长长度度,n=0 时称为时称为(chn wi)空表。空表。设设ai是线性表(是线性表(a0,a1,an-1)中第)中第i个元素,个元素,i=0,1,n-1,则称,则称 ai 是是ai+1的直接前驱的直接前驱(qinq)元素,元素,ai+1是是ai的直接后继元素。的直接后继元素。线性表是动态数据结构,它的表长可以改变。线性表是动态数据结构,它的表长可以改变。2.2.线性表的定义线性表的定义(dngy)(dngy)第4页/共75页第五页,共75页。ADT 2.1 线性表抽象数据类型线性表抽
5、象数据类型ADT LinearList Data:零个或多个零个或多个(du)元素的有序集合。元素的有序集合。Operations:Create():创建一个空线性表。创建一个空线性表。Destroy():撤消一个线性表。:撤消一个线性表。IsEmpty():若线性表空,则返回:若线性表空,则返回true;否则返回;否则返回false。Length():返回表中元素个数。返回表中元素个数。Find(i,x):在:在x中返回表中下标为中返回表中下标为i的元素的元素ai(即表中第即表中第i+1个元素个元素)。如果不存在,则返回如果不存在,则返回false,否则返回,否则返回true。Search(
6、x):返回:返回x在表中的下标;若在表中的下标;若x不在表中,则返回不在表中,则返回-1。Insert(i,x):在元素:在元素ai之后插入之后插入x。若。若i=-1,则,则x插在第一个元素插在第一个元素a0前。前。插入成功返回插入成功返回true,否则返回,否则返回false。Delete(i):删除元素删除元素ai。删除成功返回。删除成功返回true,否则返回,否则返回false。Update(i,x):将元素:将元素ai的值修改为的值修改为x。修改成功返回。修改成功返回true,否则返回,否则返回 false。Output(out):把表送至输出流。:把表送至输出流。3.3.线性表抽象数
7、据类型线性表抽象数据类型第5页/共75页第六页,共75页。4.线性表的线性表的C+模板模板(mbn)抽象类抽象类程序程序(chngx)2.1 线性表的线性表的C+类类template class LinearList public:virtual bool IsEmpty()const=0;virtual int Length()const=0;virtual bool Find(int i,T&x)const=0;virtual int Search(T x)const=0;virtual bool Insert(int i,T x)=0;virtual bool Delete(int i)
8、=0;virtual bool Update(int i,T x)=0;virtual void Output(ostream&out)const=0;proteced:int n;/线性表的长度线性表的长度;第6页/共75页第七页,共75页。2.2 2.2 线性表的顺序线性表的顺序(shnx)(shnx)表示表示 1.线性表的两种存储线性表的两种存储(cn ch)表示法表示法 (1)顺序表示法顺序表示法 (2)链接表示法链接表示法2.线性表的顺序表示法线性表的顺序表示法 是用一组地址连续的存储是用一组地址连续的存储(cn ch)单元依次存储单元依次存储(cn ch)线性表中元素。线性表中元素
9、。顺序表示的线性表程为顺序表。顺序表示的线性表程为顺序表。存储存储(cn ch)结构是逻辑结构在机内的映象,包括:元素和关系。结构是逻辑结构在机内的映象,包括:元素和关系。课堂提要课堂提要课堂提要课堂提要第第第第2 2 2 2章章章章 线性表线性表线性表线性表2.1 2.1 2.1 2.1 线性表线性表线性表线性表ADTADTADTADT2.2 2.2 2.2 2.2 线性表的顺线性表的顺线性表的顺线性表的顺序表示序表示序表示序表示(biosh)(biosh)(biosh)(biosh)2.3 2.3 2.3 2.3 线性表的链线性表的链线性表的链线性表的链接表示接表示接表示接表示(biosh
10、)(biosh)(biosh)(biosh)2.4 2.4 2.4 2.4 多项式的算多项式的算多项式的算多项式的算术运算术运算术运算术运算第7页/共75页第八页,共75页。(1)线性表的顺序)线性表的顺序(shnx)表示法表示法 若已知顺序表示的线性表中每个元素占若已知顺序表示的线性表中每个元素占 k个存储单元个存储单元(cn ch dn yun),第一个元素,第一个元素a0在计算机内存中的地址是在计算机内存中的地址是 loc(a0),则表中任意一个元素,则表中任意一个元素ai在内存中的存储地址在内存中的存储地址loc(ai)为为loc(ai)=loc(a0)+i*k 只要给定只要给定loc
11、(a0)和和k,就可以确定线性表中任意一个元素的存储地址,换句话说,顺序表是一种随机存取结构。,就可以确定线性表中任意一个元素的存储地址,换句话说,顺序表是一种随机存取结构。a a0 0 a a1 1 a ai i a an-1n-1 (2 2)地址)地址(dzh)(dzh)计算公式:计算公式:第8页/共75页第九页,共75页。3.3.顺序顺序(shnx)(shnx)表类表类程序程序(chngx)2.1 线性表的线性表的C+类类template class LinearList public:virtual bool IsEmpty()const=0;virtual int Length()c
12、onst=0;virtual bool Find(int i,T&x)const=0;virtual int Search(T x)const=0;virtual bool Insert(int i,T x)=0;virtual bool Delete(int i)=0;virtual bool Update(int i,T x)=0;virtual void Output(ostream&out)const=0;proteced:int n;/线性表的长度线性表的长度;第9页/共75页第十页,共75页。template class SeqList:public LinearList publ
13、ic:SeqList(int mSize);SeqList()Delete elements;bool IsEmpty()const;int Length()const;bool Find(int i,T&x)const;int Search(T x)const;bool Insert(int i,T x);bool Delete(int i);bool Update(int i,T x);void Output(ostream&out)const;private:int maxLength;/顺序表的最大长度顺序表的最大长度 T*elements;/动态动态(dngti)一维数组的指针一维数
14、组的指针;SeqList L(5);/SeqList L(5);/定义了一个定义了一个(y)(y)有有5 5个整型值的顺序表对个整型值的顺序表对象象程序程序(chngx)2.2(chngx)2.2 线性表的顺序表实现线性表的顺序表实现第10页/共75页第十一页,共75页。class SeqList:public LinearList public:SeqList(int mSize);private:int maxLength;T*elements;/动态动态(dngti)一维数组的指针一维数组的指针 4.4.动态一维数组描述动态一维数组描述(mio sh)(mio sh)顺序表顺序表 a a
15、0 0 a a1 1 a ai i a an-1n-1 0 1 0 1 i i n-1 n-1 maxLength-1 maxLength-1顺序顺序(shnx)(shnx)表在一维数组中的存储表在一维数组中的存储第11页/共75页第十二页,共75页。(1)构造函数构造函数 /创建一个顺序创建一个顺序(shnx)表表template SeqList:SeqList(int mSize)maxLength=mSize;elements=new TmaxLength;n=0;(2)析构函数析构函数 /撤消一个顺序撤消一个顺序(shnx)表表template SeqList:SeqList()del
16、ete elements;第12页/共75页第十三页,共75页。(1)查找下标为查找下标为i的元素的元素ai Find(i,x):在在x中返回表中下标为中返回表中下标为i的元素的元素ai(即表中即表中 第第i+1个元素个元素)。如果。如果(rgu)不存在,则返回不存在,则返回 false,否则返回,否则返回true。x=elementsi;x=elementsi;渐近时间渐近时间(shjin)(shjin)复杂度:复杂度:O(1)O(1)5.5.在顺序存储表示下实现线性表上定义在顺序存储表示下实现线性表上定义(dngy)(dngy)的操作的操作 a a0 0 a a1 1 a ai i a a
17、n-1n-1 0 1 0 1 i i n-1 n-1 maxLength-1 maxLength-1第13页/共75页第十四页,共75页。templatebool SeqList:Find(int i,T&x)const if(in-1)coutOut of Boundsendl;return false;x=elementsi;return true;渐近时间渐近时间(shjin)复杂度:复杂度:O(1)第14页/共75页第十五页,共75页。(2)插入操作)插入操作(cozu)Insert(i,x):在表中下标为在表中下标为i的元素的元素ai后插入后插入x。若。若i=-1,则将新元素,则将新
18、元素x插在插在最前面。若插入成功,返回最前面。若插入成功,返回true;后移后移n-i-1n-i-1个元素个元素(yun s)(yun s)0 1 0 1 i i+1 i+2 i i+1 i+2 n-1 n-1 maxLengthmaxLength-1-1 a a0 0 a a1 1 a ai i 插入插入(ch(ch r)r)操作操作a an-1n-1x xa ai+1i+1第15页/共75页第十六页,共75页。插入操作插入操作(cozu)算法:算法:templatebool SeqList:Insert(int i,T x)if(in-1)coutOut Of Boundsendl;ret
19、urn false;if(n=maxLength)coutOverFlowi;j-)elementsj+1=elementsj;elementsi+1=x;n+;return true;第16页/共75页第十七页,共75页。分析:分析:设顺序表长度为设顺序表长度为n,则在位置,则在位置i(i=-1,0,n-1)后插入一个元素)后插入一个元素要移动要移动 n-i-1个元素。个元素。设共有设共有n+1个可插入元素的位置,并设在各位置处插入元素的概个可插入元素的位置,并设在各位置处插入元素的概率是相等的,即率是相等的,即Pi=1/(n+1),则平均,则平均(pngjn)情况下在表中插入情况下在表中插
20、入元素需要移动元素的个数为:元素需要移动元素的个数为:渐近时间渐近时间(shjin)(shjin)复杂度:复杂度:O(n)O(n)第17页/共75页第十八页,共75页。a ai i a a0 0 a ai-1 i-1 (3 3)删除操作)删除操作(cozu)(cozu)Delete(i)Delete(i):删除元素删除元素aiai。前移前移n-i-1n-i-1个元个元素素 0 0 i-1 i i+1 i+2 i-1 i i+1 i+2 n-1 n-1 maxLengthmaxLength-1-1删除删除(shnch)(shnch)操作操作a an-1n-1删除它删除它a ai+1i+1第18页
21、/共75页第十九页,共75页。删除操作删除操作(cozu)算法:算法:template bool SeqList:Delete(int i)if(!n)coutUnderFlowendl;return false;if(in-1)coutOut Of Boundsendl;return false;for(int j=i+1;jn;j+)elementsj-1=elementsj;n-;return true;第19页/共75页第二十页,共75页。分析分析:设顺序表长度设顺序表长度(chngd)为为n,则删除元素则删除元素ai(i=0,n-1),要移动要移动n-i-1元素。若删除表中每个元素的
22、概率是相等的,即元素。若删除表中每个元素的概率是相等的,即Qi=1/n,则平均情,则平均情况下从表中删除一个元素需要移动元素的个数为:况下从表中删除一个元素需要移动元素的个数为:渐近时间渐近时间(shjin)(shjin)复杂度:复杂度:O(n)O(n)第20页/共75页第二十一页,共75页。(4)顺序表的应用)顺序表的应用(yngyng)集合求集合求“并并”求集合(jh)A和B的并两集合求并的算法思想是:两集合求并的算法思想是:置置i=0;若若i小于集合小于集合LB的元素个数,则做的元素个数,则做,否则转,否则转;取出集合取出集合LB中中i位置的元素位置的元素x;若若x不在集合不在集合LA中
23、,则将其插入中,则将其插入(ch r)集合集合LA的最后位置;的最后位置;i+;转转继续继续 结束。结束。求集合A和B的并求集合A和B的并例例2.1 求集合求集合A和和B的并的并A 分析:集合可以看成是线性表,用顺序表分析:集合可以看成是线性表,用顺序表LA和和LB分别表示集合分别表示集合A和和B,“并并”的结果放在的结果放在LA中。中。第21页/共75页第二十二页,共75页。用顺序表类用顺序表类SeqListSeqList实现集合实现集合“并并”算法的程序,存入算法的程序,存入头文件头文件seqlistu.hseqlistu.h中。中。#include seqlist.h#include s
24、eqlist.htemplate template void Union(SeqList&LA,SeqList LB)void Union(SeqList&LA,SeqList LB)T x;T x;for(int i=0;iLB.Length();i+)for(int i=0;iLB.Length();i+)LB.Find(i,x);/LB.Find(i,x);/取出集合取出集合LBLB中下标中下标(xi bio)(xi bio)为为i i的元素放入的元素放入x x中中 if(LA.Search(x)=-1)/if(LA.Search(x)=-1)/如果集合如果集合LALA中不存在中不存在x
25、,x,则则将将 LA.Insert(LA.Length()-1,x);/LA.Insert(LA.Length()-1,x);/其插入集合其插入集合LALA中中 第22页/共75页第二十三页,共75页。#include seqlistu.hconst int SIZE=20;void main()SeqList LA(SIZE);/定义顺序表对象定义顺序表对象LA,表示集合,表示集合A SeqList LB(SIZE);/定义顺序表对象定义顺序表对象LB,表示集合,表示集合B for(int i=0;i5;i+)/插入元素插入元素04,构造,构造(guzo)集合集合LA=0,1,2,3,4 L
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 线性 学习 教案
限制150内