第四章 串、数组和广义表练习题

本章考点较少易于掌握,对于串的重点考点为串的模式匹配算法;数组的主要考点为数组下标与存储地址计算和特殊矩阵的压缩存储方法;针对广义表的考点主要为在广义表中取原子项(表)的操作、求表的长度和深度。同时,应注意相关概念的区分。


一、选择题

1. 串的长度是指( )。

A.串中所含不同字母的个数    B.串中所含字符的个数

C.串中所含不同字符的个数    D.串中所含非空格字符的个数

     【答案】B。串中字符的数目称为串的长度

2. 设有数组A[i,j],数组的每个元素长度为3字节, i的值为1到 8,j的值为1到10 ,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( )。

A.BA+141   B.BA+180   C.BA+222    D.BA+225

     【答案】B 。以列序为主,则LOC[5,8]=[(8-1)*8+(5-1)]*3+BA=BA+180

3. 设有一个10阶的对称矩阵A ,采用压缩存储方式,以行序为主存储, a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( )

A.13        B.32        C.33        D.40

    【答案】C. 以列序为主,则LOC[8,5]=[8*(8-1)/2+5-1]+1=33

4. 维数组A的每个元素是由10个字符组成的串,其行下标 i=0,1, , ,8, 列下标 j=1,2, , ,10 。若A按行先存储,元素A[8,5]的起始地址与当A按列先存储时的元素( )的起始地址相同。设每个字符占一个字节。

A.A[8,5]     B.A[3,10]    C . A[5,8]      D.A[0,9]

     【答案】B。设数组从内存首地址M开始顺序存放,若数组按行先存储,元素 A[8,5]的起始地址为:M+[(8-0) *10+( 5-1)]*1=M+84;若数组按列先存储,易计算出元素 A[3,10]的起始地址为:M+[ (10-1)*9+(3-0)]*1=M+84。

5. 设二维数组 A[1.. m ,1.. n](即m行n列)按行存储在数组 B[1.. m*n] 中,则二维数组元素A[i,j] 在一维数组B中的下标为( )。

        A.(i-1)*n+j   B.(i-1)*n+j-1   C.i*(j-1)    D.j*m+i-1

     【答案】A。 本题可采用特殊值法。取i=j=1,易知A[1,1]的下标为1,四个选项中仅有 A 选项能确定的值为 1故选 A 。

6. 对n阶对称矩阵压缩存储时,需要表长为( )的顺序表。

        A. n/2       B. n*n/2        C. n(n+ 1)/2   D. n(n- 1)/2

     【答案】C。对对称矩阵的存储只需要存储其上三角或下三角部分(含对角线),元素个数为n +(n-1)+ (n -2) +..*+ 1 =n(n+ 1)/2。

7. 若将n阶下三角矩阵A按列优先顺序压缩存放在一维敏组B[1..n(n+1)/2+1]中,则存

放到B[k]中的非零元素aij(1≤i,j≤n)的下标j与k的对应关系是( )。

       A. (- 1)(2n-j+ 1)/2+i-j         B. (j-1)(2n-j+2)/2+i-j+ 1

       C. (j- 1)(2n-j+2)2+i-j          D. (j- 1)(2n-j+ 1)/2+i-j- 1.

     【答案】B。按列优先存储,故元素aij之前有j-1列,共有n+(n-1)+..+(n-j+2)=(j-1)(2n-j+ 2)/2个元素,元素aij是第j列上第i-j+1个元素,数组B下标从1开始,k=(j-1)(2n-j+ 2)/2+i-j+1。

8. 适用于压缩存储稀疏矩阵的两种存储结构是( ).

       A.三元组表和十字链表        B.三元组表和邻接矩阵

       C.十字链表和二叉链表        D.邻接矩阵和十宇链表

     【答案】A。三元组表的结点存储了行row、列col、值value三种信息,是主要用来存储稀疏矩阵的一种数据结构。十字链表将行单链表和列单链表结合起来存储稀疏矩阵。邻接矩阵空间复杂度达0(n2),不适合于存储稀疏矩阵。而二叉链表又名左孩子右兄弟表示法,可用于表示树或森林。

9. 设有一个12x12的对称矩阵M,将其上三角部分的元素m/(1≤i≤j≤12)按行优先存入C语言的一维数组N中,元素m6,6在N中的下标是( )。

       A.50        B.51           C.55        D. 66

     【答案】A。在C语言中,数组N的下标从0开始。第一个元素m,对应存入no,矩阵M的第一行有12个元素,第二行有11个,第三行有10个,第四行有9个,第五行有8个,所以m6..是第12+ 11+10+9+8+1=51个元素,下标应为50。

