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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构练习题第三章栈队列和数组习题及答案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构练习题第三章栈队列和数组习题及答案.docx

1、数据结构练习题第三章栈队列和数组习题及答案第三章 栈、队列和数组一、 名词解释:1.栈、栈顶、栈底、栈顶元素、空栈2.顺序栈3.链栈4.递归5.队列、队尾、队头6.顺序队7.循环队8.队满9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵 二、 填空题:1. 栈修改的原则是_或称_,因此,栈又称为_线性表。在栈顶进行插入运算,被称为_或_,在栈顶进行删除运算,被称为_或_。2. 栈的基本运算至少应包括_、_、_、_、_五种。3. 对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“_”。4. 对于顺序栈而言,在栈满状态下,如果此时在作进栈运

2、算,则会发生“_”。5. 一般地,栈和线性表类似有两种实现方法,即_实现和_实现。6. top=0表示_,此时作退栈运算,则产生“_”;top=sqstack_maxsize-1表示_,此时作进栈运算,则产生“_”。7. 以下运算实现在顺序栈上的初始化,请在_处用适当的句子予以填充。int InitStack(SqStackTp *sq) _;return(1);8. 以下运算实现在顺序栈上的进栈,请在_处用适当的语句予以填充。Int Push(SqStackTp *sq,DataType x) if(sp-top=sqstack_maxsize-1error(“栈满”);return(0);

3、 else_: _=x;return(1); 9. 以下运算实现在顺序栈上的退栈,请在_用适当句子予以填充。Int Pop(SqStackTp *sq,DataType *x) if(sp-top=0)error(“下溢”);return(0); else*x=_; _; return(1); 10. 以下运算实现在顺序栈上判栈空,请在_处用适当句子予以填充。Int EmptyStack(SqStackTp *sq) if(_) return(1); else return(0); 11.以下运算实现在顺序栈上取栈顶元素,请在_处用适当句子予以填充。Int GetTop(SqStackTp *

4、sq,DataType *x) if(_) return(0); else*x=_; return(1); 12. 以下运算实现在链栈上的初始化,请在_处用请适当句子予以填充。Void InitStacl(LstackTp *ls) _;13. 以下运算实现在链栈上的进栈,请在处用请适当句子予以填充。Void Push(LStackTp *ls,DataType x) LstackTp *p;p=malloc(sizeof(LstackTp); _; p-next=ls; _; 14以下运算实现在链栈上的退栈,请在_处用请适当句子予以填充。Int Pop(LstackTp *ls,DataTy

5、pe *x) LstackTp *p; if(ls!=NULL) p=ls; *x=_; ls=ls-next; _; return(1); else return(0); 15. 以下运算实现在链栈上读栈顶元素,请在_处用请适当句子予以填充。Int Get Top(LstackTp *ls,DataType *x) if(ls!=NULL) _;return(1); else return(0); 16.必须注意,递归定义不能是“循环定义”。为此要求任何递归定义必须同时满足如下条件:被定义项在定义中的应用(即作为定义项的出现)具有_;被定义项在最小“尺度”上的定义不是_的。17队列简称_。在

6、队列中,新插入的结点只能添加到_,被删除的只能是排在_的结点。18队列以线性表为逻辑结构,至少包括_、_、_、_ _、五种基本运算。19顺序队的出、入队操作会产生“_”。20以下运算实现在循环队上的初始化,请在_处用适当句子予以填充。Void InitCycQueue(CycqueueTp *sq) _;sq-rear=0;21. 以下运算实现在循环队上的入队列,请在_处用请适当句子予以填充。Int EnCycQueue(CycquereTp *sq,DataType x) if(sq-rear+1)%maxsize= _) error(“队满”);return(0); else _; _ _

7、; return(1); 22. 以下运算实现在循环队上的出队列,请在_处用适当句子予以填充。Int OutCycQueue(CycquereTp *sq,DataType *x) if(sq-front= _)error(“队空”);return(0); else _; _; return(1); 23. 以下运算实现在循环队上判队空,请在_处用适当句子予以填充。Int EmptyCycQueue(CycqueueTp sq) if(_) return(1); else return(0); 24. 以下运算实现在循环队上取队头,请在_处用适当句子予以填充。Int GetHead(Cycqu

8、eueTp sq,DataType *x) if= _return(0); else *x=_ ; return(1); 25.链队在一定范围内不会出现_的情况。当=试,队中无元素,此时_。26以下运算实现在链队上的初始化,请在_处用适当句子予以填充。void InitQueue(QueptrTp *lp) LqueueTp *p; p=(LqueueTp *)malloc(sizeof(LqueueTp); _; lq-rear=p; (lq-front)-next=_;27. 以下运算实现在链队上的入队列,请在_处用适当句子予以填充。Void EnQueue(QueptrTp *lq,Da

9、taType x) LqueueTp *p; p=(LqueueTp *)malloc(sizeof(LqueueTp); _=x; p-next=NULL; (lq-rear)-next=_; _; 28. 以下运算实现在链队上的出队列,请在_处用适当句子予以填充。int OutQueue(QuetrTp *lq,DataType *x) LqueueTp *s; if(lq-front=lq-rear)erroe(“队空”);return(0); else s=(lq-front)-next; _=s-data; (lq-front)-next=_; if(s-next=NULL) lq-

10、rear=lq-front; free(s); return(1); 29. 以下运算实现在链队上判队空,请在_处用适当句子予以填充int EmptyQueue(QueptrTp *lq) if(_) return(1); else return(0);30. 以下运算实现在链队上读队头元素,请在_处用适当句子予以填充。Int GetHead(QueptrTp lq,DataType *x) LqueueTp *p; if= return(0); else_; _ =p-data; return(1); 31一般地,一个n维数组可视为其数据元素为_维数组的线性表。数组通常只有_和_两种基本运算

11、。32,通常采用_存储结构来存放数组 。对二维数组可有两种存储方法:一种是以_为主序的存储方式,另一种是以_为主序的存储方式。C语言数组用的是以_序为主序的存储方法;FORTRAN语言用的是以_序为主序的存储方法33需要压缩存储的矩阵可分为_矩阵和_矩阵两种。34对称方阵中有近半的元素重复, 若为每一对元素只分配一个存储空间 ,则可将n2个元素压缩存储到_个元素的存储空间中。35假设以一维数组M(1:n(n+1)/2)作为n阶对称矩阵A的存储结构,以行序为主序存储其下三角(包括对角线)中的元素,数组M和矩阵A间对应的关系为_。36上三角矩阵中,主对角线上的第t行(1=tj时,aij=c,c存放

12、在M_中。37下三角矩阵的存储和对称矩阵类似。MK和aij的对应关系是_。38基于三元组的稀疏矩阵转置的处理方法有两种,以下运算按照矩阵A的列序来进行转置,请在_处用适当的句子用以填充。Trans_Sparmat(SpMatrixTp a,SpMatrixTp *b) (*b).mu=;(*b).nu=;(*b).tu=; if q=1; for(col=1; _;col+) for(p=1;p=;p+) if(_=col) (*b).dataq.i=p.j; (*b).dataq.j=p.i; (*b).dataq.v=p.v; _; 39基于三元组的稀疏矩阵转置的处理方法有两种,以下计算按

13、照矩阵A的三元组的次序进行转置,请在_处用适当的句子用以填充。Fast_Trans_Sparmat(SpMatrixTp a,SpMatrixTp *b) (*b).mu=;(*b).nu=;(*b).tu=; if for(col=1;_;col+) numcol=0; for(t=1;t=a,tu;t+) numt.j+; cpot1=1; for(col=2;col=;col+) cpotcol=_; for(p=1;pnext;free(p)。43设有二为数组int M1020(注:m为0.10,n为0.20),每个元素(整数)栈两个存储单元,数组的起始地址为2000,元素M510的存

14、储位置为_,M819的存储值为_。44在具有n个单元的循环队列中,队满时共有_个元素。45_可以作为实现递归函数调用的一种数据结构。46数组M中每个元素的长度是3个字节,行下标i从1到8,列下标j从1到0,从首的址EA开始连续存放在存储其中。若按行方式存放,元素M85的起始地址为_;若按列优先方式存放,元素M85的地址为_。47对带有头结点的列队列lq,判定队列中只有一个数据元素的条件是_。48二维数组M的成员是6个字符(每个字符栈一个存储单元)组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放M至少需要_个字节;M的第8列和第5行共占_个字节;若M按行方式存储,元素M85的起

15、始地址与当M按列优先方式存储时的_元素的起始地址一致。 三、单项选择题1在以下栈的基本运算中,不是加工型运算的是 ( )lnitStack(S) Push(S,X) Pop(S) empty(S)2.以下说法正确的是 ( )因链栈本身没有容量限制,故在用户内存空间的范围内不会出现栈满情况因顺序栈本身没有容量限制,故在用户内存空间的范围内不会出现栈满情况对于链栈而言,在栈满状态下,如果此时再作进栈运算,则会发生“上溢”对于顺序栈而言在栈满状态下如果此时再作迸栈运算,则会发生“下溢”。3在以下队列的基本运算中,不是加工型运算的是 ( )InitQueue(Q) EnQueue(Q,X) OutQu

16、eu(Q,X) GetHead(Q,x)4.顺序队列的人队操作应为 ( )=+1 =x=x =+1=+1)% maxsize; =xsqrear=x =+1)% maxsize 5.循环队列的人队操作应为 ( )=+1 =x=x =+1=+1)% maxsize =x=x =+1)% maxsize6. 顺序队列的出队操作为 ( ) =+1)% maxsize =+1=+1)% maxsize=+1 7. 循环队列的出队操作为 ( )=+1)% maxsize=+1=+)% maxsize=+18.循环队列的队满条件为 ( )+1) % mazsize =+1) % maxsize;+1 %

