ImageVerifierCode 换一换
格式:PPT , 页数:85 ,大小:552KB ,
资源ID:13348649      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13348649.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(计算机组成原理真题解析.ppt)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

计算机组成原理真题解析.ppt

1、单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第四章,线性表、堆栈和队列,第四章 线性表、堆栈和队列,4.1,线性表的定义和基本操作,4.2,线性表的存储结构,4.3,堆栈和队列,4.1,线性表的定义和基本操作,4.1.1,线性表的定义,例,1,英文字母表(,A,B,C,Z),整数序列 (,1,78,9,12,10),例,2,某班学生健康情况登记表。,学号 姓名 性别 年龄 健康情况,01,张军 男,18,一般,02,陈红 女,17,良好,03,陈军 男,19,神经衰弱,线性表定义:,一个线性表是由零个或多个具有,相同类型,的结点组成的,有序集合,。,

2、用(,a,0,,,a,1,,,,,a,n-1,),来表示一个线性表。当,n0,时,,a,0,称为表的,始结点,,,a,n-1,称为表的,终结点,,当,n=0,时,线性表中有零个结点,称为,空表,。,线性表的逻辑结构:,线性结构,线性表记为,(a,0,a,1,a,n-1,)n 0,(),空表,n=0,线性表的操作,(,1,)随机存取:存取下标为,k,的结点。,(,2,)插入:在下标为,k,的结点前(或后),插入一个新结点,(,3,)删除:删除下标为,k,的结点。,(,4,)查找:寻觅具有特定域值的结点。,(,5,)归并、分拆、复制、计数、排序。,第四章 线性表、堆栈和队列,4.2,线,性表的存储

3、结构,4.2.1,顺序存储结构,4.2.2,链接存储结构单链表,4.2.3,循环链表,4.2.4,双向循环链表,4.2,线性表的存储结构,线性表,存储结构,顺序存储,非顺序存储,链表,4.2,线性表的存储结构,4.2.1,顺序存储结构,顺序存储:,用一组,连续,的存储空间,依次,存储线性表的元素。,实现顺序存储的最有效方法是使用一维数组。例如:线性表(,a,0,,,a,1,,,a,n-1,),。,可以使用一个数组,an,来存放此线性表。,包含,4,个结点的线性表,A4,在内存中的表示,其中每个结点占,2,个连续的字节,第一个结点,A0,的首地址为,302,图,4.1,线性表的顺序存储,线性表,

4、A2,308,306,304,302,A0,A1,A3,例,:线性表(,a,0,,,a,1,,,a,n-1,),。,可以使用一个数组,an,来存放此线性表。,Loc(ak)=Loc(a0)+k*c,a,0,a,1,a,n-1,a,k,b+c,b+k*c,b,b+(n-1)*c,0,1,n-1,k,空闲区,特点:,其逻辑顺序与物理顺序,相同,。,顺序存储,随机存取,顺序存储的线性表的基本运算,1,、,插入,例,在顺序表(,12,13,21,24,28,30,42,77,),中,插入元素,25,。,问题:此时,线性表的逻辑结构,发生什么变化?,位置关系发生变化,长度增,1,序号 元素,3,4,1,

5、5,2,7,8,6,12,13,21,24,28,30,42,77,插入,25,序号 元素,3,4,1,5,2,7,8,6,12,13,25,21,24,28,30,42,77,9,在下标为,k,的结点后插入一个新结点,/ADL,描述,算法,Insert,(A,n,k,x,),Insert1k,是否合法,IF(kn),THEN PRINT(“overflow”),ELSE(FOR i=n TO k+1 STEP -1 DO,Ai+1,Ai.,Ak+1,x.,n,n+1.).,时间复杂性分析:,插入操作的基本运算是:,元素移动,D,n,中有多少种可能的输入呢?,n+1,种(,n+1,个位置可以发

6、生插入),设每种输入发生的频率相等:,1/,(,n+1,),则期望复杂性为:,E(n)=(n+(n-1)+1+0)/(n+1),=n/2,2,、,删除,例,在顺序表(,12,13,21,24,28,30,42,77,),中,删除元素,24,。,问题:此时,线性表的逻辑结构,发生什么变化?,位置关系发生变化,长度减,1,序号 元素,3,4,1,5,2,7,8,6,12,13,21,24,28,30,42,77,删除,24,序号 元素,3,4,1,5,2,7,6,12,13,21,28,30,42,77,删除下标为,k,的结点,/,ADL,描述,算法,Delete,(A,n,k,),Delete1

