【考研类试卷】栈、队列和数组及答案解析.doc
《【考研类试卷】栈、队列和数组及答案解析.doc》由会员分享,可在线阅读,更多相关《【考研类试卷】栈、队列和数组及答案解析.doc(15页珍藏版)》请在麦多课文档分享上搜索。
1、栈、队列和数组及答案解析(总分:92.00,做题时间:90 分钟)一、单项选择题(总题数:26,分数:52.00)1.二维数组 A 的每个元素是由 6 个字符组成的串,其行下标 i=0,1,8,列下标 j=1,2,10。若A 按行先存储,元素 A8,5的起始地址与当 A 按列先存储时的元素( )的起始地址相同。设每个字符占一个字节。(分数:2.00)A.A8,5B.A3,10C.A 5,8D.A0,92.数组 A110,26,28以行优先的顺序存储,设第一个元素的首地址是 100,每个元素占 3 个存储长度的存储空间,则元素 A5,0,7的存储地址为( )。(分数:2.00)A.913B.91
2、0C.915D.9233.设有一个二维数组 Amn,假设 A00存放位置在 644,A22存放位置在 676,每个元素占一个空间,问 A33存放在( )位置。(分数:2.00)A.688B.678C.692D.6964.假设以行序为主序存储二维数组 Aarray1100,1100,设每个数据元素占 2 个存储单元,基地址为 10,则 LOC5,5=( )。(分数:2.00)A.808B.818C.1010D.10205.设 A 是 n*n 的对称矩阵,将 A 的对角线及对角线上方的元素以列为主的次序存放在一维数组B1n(n+1)/2中,则上述任一元素 aij(1i,jn,且 ij)在 B 中的
3、位置为( )。(分数:2.00)A.i(i-1)/2+jB.j(j-1)/2+iC.j(j-1)/2+i-1D.i(i-1)/2+j-16.若一个栈的输入序列为 1,2,3,n,输出序列的第一个元素是 i,则第 j 个输出元素是( )。(分数:2.00)A.i-j-1B.i-jC.j-i+1D.不确定的7.二维数组 Amn 按行序为主序存放在内存,每个数组元素占 1 个存储单元,则元素 aij的地址计算公式是( )。(分数:2.00)A.loc(aij)-loc(all)+(i-1)*m+(j-1)B.loc(aij)-loc(all)+(j-1)*m+(i-1)C.loc(aij)-loc(
4、all)+(i-1)*n+(j-1)D.loc(aij)-loc(all)+(j-1)*n+(i-1)8.循环队列存储在数组 A 0m中,则入队时的操作为( )。(分数:2.00)A.rear=rear+1B.rear=(rear+1)%(m 一 1)C.rear=(rear+1)%mD.rear=(rear+1)%(m+1)9.设下三角矩阵 A 为:(分数:2.00)A.B.C.D.10.设有二维数组 A1:U1,1:U 2,已知数据元素 A1,1在位置 2,A2,3在位置 18,A3,2在位置28,则元素 A4,5在位置( )。(分数:2.00)A.46B.45C.48D.3011.设有一
5、个 10 阶的下三角矩阵 A(包括对角线),按照从上到下、从左到右的顺序存储到连续的 55 个存储单元中,每个数组元素占 1 个字节的存储空间,则 A54地址与 A00的地址之差为( )。(分数:2.00)A.10B.19C.28D.5512.假设按低下标优先存储整型数组 A-3:8,3:5,-4:0,0:7时,第一个元素的字节存储地址是 100,每个整数占 4 个字节,则 A0,4,-2,5的存储地址是( )。(分数:2.00)A.1783B.1784C.1985D.198413.将一个 A1100,1100的下三角矩阵按行优先存入一维数组 B15050中,A 中元素 A66,65,在 B
6、数组中的位置 K 为( )。(分数:2.00)A.4419B.2209C.4417D.231914.设有一个 10 阶的对称矩阵 A,采用压缩存储方式,以行序为主存储,a1,1为第一元素,其存储地址为 1,每个元素占一个地址空间,则 a8,5的地址为( )。(分数:2.00)A.13B.33C.18D.4015.数组 A05,06的每个元素占五个字节,将其按列优先次序存储在起始地址为 1000 的内存单元中,则元素 A5,5的地址是( )。(分数:2.00)A.1175B.1180C.1205D.121016.若对 n 阶对称矩阵 A 以行序为主序方式将其下三角形的元素(包括主对角线上所有元素
7、)依次存放于一维数组 B1(n(n+1)/2中,则在 B 中确定(分数:2.00)A.i(ij)的位置 k 的关系为( )。Ai*(i-1)/2+jBj*(j17.设 abcdef 以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为( )。(分数:2.00)A.fedcbaB.bca fedC.dcefbaD.cabdef18.有一个 100*90 的稀疏矩阵,非 0 元素有 10 个,设每个整型数占 2 字节,则用三元组表示该矩阵时,所需的字节数是( )。(分数:2.00)A.60B.66C.18000D.3319.若用一个大小为 6 的数组来实现循环队列且当前 rear
8、和 front 的值分别为 0 和 3,当从队列中删除一个元素,再加入两个元素后,rear 和 front 的值分别为多少?( )(分数:2.00)A.1 和 5B.2 和 4C.4 和 2D.5 和 120.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时( )。(分数:2.00)A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都要修改D.队头、队尾指针都可能要修改21.表达式 3*2(4+2*2-6*3)-5 求值过程中当扫描到 6 时,对象栈和算符栈为,其中为乘幂( )。(分数:2.00)A.3,2,4,1,1;*(+*-B.32,
9、8;*-C.3,2,4,2,2;*(-D.3,2,8;*(-22.一个栈的输入序列为 123n,若输出序列的第一个元素是 n,输出第 i(1=i=n)个元素是( )。(分数:2.00)A.不确定B.n-i+1C.iD.n-i23.输入序列为 ABC,可以变为 CBA 时,经过的栈操作为( )。(分数:2.00)A.push,pop,push,pop,push,popB.push,push,plJsh,pop,pop,popC.push,pLlsh,pop,pop,pllsh,popD.push,pop,push,push,pop,pop24.依次读入数据元素序列 a,b,C,d,e,f,g)进
10、栈,每进一个元素,机器可要求下一个元素进栈或弹栈,如此进行,则栈空时弹出的元素构成的序列是以下哪些序列?( )(分数:2.00)A.d,e,c,f,b,g,aB.f,e,g,d,a,C,bC.e,f,d,g,b,C,aD.c,d,e,b,f,a,g25.向一个栈顶指针为 hs 的链栈中插入一个 S 结点时,应执行( )。(分数:2.00)A.hsnext=s;B.snext=hs;hs=S;C.snext=hsnext;hs 一next=s;D.snext=hs;hs=hsnext;26.有六个元素 6,5,4,3,2,1 的顺序进栈,下列( )不是合法的出栈序列。(分数:2.00)A.5 4
11、 3 6 1 2B.4 5 3 1 2 6C.3 4 6 5 2 1D.2 3 4 1 5 6二、综合应用题(总题数:4,分数:40.00)27.设有两个栈 S1,S 2都采用顺序栈方式,并且共享一个存储区Omaxsizel,为了尽量利用空间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式。试设计 S1,S 2有关入栈和出栈的操作算法。(分数:10.00)_28.设从键盘输入一整数的序列:a 1,a 2,a 3,a n,试编写算法实现:用栈结构存储输入的整数,当ai-1 时,将 ai进栈;当 ai=-1 时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。(分数:10.00
12、)_29.设表达式以字符形式已存入数组 En中,#为表达式的结束符,试写出判断表达式中括号(和)是否配对的 C 语言描述算法:EXYX(E);(注:算法中可调用栈操作的基本算法。)(分数:10.00)_30.设矩阵 A 为(分数:10.00)_栈、队列和数组答案解析(总分:92.00,做题时间:90 分钟)一、单项选择题(总题数:26,分数:52.00)1.二维数组 A 的每个元素是由 6 个字符组成的串,其行下标 i=0,1,8,列下标 j=1,2,10。若A 按行先存储,元素 A8,5的起始地址与当 A 按列先存储时的元素( )的起始地址相同。设每个字符占一个字节。(分数:2.00)A.A
13、8,5B.A3,10 C.A 5,8D.A0,9解析:二维数组 A0:8,1:10,设起始地址为 0,数组元素 Ai,j按行存储公式为:Loc(Ai,j)=L1+(i-1)U2d+(j-1)d,数组元素 Ai,j按列存储公式为:Loc(Ai,j)=L 1+(j-1)U2d+(i-1)d,可得 i=3,j=10。2.数组 A110,26,28以行优先的顺序存储,设第一个元素的首地址是 100,每个元素占 3 个存储长度的存储空间,则元素 A5,0,7的存储地址为( )。(分数:2.00)A.913 B.910C.915D.923解析:见 7 解析。3.设有一个二维数组 Amn,假设 A00存放位
14、置在 644,A22存放位置在 676,每个元素占一个空间,问 A33存放在( )位置。(分数:2.00)A.688B.678C.692 D.696解析:二维数组 A 可以看成由 U1个一维数组组成,每个一维数组有 U2个元素。如下图:*可得,数组元素 Ai,j的地址为:Loc(Ai,j)=L1+iU2d+jd,解的 n=15,结果为 692。4.假设以行序为主序存储二维数组 Aarray1100,1100,设每个数据元素占 2 个存储单元,基地址为 10,则 LOC5,5=( )。(分数:2.00)A.808B.818 C.1010D.1020解析:公式:Loc(A ij)=10(基地址)+
15、(5-1)*100+(5-1)*2=818。5.设 A 是 n*n 的对称矩阵,将 A 的对角线及对角线上方的元素以列为主的次序存放在一维数组B1n(n+1)/2中,则上述任一元素 aij(1i,jn,且 ij)在 B 中的位置为( )。(分数:2.00)A.i(i-1)/2+j B.j(j-1)/2+iC.j(j-1)/2+i-1D.i(i-1)/2+j-1解析:解析同 16。6.若一个栈的输入序列为 1,2,3,n,输出序列的第一个元素是 i,则第 j 个输出元素是( )。(分数:2.00)A.i-j-1B.i-jC.j-i+1D.不确定的 解析:不知道 i,j 的大小关系,所以无法确定。
16、7.二维数组 Amn 按行序为主序存放在内存,每个数组元素占 1 个存储单元,则元素 aij的地址计算公式是( )。(分数:2.00)A.loc(aij)-loc(all)+(i-1)*m+(j-1) B.loc(aij)-loc(all)+(j-1)*m+(i-1)C.loc(aij)-loc(all)+(i-1)*n+(j-1)D.loc(aij)-loc(all)+(j-1)*n+(i-1)解析:二维数组就是平常所说的矩阵,也可以看成是数据元素是一维数组的一位数组。由于计算机内部存储器的地址是一维线性排列的,故在存储数据时,必须将二维数组转换为计算机的内部存储形式才可以。一般有两种存储方
17、式:以行为主的存储方式(rowmajor)和以列为主的存储方式(columnmajor)。设二维数组 A1:U1,1:U 2,该数组有(U 1-1)+1=U1行,有(U 1-1)+1=U1列。设每个元素占 d 个空间,数组的起始地址为 L1。以行为主(rowmajor):也称行优先存储。其特点为:以每一行为单位,一行一行地放入内存,如 C 语言、PASCAL 语言等都是如此处理二维数组的。以列为主(columnmajor):也称列优先存储。其特点为:以每一列为单位,一列一列地放入内存,如Fortran 语言就是如此处理二维数组的。二维数组 A 可以看成由 U2个一维数组组成,每个一维数组有 U
18、1个元素。同 1)类似,有:*第 j 列数据元素的起始地址为:(j-1)U 1d+L1*数组元素 Ai,j的地址为:Loc(A i,j)=L 1+(j-1)U1d-6(i-1)d重要说明:二维数组 Am*n 的含义是:该数组有 m 行(0m-1 第一维),有 n 列(0n-1,第二维),占用m*n 个存储空间。假设每个数据元素占用 L 个存储单元(可理解为字节),则二维数组 A 中任意一个元素aij的存储位置为:行优先:LOC(i,j)=LOC(0,0)+(ni+j)L列优先: LOC(i,j)=LOC(0,0)+(mj+i)L二维数组是一种随机存储结构,因为存取数组中任一元素的时间都相等(单
19、链表则不是,因为需要顺链访问,访问时间同数据元素的存储位置有关)。8.循环队列存储在数组 A 0m中,则入队时的操作为( )。(分数:2.00)A.rear=rear+1B.rear=(rear+1)%(m 一 1)C.rear=(rear+1)%mD.rear=(rear+1)%(m+1) 解析:循环队列的重要操作:初始化:(MAXSIZE 为最大队列长度)Qbase=(QElemType*)malloc(MAXSIZE*sizeof(QElemType);Qfront=Qrear=0;返回 Q 中元素的个数return(Q.rearQ.front+MAXSIZE)%MAXSIZE;插入元素
20、(队尾插入)if(Q.rear+1)%MAXSIZE=Q.front)return ERROR;队满判断Q.baseQ.rear=e;Q.rear=(Q.rear+1)%MAXSIZE;修改 Q.rear 的方法Q.rear 总是指向下一个可以插入新元素的位置。删除元素(从队首删除)If(Q.front=Q.rear)return ERROR;队空的判断e=Q.base Q.front;Q.front=(Q.front+1)%MAXSIZE;此题可知,MAXSIZE=m+1。9.设下三角矩阵 A 为:(分数:2.00)A. B.C.D.解析:如何将 aij保存在数组 B 中,保存在哪个位置?也
21、就是说,设 k 为 aij保存在 B 中时的下标,那么 k和 i、j 有什么关系?Ai,j在 B 中的位置=(A 中前 i-1 行非 0 元素的个数)+(A 中第 i 行、第 j 列之前非 0 元素的个数,包括第 j 列)=(1+2+3+(i-1)+j=i(i-1)/2+j则 Ai,j存放在 B 中的元素下标 ki(i 一 1)/2+j(因为 B 的数据元素从 1 开始)。例如:A3,3保存在 B 中的位置为k=3(3=1)/2+3=6,即 A3,3保存在数据元素 B6中。10.设有二维数组 A1:U1,1:U 2,已知数据元素 A1,1在位置 2,A2,3在位置 18,A3,2在位置28,则
22、元素 A4,5在位置( )。(分数:2.00)A.46 B.45C.48D.30解析:题目中没有给出该数组是行优先存储还是列优先存储,因此需要首先判断数组的存储方式。因为 Loc(A3,2)Loc(A2,3),所以数组一定是按行存储的。因为 A1,1是起始位置,则有 L1-2。利用已知条件,根据计算地址的公式有:Loc(A2,3)=L 1+(2-1)U2d+(3-1)d-18,即2+U2d+2d=18 (方程 1)Loc(A3,2)=L 1+(3-1)U2d+(2-1)d-28,即2+2U2d+d-28 (方程 2)由以上两方程联立,得方程组,解得:U 2=6,d=2。由此得到数组 A 的列数
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研 试卷 队列 数组 答案 解析 DOC