17、maxsize =+1sq.(rear+1) % maxsize = =9.循环队列的队空条件为 ( )+1) % maxsize =+1) % maxsize+) % maxsize =+1+1) % maxsize = = 10.数组的数据元素类型DataType可根据实际需要而定义。以下说法完全正确的是 ( )数组的读运算可以读取一个数据元素整体,写运算只能修改一个数据元素的一部分数组的读、写运算可以读取或修改一个数据元素的一部分或一个整体 数组的读、写运算只能读取或修改一个数据元素的一部分数组的读、写运算只能读取或修改一个数据元素整体11对于以行序为主序的存储结构来说,在数组Ac1d1

18、,c2d2中,c1和d1分别为数组A的第一个下标的上、下界,c2d2分别为第二各下标的上、下界,每个数据元素占K个存储单元,二维数组中任一元素ai,j的存储位置可由( )式确定.Loci,j=( d2-c2+1)(i- c1)+(j- c2)*kLoci,j=locc1, c2+( d2- c2+1)(i- c1)+(j- c2)*kLoci,j=Ac1, c2+( d2- c2+1)(i- c1)+(j- c2)*kLoci,j=loc0,0+( d2- c2+1)(i- c1)=(j- c2)*k12对于C语言的二维数组DataType Amn,每个数据元素占K个存储单元,二维数组中任意元