7、检查,k,是否合法,IF (kn),THEN PRINT(“error”),ELSE (FOR i=k+1 TO n DO,Ai-1,Ai.,n,n-1.),时间复杂性分析:,删除操作的基本运算是:,元素移动,D,n,中有多少种可能的输入呢?,n,种(,n,个位置可以发生删除),设每种输入发生的频率相等:,1/n,则期望复杂性为:,E(n)=(n-1)/n+1/n+0/n,=,(,n-1,),/2,结论,:,线性表的顺序存储结构,优点,:空间利用率高,简单、易于实现,可以,随机访问,表中任一元素,存取速度快。,缺点,:插入和删除结点,要调整一批节点的地址。,问题:,由于线性表中元素的数目可以

8、改变,因此定义数组时要做如何的考虑呢?,定义足够大的数组。,4.2.2,链接存储结构,单链表,1,、单链表的定义,2,、单链表的基本操作,3,、单链表结点类,(Node),4,、单链表的构造,5,、链表类(,LinkedList,),4.2.2,链接存储结构,单链表,1,、单链表的定义,链式存储:,用一组,任意,存储单元存储线性表的数据元素。,例,将线性表(,a,3,,,a,4,,,a,5,),以链表的形式存,储在内存中。,a,5,500,a,3,100,002,a,4,002,500,单链表的,结点结构,:,单链表的定义:,每个结点只含有,一个链接域,的 链表叫单链表,。,data,next

9、单链表的存储映像,特点:,逻辑顺序与物理顺序可以相同也可 以不同。,链表有,头节点、尾节点、头指针,(head),。,判断表尾的条件:,p,next=NULL,空表的条件:,head=NULL,a,5,a,3,a,4,4.2.2,链接存储结构,单链表,1,、单链表的定义,2,、单链表的基本操作,3,、单链表结点类,(Node),4,、单链表的构造,5,、链表类(,LinkedList,),在链表中,删除一个结点或插入一个结点,只需改变一个或两个相关结点的指针,不对其它结点产生影响。,插入:,FAT,HAT,p,GAT,s,s next=p next;,p next=s;,删除:,q=p ne

10、xt;,FAT,HAT,p,GAT,q,p next=q next;,4.2.2,链接存储结构,单链表,1,、单链表的定义,2,、单链表的基本操作,3,、单链表结点类,(Node),4,、单链表的构造,5,、链表类(,LinkedList,),(1),Node,类声明:,template,class Node,private:,Node *next;,public:,T data;,/,构造函数,Node,(const T&item,Node *,ptrnext,=NULL);,/,返回指向当前结点的后继结点的指针,Node *,NextNode,(void,)const;,/,在当前结点之后

11、插入指针,p,所指结点,void,InsertAfter,(Node,*p);,/,删除当前结点的后继结点,Node *,DeleteAfter,(void,);,;,(2),Node,类的实现,构造函数,template,Node:,Node,(const T&item,Node *,ptrnext,):,data(item),next(ptrnext,),返回当前结点的,next,域的值,template,Node *,Node :,nextNode,(void)const,return next,;,在当前结点之后插入结点,p,/,ADL,描述,算法,InsertAfter,(,this

12、p,),IA1,将当前结点的,next,域值赋给,P,的,next,域,next,(,p,),next,(,this,),.,IA2,将,P,赋给当前结点的,next,域,next,(,this,),p.,FAT,HAT,this,GAT,p,在当前结点之后插入结点,p,/C+,描述,template,void Node:,InsertAfter,(Node,*p),p,next=,next,;,next=p;,FAT,HAT,this,GAT,p,删除当前结点的后继结点,/,ADL,描述,算法,DeleteAfter,(,this.,tempptr,),DA1 this,的,next,