10. 串“ ababaaababaa ”的 next 数组为( )。

     A.012345678999          B.012121111212

     C.011234223456          D.0123012322345

   【答案】C。具体过程如下:

11. 串“ ababaabab ”的 nextval 为( )。

       A. 010104101           B.010102101

       C. 010100011           D.010101011

     【答案】A。nextval数组的确认:首先要确定next数组,在确定next数组后按照第10题中方法确定nextval数组。其结果如图所示:

12.广义表 A=(a,b,(c,d),(e,(f,g))) ,则 Head(Tail(Head(Tail(Tail(A))))) 的值为( )。

        A. (g)         B.(d)         C.c       D.d

   【答案】D。过程如下:

13. 广义表 ((a,b,c,d)) 的表头是( ),表尾是( )。

        A.a     B.( )     C.(a,b,c,d)     D.(b,c,d)

     【答案】C、B。表头为非空广义表的第一个元素,可以是一个单原子,也可以是一个子表,((a,b,c,d)) 的表头为一个子表(a,b,c,d);表尾为除去表头之外,由其余元素构成的表,表为一定是个广义表,((a,b,c,d))的表尾为空表 ( ) 。

14. 设广义表 L=((a,b,c)) ,则 L 的长度和深度分别为( )。

       A.1和1   B.1和3    C.1和2   D.2和3

     【答案】C 。广义表的深度是指广义表中展开后所含括号的层数,广义表的长度是指广义表中所含元素的个数。根据定义易知L的长度为1,深度为2。

二、填空题

1. 将整型数组 A[1..8,1..8]按行优先次序存储在起始地址为 1000 的连续的内存单元 中,则元素 A[7,3]的地址是:______。

     【答案】1100。注意,整形一般情况下占用两个字节大小,计算过程为1000+[(7-1)*8+(3-1)]*2=1100

2. 三维数组 a[4][5][6](下标从 0 开始计,a 有 4*5*6 个元素),每个元素的长度是 2,则 a[2][3][4]的地址是_____。(设 a[0][0][0]的地址是 1000,数据以行为主方式存储)

     【答案】1164。具体计算如下:[(2-0)*5*6+(3-0)*6+(4-0)]*2+1000=1164。

3. 设二维数组 A[-20..30,-30..20], 每个元素占有 4 个存储单元, 存储起始地址为 200. 如按行优先顺序存储,则元素 A[25,18]的存储地址为____;如按列优先顺序存储,则元素 A[-18,-25]的存储地址为______。

     【答案】①9572;②1228。

                    具体计算如下:①[(20+25)*51+(18+30)*4]+200=9572;

                                            ②[(-25+30)*51+(-18+20)*4]+200=1228;

4. 己知三对角矩阵A[1..9,1..9]的每个元素占2个单元,现将其三条对角线上的元素逐行存储在起始地址为1000的连续的内存单元中,则元素A[7,8]的地址为___。

     【答案】1038。具体计算过程如下:[(i-1)*3+(j-i)]+1000=1038。

5. 数组 A[1..8,-2..6,0..6]以行为主序存储,设第一个元素的首地址是 78,每个元 素的长度为 4,试求元素 A[4,2,3]的存储首地址。

     【答案】958。具体计算过程如下:78+4*(3*9*7+4*7+3)=958。

6. 给出字符串‘abacabaaad’在 KMP 算法中的 next 和 nextval 数组

     【答案】 ①0112123422;②01020101422

7.令 t=‘abcabaa’,求其 next 函数值和 nextval 函数值。

     【答案】①0111232;②0110132