19、素ai,j 的存储位置可由( )式确定.Loci,j=Am,n+(n+1)*i+j*kLoci,j=loc0,0+(m+n)*i+j*kLoci,j=loc0,0+(n+1)*i+j*kLoci,j=(n+1)*i+j*k13.线性表的顺序存储结构是一种( )的存储结构,线性表的链式存储结构是一种( )的存储结构。 随机存取 顺序存储14如果以链表作为栈的存储结构,则退栈操作是 ( )必须判别栈是否满 必须判别栈是否空判别栈元素的类型 对栈不做任何操作15对于基于三元组的稀疏矩阵转置的处埋方法以下说法正确的是 ( )按照矩阵A的列序来进行转置,算法的时间复杂度为0(nu+tu)按照A的三元组的

20、次序进行转置,算法的时间复杂度为O(nu*tu)按照矩阵A的列序来进行转置的方法称快速转置按照矩阵A的列序进行转置,对于tunext=s s-next=Top-next;Top-next=ss-next=Top;Top=s s-next=Top;Top=Top-next24.从栈顶指针为Top的链栈中删除一个结点,并将被删节点的值保存到x中,其操作步骤为( )x=Top-data;Top=Top-next Top=Top-next;x=Top-datax=Top;Top=Top-next x=Top-data 25.在一个链队中,若f,r分别为队首、队尾指针,则插入s所指结点的操作为( )f-

21、next=c;f=s r-next=s;r=ss-next=r;r=s s-next=f;f=s26常对数组进行的两种基本操作是 ( )建立与删除 索引与修改 查找与修改 查找与索引27链栈与顺序栈相比,有一个比较明显的优点即 ( )插入操作更方便 通常不会出现栈满的情况不会出现栈空的情况 删除操作更方便 28若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点 ( )正确 错误29。二为数组Mi,j的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i的范围从O到4,列下标j的范围从O到5。M按行存储时元素M3,5 的起始地址与M按列存储时元素( )的起始地址相同。M 2,4 M3,4 M3,5 M4,430.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是 ( ) e d c b a d e c b a d c e a b a b c d e31

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1