13、域值,=NULL,?,IF next,(,this,),=NULL THEN,tempptr,NULL,.,ELSE,(,tempptr,next,(,this,),.,next,(,this,),next,(,tempptr,),.,),FAT,HAT,this,GAT,tempptr,删除当前结点的后继结点,/C+,描述,template,Node*Node :,DeleteAfter,(void,),if(next=NULL),return NULL;,Node *,tempptr,=next;,next=,tempptr,next;,return,tempptr,;,FAT,HAT,t

14、his,GAT,tempptr,4.2.2,链接存储结构,单链表,1,、单链表的定义,2,、单链表的基本操作,3,、单链表结点类,(Node),4,、单链表的构造,5,、链表类(,LinkedList,),在,Node,类基础上,构造单链表,1,)创建新结点,2,)表头插入结点,3,)遍历链表,4,)表尾插入结点,1,)创建一个,data,为,item,next,为,nextptr,的结点,算法,GetNode,(,item,,,nextptr,.,NewNode,),GN1,为新结点申请空间,NewNode,AVAIL .,GN2,为结点诸域赋值,data,(,NewNode,),item.

15、next,(,NewNode,),nextptr,.,item,NewNode,nextptr,#include,#include“,stdlib.h,”,template,Node*,GetNode,(const,T&item,Node*,nextptr,=NULL),Node*,newNode,;,newNode,=new Node(item,nextptr,);,if(,newNode,=NULL),cerr,“Memory allocation failure,!”,=0;i-),head=,GetNode,(ai,head,);,代码段二:,Node*head=NULL;,for(

16、i=n-1;i=0;i-),InsertFront,(head,ai,);,3),遍历链表,遍历:按一定次序访问所有节点,且每个节点恰被访问一次。,算法,PrintList,(,head,),/,输出头指针为,head,的链表,每输出,5,个元素换行,PL 1,取表头,计数器初始化,currptr,head.count,0,.,a,c,b,head,currptr,PL 2,遍历并输出链表结点的,data,值,WHILE,(,currptr,NULL,),DO,(,PRINT,(,data,(,currptr,),.,count,count+1.,IF,(,MOD,(,count,,,5,),

17、0,),THEN PRINT.,currptr,next,(,currptr,),.,),currptr,currptr,currptr,a,c,b,head,遍历链表,/C+,template,void,printList,(,Node*head),Node*,currptr,=head;,count=0;,while(,currptr,!=NULL),cout,(,currptr,data,),“”,;,if(count+)%5=0),cout,endl,;,currptr,=,currptr,nextNode,(),;,4),表尾插入结点,在头指针为,head,的链表尾部插入,data