《数据结构》-第四章 串、数组和广义表(习题)相关推荐

  1. [数据结构与算法] 串,数组和广义表

    串偏向于算法,数组和广义表偏向于理解 第四章 串.数组和广义表 4.1 串的定义 4.2 案例引入 4.3 串的类型定义,存储结构及运算 4.3.1 **串的类型定义** 4.3.2 串的存储结构 4 ...

  2. C语言数据结构-第四章 串-电大同步进度

    第四章 串 字符串是计算机处理的最基本的非数值数据.字符串是一种特定的线性表,其特殊性就在于组成线性表的每个元素就是一个单字符. 本章给出: l         串的基本概念 l         串的 ...

  3. (王道408考研数据结构)第四章串-第一节:串的定义和基本操作及存储结构

    文章目录 一:串基本概念 (1)串的定义 (2)相关术语 (3)串的基本操作 二:串的比较 三:字符集编码 四:串的存储结构 (1)串的顺序存储 (2)串的链式存储 一:串基本概念 (1)串的定义 串 ...

  4. 王道408数据结构——第四章 串(KMP算法)

    一.串的定义和实现 字符串简称串,是由零个或多个字符组成的有限序列,一般记为S=′a1a2⋅⋅⋅an′S='a_1a_2···a_n'S=′a1​a2​⋅⋅⋅an′​,n称为串的长度. 串中任意多个连 ...

  5. 王道数据结构课代表 - 考研数据结构 第四章 串-KMP(看毛片算法) 究极精华总结笔记(C版本)

    本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对数据结构知识点的理解的总结.希望对新一届的计算机考研人提供帮助!!!   关于对 串 章节知识点总结的十分全面,涵括了<王道数据结构 ...

  6. (王道408考研数据结构)第四章串-第二节:串的模式匹配算法(朴素和KMP)

    串的匹配是一个非常重要的话题,我们在Word中经常使用的搜索功能所反映的就是串的匹配问题,相应的算法也是层出不穷,各有优缺点,本节主要涉及两种算法:朴素算法和KMP算法 在讲解之前,有几个术语需要掌握 ...

  7. 【数据结构总结】第四章:串、数组和广义表(线性结构)

    第四章:串.数组和广义表(线性结构) 提示:本文主要是以思维导图的形式概括数据结构第一章的精华内容,基本不会用到文字性的内容,目的是为了给大家梳理每个重要的知识点的相关概念,方便大家在复盘的时候快速阅 ...

  8. 数据结构(C语言第2版) 课后习题答案之第四章 串、数组和广义表

    目录 第4章  串.数组和广义表 1.选择题 (1)串是一种特殊的线性表,其特殊性体现在(  ). (2)串下面关于串的的叙述中,(  )是不正确的? (3)串"ababaaababaa&q ...

  9. 数据结构 习题 第五章 多维数组和广义表 (C语言描述)

    最近在复习数据结构,所以想把平时上课做的习题做个总结,如果大家有遇到这方面的问题就可以参考一下了,废话不多说,直接开始吧. 1.单选题 稀疏矩阵一般的压缩存储方法有两种,即( D) A. 二维数组和三 ...

最新文章

  1. 多级反馈队列调度算法具体原理
  2. leetcode 10 Regular Expression Matching
  3. UI基础视图----UIImageView总结
  4. JS判断Iframe是否加载完成
  5. 设计模式的C语言应用-观察者模式-第四章
  6. db2 linux 导入数据_MySQL数据的导出和导入(Linux)
  7. linux查看hid设备,linux hid设备读写
  8. 用C#绘图实现动画出现卡屏(运行慢)问题的解决办法
  9. 忽略“Signal: SIGSEGV (Segmentation fault)”
  10. 下一代终端保护六大支柱
  11. windows本地安装PLSQL
  12. ffmpeg 的下载安装
  13. javafx 教程_新的JMetro JavaFX 11兼容版本
  14. p,np,npc,np难问题,确定图灵机与非确定图灵机
  15. (23)Linux基础-系统磁盘阵列raid
  16. android 仿微信表情雨下落!
  17. t-learning 产品经理课程笔记
  18. c 怎么跨服务器取文件,c语言远程文件获取服务器
  19. win10 安装office 2016 plus 备忘
  20. mysql和eclipse用户管理系统_房产备案管理系统的设计与实现(Eclipse,SpringBoot,MySQL)...

热门文章

  1. 潜规则------中国历史中的真实游戏 吴思
  2. Zotero安装和使用
  3. 应用楼宇自控系统降低建筑物设备成本
  4. 什么是模块化?模块化的好处?
  5. JDK11安装教程(WIN10)
  6. pytorch中的数据加载(dataset基类,以及pytorch自带数据集)
  7. kali wmap使用教程
  8. Oracle 夺得榜首,MySQL 稳居第二 ,10月数据库排行榜出炉!
  9. matlab怎么对语音信号取样,语音信号采样和频谱分析
  10. 杰理之linein为DAC进使用打断方式播放提示音,一直有linein背景音【篇】