数据结构第02章(清华殷人昆版)学习教案.pptx
《数据结构第02章(清华殷人昆版)学习教案.pptx》由会员分享,可在线阅读,更多相关《数据结构第02章(清华殷人昆版)学习教案.pptx(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1数据结构数据结构(sh j ji u)第第02章章(清华清华 殷人昆版殷人昆版)第一页,共66页。作为作为(zuwi)抽象数据类型抽象数据类型的数组的数组n n一维数组一维数组n n 一维数组的示例一维数组的示例(shl)35 27 49 18 60 54 77 83 41 020 1 2 3 4 5 6 7 8 9第1页/共66页第二页,共66页。一维数组的特点一维数组的特点(tdin)n n连续连续(linx)存储的线性表(别名存储的线性表(别名 向量)向量)第2页/共66页第三页,共66页。数组的定义数组的定义数组的定义数组的定义(dngy)(dngy)(dngy)(dngy)和
2、初和初和初和初始化始化始化始化#include class szcl int e;public:szcl()e=0;szcl(int value)e=value;int get_value()return e;第3页/共66页第四页,共66页。main()szcl a13=3,5,7,*elem;for(int i=0;i 3;i+)cout a1i.get_value()“n”;/静静态态(jngti)elem=a1;for(int i=0;i 3;i+)cout get_value()“n”;/动态动态 elem+;return 0;第4页/共66页第五页,共66页。一维数组一维数组一维数
3、组一维数组(Array)(Array)类的定义类的定义类的定义类的定义(dngy)(dngy)#include#include template class Array Type*elements;/数组存放数组存放(cnfng)空间空间 int ArraySize;/当前长度当前长度 void getArray();/建立数组建立数组空间空间 public:Array(int Size=DefaultSize);Array(const Array&x);第5页/共66页第六页,共66页。Array()delete elements;Array&operator=/数组复制 (const Ar
4、ray&A);Type&operator (int i);/取元素(yun s)值 int Length()const return ArraySize;/取数组长度 void ReSize(int sz);/扩充数组 第6页/共66页第七页,共66页。template void Array:getArray()/私有函数:创建数组存储私有函数:创建数组存储(cn ch)空间空间 elements=new TypeArraySize;if(elements=NULL)arraySize=0;cerr “存储存储(cn ch)分配错!分配错!endl;return;一维数组公共一维数组公共一维数
5、组公共一维数组公共(gnggng)(gnggng)操作操作操作操作的实现的实现的实现的实现第7页/共66页第八页,共66页。template Array:Array(int sz)/构造函数构造函数 if(sz=0)arraySize=0;cerr “非法非法(fif)数组大小数组大小”endl;return;ArraySize=sz;getArray();第8页/共66页第九页,共66页。template Array:Array(Array&x)/复制复制(fzh)构造函数构造函数 int n=ArraySize=x.ArraySize;elements=new Typen;if(eleme
6、nts=NULL)arraySize=0;cerr “存储分配错存储分配错”endl;return;Type*srcptr=x.elements;Type*destptr=elements;while(n-)*destptr+=*srcptr+;第9页/共66页第十页,共66页。template Type&Array:operator (int i)/按数组名及下标按数组名及下标 i,取数组元素的值,取数组元素的值 if(i ArraySize-1)cerr “数组下标超界数组下标超界”endl;return NULL;return elementi;使用使用(shyng)该函数于赋值语句该函
7、数于赋值语句 Pos=Positioni-1+Numberi-1第10页/共66页第十一页,共66页。template void Array:Resize(int sz)if(sz=0&sz!=ArraySize)Type*newarray=new Typesz;/创建新数组创建新数组 if(newarray=NULL)cerr “存储存储(cn ch)分配错分配错”endl;return;int n=(sz 0 a,i=0 a+i*la第14页/共66页第十五页,共66页。n n 二维数组二维数组二维数组二维数组行优先行优先(yuxin)LOC(j,k)=a+(j*m+k)*l第15页/共6
8、6页第十六页,共66页。n n 三维数组三维数组FF 各维元素个数为各维元素个数为各维元素个数为各维元素个数为 m1,m2,m3 m1,m2,m3FF 下标为下标为下标为下标为 i1,i2,i3 i1,i2,i3的数组元素的存储地址的数组元素的存储地址的数组元素的存储地址的数组元素的存储地址(dzh(dzh):FF (按页(按页(按页(按页/行行行行/列存放)列存放)列存放)列存放)LOC(i1,i2,i3)=a+(i1*m2*m3+i2*m3+i3)*l 前前i1页总页总元素元素(yun s)个数个数第第i1页的页的前前i2行总行总元素元素(yun s)个数个数第16页/共66页第十七页,共
9、66页。n n n n 维数组维数组维数组维数组FF 各维元素个数为各维元素个数为各维元素个数为各维元素个数为 m1,m2,m3,mn m1,m2,m3,mnFF 下标下标下标下标(xi bio)(xi bio)为为为为 i1,i2,i3,in i1,i2,i3,in 的数组的数组的数组的数组元素的存储地址:元素的存储地址:元素的存储地址:元素的存储地址:LOC(i1,i2,in)=a+(i1*m2*m3*mn+i2*m3*m4*mn+in-1*mn+in)*l 第17页/共66页第十八页,共66页。线性表线性表(Linear List)n n线性表的定义和特点线性表的定义和特点线性表的定义和
10、特点线性表的定义和特点n n 定义定义定义定义 n n(0 0)个数据元素的有限序列)个数据元素的有限序列)个数据元素的有限序列)个数据元素的有限序列(xli)(xli),记作,记作,记作,记作n n (a1,a2,ana1,a2,an)n n ai ai 是表中数据元素,是表中数据元素,是表中数据元素,是表中数据元素,n n 是表长度。是表长度。是表长度。是表长度。n n 遍历遍历遍历遍历 逐项访问:逐项访问:逐项访问:逐项访问:n n 从前向后从前向后从前向后从前向后 从后向前从后向前从后向前从后向前 第18页/共66页第十九页,共66页。线性表的特点线性表的特点(tdin)n n除第一个
11、元素外,其他每一个元素有一除第一个元素外,其他每一个元素有一除第一个元素外,其他每一个元素有一除第一个元素外,其他每一个元素有一个且仅有一个直接个且仅有一个直接个且仅有一个直接个且仅有一个直接(zhji)(zhji)前驱。前驱。前驱。前驱。n n除最后一个元素外,其他每一个元素有除最后一个元素外,其他每一个元素有除最后一个元素外,其他每一个元素有除最后一个元素外,其他每一个元素有一个且仅有一个直接一个且仅有一个直接一个且仅有一个直接一个且仅有一个直接(zhji)(zhji)后继。后继。后继。后继。第19页/共66页第二十页,共66页。顺序顺序(shnx)表表(Sequential List)n
12、 n顺序表的定义和特点顺序表的定义和特点顺序表的定义和特点顺序表的定义和特点n n 定义定义定义定义 将线性表中的元素相继存放在一个将线性表中的元素相继存放在一个将线性表中的元素相继存放在一个将线性表中的元素相继存放在一个连续的存储空间中。连续的存储空间中。连续的存储空间中。连续的存储空间中。n n 可利用一维数组描述存储结构可利用一维数组描述存储结构可利用一维数组描述存储结构可利用一维数组描述存储结构n n 特点特点特点特点 线性表的顺序存储方式线性表的顺序存储方式线性表的顺序存储方式线性表的顺序存储方式(fngsh)(fngsh)n n 遍历遍历遍历遍历 顺序访问顺序访问顺序访问顺序访问
13、25 34 57 16 48 09 0 1 2 3 4 5 data第20页/共66页第二十一页,共66页。顺序顺序顺序顺序(shnx)(shnx)表表表表(SeqList)(SeqList)类的类的类的类的定义定义定义定义template template class SeqList class SeqList Type*data;/Type*data;/顺序表存储数组顺序表存储数组顺序表存储数组顺序表存储数组 int MaxSize;int MaxSize;/最大允许长度最大允许长度最大允许长度最大允许长度 int last;int last;/当前最后元素当前最后元素当前最后元素当前最后
14、元素(yun s)(yun s)下标下标下标下标public:public:SeqList(int MaxSize=defaultSize);SeqList(int MaxSize=defaultSize);SeqList()delete data;SeqList()delete data;int Length()const return last+1;int Length()const return last+1;第21页/共66页第二十二页,共66页。int Find(Type&x)const;/查找查找(ch zho)int Locate(int i)const;/定位定位 int In
15、sert(Type&x,int i);/插入插入 int Remove(Type&x);/删除删除 int Next(Type&x);/后继后继 int Prior(Type&x);/前驱前驱 int IsEmpty()return last=-1;int IsFull()return last=MaxSize-1;Type Get(int i)/提取提取 return i last?NULL:datai;第22页/共66页第二十三页,共66页。顺序表部分公共顺序表部分公共顺序表部分公共顺序表部分公共(gnggng)(gnggng)操作的实现操作的实现操作的实现操作的实现 template /
16、构造函数 SeqList:SeqList(int sz)if(sz 0)MaxSize=sz;last=-1;data=new TypeMaxSize;if(data=NULL)MaxSize=0;last=-1;return;第23页/共66页第二十四页,共66页。template int SeqList:Find(Type&x)const /搜索函数:在表中从前搜索函数:在表中从前(cngqin)向后顺序查找向后顺序查找 x int i=0;while(i last)return-1;else return i;第24页/共66页第二十五页,共66页。顺序搜索图示顺序搜索图示25 34 5
17、7 16 48 09 0 1 2 3 4 5 data搜索搜索(su su)16i25 34 57 16 48 09 i25 34 57 16 48 09 i25 34 57 16 48 09 i搜索搜索(su su)成功成功第25页/共66页第二十六页,共66页。25 34 57 16 48 0 1 2 3 4data搜索(su su)50i25 34 57 16 48 i25 34 57 16 48 i25 34 57 16 48 i25 34 57 16 48 i搜索搜索(su su)失败失败第26页/共66页第二十七页,共66页。搜索成功搜索成功 若搜索概率相等,则若搜索概率相等,则搜
18、索不成功搜索不成功 数据数据(shj)比较比较 n 次次第27页/共66页第二十八页,共66页。表项的插入表项的插入(ch r)25 34 57 16 48 09 63 0 1 2 3 4 5 6 7data50插入(ch r)x25 34 57 50 16 48 09 63 0 1 2 3 4 5 6 7data50i第28页/共66页第二十九页,共66页。template int SeqList:Insert(Type&x,int i)/在表中第在表中第 i 个位置插入个位置插入(ch r)新元素新元素 x if(i last+1|last=MaxSize-1)return 0;/插入插入
19、(ch r)不成功不成功 else last+;for(int j=last;j i;j-)dataj=dataj-1;datai=x;return 1;/插入插入(ch r)成功成功 第29页/共66页第三十页,共66页。表项的删除表项的删除(shnch)25 34 57 50 16 48 09 63 0 1 2 3 4 5 6 7data16删除(shnch)x25 34 57 50 48 09 63 0 1 2 3 4 5 6 7data第30页/共66页第三十一页,共66页。template int SeqList:Remove(Type&x)/在表中删除在表中删除(shnch)已有元
20、素已有元素 x int i=Find(x);/在表中搜在表中搜索索 x if(i=0)last-;for(int j=i;j=last;j+)dataj=dataj+1;return 1;/成功删除成功删除(shnch)return 0;/表中没有表中没有 x 第31页/共66页第三十二页,共66页。顺序顺序(shnx)表的应用:集合的表的应用:集合的“并并”运算运算void Union(SeqList&A,SeqList&B)int n=A.Length();int m=B.Length();for(int i=1;i=m;i+)int x=B.Get(i);/在在B中取一元中取一元素素 i
21、nt k=A.Find(x);/在在A中搜索中搜索(su su)它它 if(k=-1)/若未找到插入若未找到插入它它 A.Insert(n,x);n+;第32页/共66页第三十三页,共66页。void Intersection(SeqList&A,SeqList&B)int n=A.Length();int m=B.Length();int i=0;while(i n)int x=A.Get(i);/在在A中取一元素中取一元素(yun s)int k=B.Find(x);/在在B中搜索它中搜索它if(k=-1)A.Remove(i);n-;else i+;/未找到在未找到在A中删除它中删除它
22、顺序表的应用顺序表的应用顺序表的应用顺序表的应用(yngyng)(yngyng):集合的:集合的:集合的:集合的“交交交交”运算运算运算运算第33页/共66页第三十四页,共66页。稀疏稀疏(xsh)矩阵矩阵(Sparse Matrix)非零元素非零元素非零元素非零元素(yun s)(yun s)个数远远少于矩阵元素个数远远少于矩阵元素个数远远少于矩阵元素个数远远少于矩阵元素(yun s)(yun s)个数个数个数个数第34页/共66页第三十五页,共66页。稀疏矩阵的抽象数据类型稀疏矩阵的抽象数据类型稀疏矩阵的抽象数据类型稀疏矩阵的抽象数据类型template class template cl
23、ass SparseMatrix;SparseMatrix;template class Trituple template class Trituple /三元组三元组三元组三元组friend class SparseMatrix friend class SparseMatrix private:private:int row,col;int row,col;/非零元素非零元素非零元素非零元素(yun(yun s)s)行号行号行号行号/列号列号列号列号 Type value;/Type value;/非零元素非零元素非零元素非零元素(yun s)(yun s)的的的的值值值值 templa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 02 清华 殷人昆版 学习 教案
限制150内