18、域值为,item,的结点;,算法,InsertRear,(,head,,,item,),IR1,取头指针,currptr,head.,a,c,b,head,currptr,IR2,currptr,=NULL,?,IF,currptr,=NULL THEN,InsertFront,(,head,,,item,),head=NULL,currptr,=NULL,head,item,head,NULL,IR2,currptr,=NULL,?,IF,currptr,=NULL THEN,InsertFront,(,head,,,item,),.,ELSE,(,WHILE,(,next,(,currp

19、tr,),NULL,),DO,currptr,next,(,currptr,),.,GetNote,(,item,,,NULL.,newNode,),.,InsertAfter,(,currptr,,,newNode,),.,),a,c,b,head,currptr,currptr,newNode,item,NULL,表尾插入结点,/C+,template,void,InsertRear,(,Node*&head,const T&item),Node*,currptr,=head;,if(,currptr,=NULL),InsertFront(head,item,);,else,while,(

20、currptr,NextNode,()!=NULL),currptr,=,currptr,NextNode,(),;,Node*,newNode,;,newNode,=,GetNode(item,);,currptr,InsertAfter(newNode,);,例,4.1,构造一个有,n,个结点的单链表,第,i,个结点的数据为给定数组,an,中,ai-1,的值。,代码段三:,Node*head=NULL,;,for(i=0;i,n;i,+),InsertRear,(head,ai,);,4.2.2,链接存储结构,单链表,1,、单链表的定义,2,、单链表的基本操作,3,、单链表结点类,(No

21、de),4,、单链表的构造,5,、链表类(,LinkedList,),定义一种链表类,LinkedList,,将链表的基本操作视为链表类的成员函数,并将其封装在类中。,类,LinkedList,所涉及到的数据成员:,头指针:,front,尾指针:,rear,当前指针:,currptr,当前结点的前驱结点指针:,prevptr,链表中结点个数:,size,当前结点在链表中的位置:,position,/,/,令当前指针指向表头,void,Reset,(,int,pos=0,),;,/,令当前指针指向原当前结点的后继结点,void,Next,(,void,),;,/,判断当前指针是否指向表尾结点,i

22、nt,EndOfList,(,void,),const;,/,插入一个,data,域值为,item,的结点,void,InsertFront,(,const T&item,),;/,表头插入,void,InsertRear,(,const T&item,),;/,表尾插入,/,返回当前结点的,data,域值,T&Data,(,void,),;,例,4.2,按表,L1,在前,表,L2,在后的次序,实现两者的连接。,template,void,JointLists,(,LinkedList,&L1,,,LinkedList,&L2,),/,先令两个表当前指针指向各自表头结点,L1.Reset,()

