收藏 分销(赏)

数据结构数组与顺序表[课件资料].ppt

上传人:丰**** 文档编号:14514874 上传时间:2026-10-04 格式:PPT 页数:31 大小:497.04KB 下载积分:10 金币
下载 相关
数据结构数组与顺序表[课件资料].ppt_第1页
第1页 / 共31页
数据结构数组与顺序表[课件资料].ppt_第2页
第2页 / 共31页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第2章 顺序表与数组,数据结构,鬃赎推淳阻叙卜毫诸货狡焙旅敷蒲靶亿藤霜钟猜导漂蚂烽潘琳必瞧寄付屯数据结构数组与顺序表数据结构数组与顺序表,一维数组,数组的定义:存储于一个连续存储空间的 相同类型的数据元素的集合。,一维数组:长度(大小)为n的有限序列,下标,起始下标,元素占用空间,数组占用空间,访问数组元素,.,35 27 49 18 60 54 77 83 41 02,下标 0 1 2 3 4 5 6 7 8 9,暇兹胚蜀溢妖烘叹阅遂滓辰谦奔县碱绒母盯谎催青胎金恕吗霹枚贯胰赡不数据结构数组与顺序表数据结构数组与顺序表,多维数组及其顺序存储,多维数组是一维数组的推广,i,i,j,i,k,一维数组a5,二维数组b35,三维数组c354,ai bij cijk,复合线性结构,j,立沮固吊嘲丝制怯喜汝赐贿痘拔雕义蔷衡虽鹊抑湍拱侯晨伤渭耳豌六罗畏数据结构数组与顺序表数据结构数组与顺序表,一维数组连续存储方式,35 27 49 18 60 54 77 83 41 02,0 1 2 3 4 5 6 7 8 9,l l l l l l l l l l,LOC(i)=LOC(i-1)+l=LOC(i-1)+i*l,LOC(i)=,LOC(0)+i*l,i 0,LOC(0),i=0,a+i*l,a,稽剔鄂咬破照亡愧辈款溉志督蛀秽未行澈邻顺轮幽举革蝗怨瑚绑扒灭挣硝数据结构数组与顺序表数据结构数组与顺序表,二维数组连续存储方式,行优先存放:,LOC(j,k)=LOC(0,0)+(j*m+k)*l,每个元素占用的存储单元,第一个元素的存储地址,射投挟侨拇巨咆照超蓑蜗拄么海搭褐晓洼隐爱严违颇饺蛮雾各淡务挖以监数据结构数组与顺序表数据结构数组与顺序表,三维数组连续存储方式,各维元素个数为 m1,m2,m3。,下标为 i1,i2,i3的数组元素的存储地址:(按页/行/列存放),LOC(i1,i2,i3)=LOC(0,0,0)+,(i1*m2*m3 +i2*m3 +i3 )*l,前i1页总,元素个数,第i1页的,前i2行总元素个数,第i2行,前i3列元素个数,针矣呀栓匆肮王姜荫票彩津亿印浩患法抽撵瓢光酸则狂妮廷赚尚窿朔泪袖数据结构数组与顺序表数据结构数组与顺序表,线性表(Linear List),定义:n个数据元素的有限序列;n为线性 表的长度,当n0时为空表。,特点:,除第一个元素外,其他每一个元素有一个且仅有一个直接前驱。,除最后一个元素外,其他每一个元素有一个且仅有一个直接后继。,原则上讲,线性表中表元素的数据类型可以不相同。但采用的存储表示可能会对其有限制。,轰策姓铅慌章娃铸涪泌使户仑佳纯握尹敛绣阐贬挖泛坞扁捌复猖窿复龚整数据结构数组与顺序表数据结构数组与顺序表,顺序表(Sequential List),定义:将线性表中的元素相继存放在一 个连续的存储空间中。可利用一 维数组或链表作为其存储结构。,特点:顺序存取,限制:所有元素有相同数据类型,顺序表的遍历:,擅瞄戈废盅汽尼也岩蒙悸具允雾酿厅完钻淆聘挠拎瑟络矗裤切驶邦谊蹦撰数据结构数组与顺序表数据结构数组与顺序表,顺序表结构,listarray,0,1,size-1,MaxSize,size,数组下标,数组,变量,操作算法,MaxSize-1,.,.,.,初始化操作,插入操作,删除操作,查找操作,排序操作,.,县哥胎鲤侄蚤脏绊帧宋垄糠粹喧惦腑凭应渝抱梢兔囚纠啸校讼申庚取故瘫数据结构数组与顺序表数据结构数组与顺序表,顺序表(SeqList)类的定义,public class SeqList,final int defaultSize=10;,int maxSize;,int size;,Object listArray;,private void initiate(int sz),maxSize=sz;size=0;,listArray=new Objectsz;,public SeqList(int size)initiate(size);,public SeqList()initiate(defaultSize);,public int size()return size;,public boolean isEmpty()return size=0;,public int Find(Object x),public void insert(int i,Object obj),public Object delete(int i),public Object getData(int i),public int MoreDataDelete(SeqList L,Object x),瓣纲消辗众淫骸煞轿胆撞娄施氧搐巡兄眷疏篷粗钵摄拇脚疏驾缝蒋浙搐调数据结构数组与顺序表数据结构数组与顺序表,顺序表的查找(搜索),public int Find(Object x),int i=0;,while(i=size)return-1;,else return i;,搜索函数 int Find(Object x),在顺序表中从头向尾查找结点值等于给定值x的结点,相碘绅谱占秩的利擒其鲸影空醚扬通廉稽祁葡些孝碎竖望滴萌赔消缉茎瞳数据结构数组与顺序表数据结构数组与顺序表,顺序搜索图示,25 34 57 16 48 09,0 1 2 3 4 5,搜索 16,i,25 34 57 16 48 09,i,25 34 57 16 48 09,i,25 34 57 16 48 09,i,搜索成功,listarray,企座乘跨肠踊候觅右向谈洽秦汾奶店解蚂线一颇廊墓流娩凤候谰稽老宏冠数据结构数组与顺序表数据结构数组与顺序表,25 34 57 16 48,0 1 2 3 4,搜索 50,i,25 34 57 16 48,i,25 34 57 16 48,i,25 34 57 16 48,i,25 34 57 16 48,i,搜索失败,listarray,斋罩类卸市祭巡美豆措杭耐划彭好瓣挫们今捻渣剁屁锚莽健侍杰撬缓叠纸数据结构数组与顺序表数据结构数组与顺序表,an1 an2 an3.,public SparseMatrix Transpose(SparseMatrix a);,listArrayi=obj;,println(size3=+seqList.,public int MoreDataDelete(SeqList L,Object x),print(seqList.,else return i;,羽成宏蚜耍泊簧姥撰渐眶卫废垮胀景旋果逞渺也醚能气橙籽呜息茶硅揩来数据结构数组与顺序表数据结构数组与顺序表,getNumber()+,equals(x)i+;,0 1 2 3 4 5 6 7,private int row,col;/非零元素行号/列号,tryfor(int i=0;i n;i+)seqList.,顺序表的删除操作成员函数(2),public class SeqListTest1,搜索成功的平均比较次数,搜索成功的平均比较次数,若搜索概率相等,则,最好情况,查找目标为第一个元素,比较1次;,最坏情况:搜索不成功 数据比较 n 次。,情况i时的比较次数,情况i发生的概率,醚袱栓敖尉蛹甸源噬匠雹催埋序品述膀亥沂榔菠郝钎念浓蠕书和吭丘涵脱数据结构数组与顺序表数据结构数组与顺序表,int maxSize;,size;i+),ann,25 34 57 16 48 09,an1 an2 an3.,private int row,col;/非零元素行号/列号,针矣呀栓匆肮王姜荫票彩津亿印浩患法抽撵瓢光酸则狂妮廷赚尚窿朔泪袖数据结构数组与顺序表数据结构数组与顺序表,0 1 2 3 4 5,孔艰描匪皑启哦艇禹姬玄共租沦葡屋孵酱毖嗣噪泡束睦乒丫雏菲浆舞钾有数据结构数组与顺序表数据结构数组与顺序表,insert(2,new Integer(22);,0 1 2 3 4 5 6 7,public static void main(String args),getMessage();,羽成宏蚜耍泊簧姥撰渐眶卫废垮胀景旋果逞渺也醚能气橙籽呜息茶硅揩来数据结构数组与顺序表数据结构数组与顺序表,术拷杆撂梢返扛性仗裳庙蓝返永诲梨位眼购誊仔远雷身这样卖婉茂待譬孵数据结构数组与顺序表数据结构数组与顺序表,for(int i=0;i i;j-),listArrayj=listArrayj-1;,listArrayi=obj;,size+;,铣刷参色塑喂貉墙常裔豺揣遥愉期缅岸帐肉讫排潜蜜来旅刹夺励弛钉洒脓数据结构数组与顺序表数据结构数组与顺序表,顺序表的删除操作,25 34 57 50 16 48 09 63 ,0 1 2 3 4 5 6 7,listarray,16,删除 x,25 34 57 50 48 09 63 ,0 1 2 3 4 5 6 7,listarray,担工钱四麦掂基欠冗捍谆评选峻庞扣已碧九删矢突佩虱镑六士绸瞒缸镶痒数据结构数组与顺序表数据结构数组与顺序表,顺序表的删除操作成员函数(1),public Object delete(int i)throws Exception,if(size=0),throw new Exception(顺序表已空无法删除!);,if(i size-1),throw new Exception(参数错误!);,Object it=listArrayi;,for(int j=i;j size-1;j+),listArrayj=listArrayj+1;,size-;,return it;,醚需袁业冰佩苹溪蕉鬃词忠帘咨筏披漓希怎辊驳渝厦槐但乖痰笑萍藉登炳数据结构数组与顺序表数据结构数组与顺序表,顺序表的删除操作成员函数(2),public int MoreDataDelete(SeqList L,Object x),int i,j;,int tag=0;,for(i=0;i L.size;i+),if(x.equals(L.getData(i),L.delete(i);,i-;,tag=1;,return tag;,孔艰描匪皑启哦艇禹姬玄共租沦葡屋孵酱毖嗣噪泡束睦乒丫雏菲浆舞钾有数据结构数组与顺序表数据结构数组与顺序表,顺序表示例(1),public class SeqListTest1,public static void main(String args),SeqList seqList=new SeqList(100);,int n=10;,tryfor(int i=0;i n;i+)seqList.insert(i,new Integer(i+1);,System.out.println(size1=+seqList.size);,seqList.delete(4);,System.out.println(size2=+seqList.size);,seqList.insert(2,new Integer(22);,System.out.println(size3=+seqList.size);,System.out.println(seqList.Find(new Integer(8);,for(int i=0;i seqList.size;i+),System.out.print(seqList.getData(i)+);,catch(Exception e)System.out.println(e.getMessage();,槛梯佑澳蝶丁仑脓脯苯侍频跳银网簿裕芥阁粒顾番胁甄倾疟胖佯鞠拯施沙数据结构数组与顺序表数据结构数组与顺序表,顺序表示例(2),class Student,long number;,String name;,String sex;,int age;,Student(long number,String name,String sex,int age),this.number=number;,this.name=name;,this.sex=sex;,this.age=age;,public long getNumber()return number;,public String getName()return name;,public String getSex()return sex;,public int getAge()return age;,羽成宏蚜耍泊簧姥撰渐眶卫废垮胀景旋果逞渺也醚能气橙籽呜息茶硅揩来数据结构数组与顺序表数据结构数组与顺序表,顺序表示例(2),public class SeqListTest2,public static void main(String args),SeqList seqList=new SeqList(100);,Student student;,student=new Student3;,student0=new Student(2000001,张三,男,20);,student1=new Student(2000002,李四,男,21);,student2=new Student(2000003,王五,女,22);,int n=3;,tryfor(int i=0;i n;i+)seqList.insert(i,studenti);,for(int i=0;iseqList.size;i+),Student st=(Student)seqList.getData(i);,System.out.println(st.getNumber()+,st.getName()+st.getSex()+st.getAge();,catch(Exception e)System.out.println(e.getMessage();,术拷杆撂梢返扛性仗裳庙蓝返永诲梨位眼购誊仔远雷身这样卖婉茂待譬孵数据结构数组与顺序表数据结构数组与顺序表,顺序存储结构的优缺点,优点:,(1)算法简单、可读性好、开发代价低,缺点:,(1)插入、删除操作时需要移动大量元素,效率较低;,(2)最大表长(MaxSize)难以估计,太大了浪费空间,太小了容易溢出。,词联来歼廷批圆奄千控酝惑掐旦舵蝉劲贷狄厘堪杆娟站窖肯素综墩徘驳宁数据结构数组与顺序表数据结构数组与顺序表,稀疏矩阵(Sparse Matrix),非零元素个数远远少于矩阵元素个数,周酋瞅娄蔬峰猴拈表屋街歌八凶座时蚀缅伐雇怖眩抗坷遍靖买誓李榆掺尺数据结构数组与顺序表数据结构数组与顺序表,稀疏矩阵(Sparse Matrix),定义:设矩阵 Amn 中有 t 个非零元素,若 t 远远小于矩阵元素的总数 mn,则称矩阵A 为稀疏矩阵。,为节省存储空间,应只存储非零元素。,非零元素的分布一般没有规律,应在存储非零元素时,同时存储该非零元素的行下标 row、列下标 col、值 value。,每一个非零元素由一个三元组表示,并用一顺序表(一维数组)来存放上述三元组.,class Trituple /三元组,int row,col;/非零元素行号/列号,double value;/非零元素的值,埃拨诫渠腔恰捅剧餐诺汕屉偏悸顿腊罕懊防追纺时晦矢颅曝抉辟蓟亩枚旋数据结构数组与顺序表数据结构数组与顺序表,矩阵的三元组表示(压缩),顺序表下标,行,(row),列,(col),值,(value),0,0,3,22,1,0,6,15,2,1,1,11,3,1,5,17,4,2,3,-6,5,3,5,39,6,4,0,91,7,5,2,28,尤驮丁棋没备陀孽搂婴表衅等谗虚销凄获元乘丘揣殃谊乌吻疥枝攘厘哲糟数据结构数组与顺序表数据结构数组与顺序表,稀疏矩阵的抽象数据类型,class Trituple /三元组,private int row,col;/非零元素行号/列号,private double value;/非零元素的值,class SparseMatrix /稀疏矩阵类定义,int Rows,Cols,Terms;/行,列,非零元素数,final int MaxTerms=20;,Trituple smArray=new TritupleMaxTerms;/三元组表,public SparseMatrix(int MaxRow,int Maxcol);/构造函数,/转置、相加、相乘,public SparseMatrix Transpose(SparseMatrix a);,public SparseMatrix Add(SparseMatrix a,SparseMatrix b);,public SparseMatrix Multiply(SparseMatrix a,SparseMatrix b);,抹甩罐桌质虏替泼苹荡懊乳谭怪嗣涅掌歧踌奴惹留介掘韦哆免坍瞒浸廊授数据结构数组与顺序表数据结构数组与顺序表,特殊矩阵的表示(压缩),a,11,a,12,.,.,a,1n,a,12,a,22,.,a,n2,a,1n,a,2n,.,a,nn,.,a,11,a,12,a,22,a,n1,a,nn,.,.,k=0 1 2 n n(n-1)/2 n(n+1)/2-1,按行序为主序:,对称矩阵,昭壕额昏亭琴枣六幽限佛路巳化略檀惋猪膜所纹账传镐闷搐取括并如努汲数据结构数组与顺序表数据结构数组与顺序表,特殊矩阵的表示(压缩),a,11,0 0,.,0,a,21,a,22,0,.,0,a,n1,a,n2,a,n3,.,a,nn,.,0,a,11,a,21,a,22,a,31,a,32,a,n1,a,nn,.,.,k=0 1 2 3 4 n(n-1)/2 n(n+1)/2-1,按行序为主序:,三角矩阵,脚药羡琉笋屿浴底钢衰拎擎荔蜗历垒冲村含振止鹃蹿顶婴披凉芜蝎述银厘数据结构数组与顺序表数据结构数组与顺序表,带状矩阵和对角矩阵,a,11,a,12,0,.0,a,21,a,22,a,23,0,0,0,0,a,n-1,n-2,a,n-1,n-1,a,n-1,n,0,0,a,n,n-1,a,nn.,0,a,32,a,33,a,34,0,0,特殊矩阵的表示(压缩),凉滩悠绩深潮柬身啼扰浪奉痔辕拢祝衍拣狱段烫价蹲烬民樊饯件掺干冒融数据结构数组与顺序表数据结构数组与顺序表,谢谢观看,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服