23、L2.Reset,(),;,while,(,!L2.EndOfList,(),L1.InsertRear,(,L2.Data,(,),;,L2.Next,(),;,单链表总结,优点:插入、删除操作方便;共享空间好。,缺点:随机访问困难;,(,从任一结点出发,只能访问其后的结点;,只能从头结点开始,才能扫描表中全部结点,),4.2.3,循环,链表,1,循环链表的定义和结构,定义:,在单链表中,使其最后一个结点的指针又指回到第一个结点,则这样的链表叫循环链表。,单链表表头结点:第一个结点,循环链表表头结点:,哨位结点,(header),header,x,n,x,1,判断表尾的条件:,单链表:

24、p next=NULL,循环链表:,p next=Header,x,n,x,1,p,Header,判断空表的的条件,:,单链表:,Head=NULL,循环链表:,Header,next,Header,header,2.,循环链表结点类,CNode,的定义,声明,template,class,CNode,private,:,CNode,*,next,;,public:,T,data,;,CNode,(void);/,生成哨位结点,CNode,(const T&item):data(item),next(this),void,InsertAfter,(,CNode,*p);,CNode,*,De

25、leteAfter,(void,);,CNode,*,NextNode,(void,)const;,;,3,、实现,/,删除当前结点的后继结点,ADL,描述,算法,DeleteAfter,(,this.,tempptr,),DA1,链表为空?,IF,next,(,this,),=this,THEN,tempptr,NULL,.,ELSE (,IF next(this),header THEN,(,tempptr,next(header).,next(header),next(tempptr,).,),ELSE,(,tempptr,next,(,this,),.,next(this),next(

26、tempptr,),.,),x,n,x,1,header,this,x,1,header,this,4.2.4,双向循环,链表,1,问题的提出,在循环链表中访问结点,p,的前趋结点,tempptr,next(p).,WHILE,next(tempptr)p,DO,tempptr,next(tempptr,).,x,n,x,1,header,2,双向循环链表的结构,结点结构:,链表的结构,left,data,right,。,L,Header left =Header right,=Header,p right left=p left right,=p,双循环链表判空的条件:,双链表的对称性:,H

27、eader,3,循环双链表结点类,DNode,定义,声明,template,class,DNode,private,:,DNode,*,left,;,DNode,*,right,;,public:,T,data,;,DNode,(void);/,生成哨位节点,DNode,(const T,void,InsertRight,(,DNode,*p);,void,InsertLeft,(,DNode,*p);,DNode,*,DeleteNode,(void,);,DNode,*,NextNodeLeft,(void)const;,DNode,*,NextNodeRight,(void,)const

28、实现,构造函数,template,Node:,D,Node,(const,T&item,):,data(item),left(this),right(this),this,item,在当前结点,(this),之后插入结点,P,left,(,right,(,this,),P.,right,(,P,),right,(,this,),.,left,(,P,),this.,right,(,this,),P.,P,4,3,2,1,t,his,在当前结点,(this),之后插入结点,P,算法,InsertRight,(,this,,,P,),IR1,令当前结点的右结点的左指针指向,Node,(,P

29、left,(,right,(,this,),P.,IR2,令,Node,(,P,),的右指针指向当前结点的右结点,right,(,P,),right,(,this,),.,IR3,令,Node,(,P,),的左指针指向当前结点,left,(,P,),this.,IR4,令当前结点的右指针指向,Node,(,P,),right,(,this,),P,P,2,1,3,4,在当前结点,(this),之前插入结点,P,left,(,P,),left,(,this,),right,(,left,(,this,),P.,right,(,P,),this.,left,(,this,),P.,this,

30、在当前结点,(this),之前插入结点,P,算法,InsertLeft,(,this,,,P,),/,InsertLeft,用,IL,简记,IL1,令,Node,(,P,),的左指针指向当前结点的左结点,left,(,P,),left,(,this,),.,IL2,令当前结点之左结点的右指针指向,Node,(,P,),right,(,left,(,this,),P.,IL3,令,Node,(,P,),的右指针指向当前结点,right,(,P,),this.,IL4,令当前结点的左指针指向,Node,(,P,),left,(,this,),P,删除当前结点,(this),算法,DeleteNod

31、e,(,this,),DN1,令当前结点的左结点的右指针指向当前结点的右结点,right,(,left,(,this,),right,(,this,),.,DN2,令当前结点的右结点的左指针指向当前结点的左结点,left,(,right,(,this,),left,(,this,),this,练习题:,1.,对于线性表的两种存储结构,若线性表的总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素,那么应选用何种存储结构?试说明理由。若线性表的总数不稳定,且经常进行插入和删除操作,那么应选用何种存储结构?试说明理由。,2.,在链表中查找,data,域值为,x,的结点,算法

32、Find(head,x.currptr,),F1,取头指针,currptr,head.,F2,查找,WHILE,(,currptrNULL,AND,data(currptr,)x),DO,currptr,next(currptr,).,3.,单链表应用,:,一元多项式及其相加,在多项式的链表表示中每个结点增加了一个数据成员,link,,,作为链接指针。,优点:,多项式的项数可以动态地增长,不 存在存储溢出问题。,插入、删除方便,不移动元素。,coef,Link,Exp,多项式链表的相加,AH,=1-10,x,6,+2,x,8,+7,x,14,BH,=-,x,4,+10,x,6,-3,x,10,+8,x,14,+4,x,18,作 业,1,、已知长度为,n,的线性表,A,(a,1,a,2,.a,n,),采用顺序存储结构,请写一算法,将线性表转换为,A,(a,n,.a,2,,,a,1,),,要求转换过程中用尽可能少的存储空间。,2,、编写算法,在头指针为,head,的单链表中,删除域值为,x,的结点。,3,、,68,页,4-1,

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服