最近在复习数据结构,所以想把平时上课做的习题做个总结,如果大家有遇到这方面的问题就可以参考一下了,废话不多说,直接开始吧。

1、单选题
稀疏矩阵一般的压缩存储方法有两种,即( D)
A. 二维数组和三维数组
B. 三元组表和散列
C. 散列和十字链表
D. 三元组表和十字链表

三元组表:将表示稀疏矩阵的非零元素的三元组表按行优先(或列优先)的顺序(跳过零元素),则得到一个其结点均是三元组的线性表,此线性表的顺序存储结构称为三元组表。
三元组表是稀疏矩阵的一种顺序存储结构。
(当非零元素的位置或个数经常发生变化时,三元组表不适合做稀疏矩阵的存储结构)
此时可采用链表做为存储结构更为恰当,如:十字链表

2、判断题
线性表可以看成是广义表的特例,如果广义表中的每个元素都是原子,则广义表便成为线性表.

正确
广义表(Lists):又称列表,是线性表的推广
线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个数或一个结构,若放松对表元素的这种限制,容许它们具有其自身独立的类型结构,这就产生了广义表。
为了区分原子和广义表,书写时用大写字母表示广义表,小写字母表示原子。
一个表的“深度”是指表展开后所含括号的层数。

3、判断题
广义表是线性表的推广,是一类线性数据结构。

错误
广义表不仅是线性表的推广,也是树的推广。

4、填空题
二维数组A[10][20]采用行序为主方式存储,每一个元素点一个存储单元,且A[0][0]的存储地址是200,则A[6][12]的地址是▁▁▁。

答案(填空1):
332

数组中任一元素A[i][j]的存储位置可用下列公式计算:
LOC( A[i][j] ) = LOC ( A[0][0] ) + ( i×n+j ) × L
这是因为数组元素 A[i][j] 的前面有 i 行,每一行的元素个数为 n,在第 i 行中 A[i][j] 的前面还有 j 个数组元素。L 仍然是每个数据元素所占存储单元的个数。
LOC( A[6][12] )= LOC ( A[0][0] ) + (6*20+12)*1 = 200 + 132 = 332

5、单选题
设矩阵A是一个对称矩阵,为了节省存储空间。将其下三角部分按行序存放在一维数组SA[0…n(n+1)/2-1]中,对任一下三角部分元素aij(i≥j)。在一维数组SA的下标位置k的值是( A)
A. i * ( i + 1 ) / 2 + j
B. j * ( j + 1 ) / 2 + i - 1
C. i * ( i - 1 ) / 2 + j
D. j * ( j - 1 ) / 2 + i - 1

6、填空题
广义表(a,(a,b),d,e,((i,j),k))的长度是▁▁▁,深度是▁▁▁。
答案(填空1):
5
答案(填空2):
3

7、单选题
一个 n * n 的对称矩阵,如果以行或列为主序采用压缩存储,其容量为(B)。
A. ( n + 1 ) * ( n + 1 ) / 2
B. ( n + 1 ) * n / 2
C. n * n
D. n * n / 2

8、填空题
有一个10阶对称矩阵A,采用压缩存储方式(以行序为主存储,且A[0][0]=1)。则A[8][5]的地址是▁▁▁。
答案(填空1):
42

(1+8)*8/2+5+1=42

9、单选题
N是一个5×8的二维数组,当N按行优先方式存储时,表示该数组的第10个元素的是(B )
A. N[2][2]
B. N[1][1]
C. N[1][2]
D. N[2][1]

1*8+1=9,N[1][1] 前面有九个元素,它是第十个元素。
下面补充一些关于对称矩阵的内容:

  • 对于一个n阶对称矩阵,第i行(0≤i<n)只需要存储i+1个元素,元素总数为:
    ∑ i = 0 n − 1 ( i + 1 ) = n ( n + 1 ) / 2 \sum_{i=0}^{n-1}(i+1)=\mathrm{n}(\mathrm{n}+1) / 2 i=0∑n−1​(i+1)=n(n+1)/2
  • 若i≥j,则A[i][j]在下三角矩阵中,A[i][j] 之前的i行一共有1+2+…+ i =i×(i+1)/2个元素,在第i行上,A[i][j] 之前有j个元素,因此有:
    k=i×(i+1)/2+j
  • 若i<j,则A[i][j]在上三角矩阵中。因为A[i][j] = A[j][i] ,所以只要交换上述对应关系式中的i和j即可得到:
    k=j×(j+1)/2+i
  • 若令I=max(i,j),J=min(i,j),得到:k=I×(I+1)/2+J (0≤k<n×(n+1)/2 )
    因此:
    LOC( A[i][j] ) = LOC( SA[k] ) = LOC( SA[0] ) + k×d
    = LOC(SA[0])+[I×(I+1)/2+J] ×d
  1. 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为8,每个元素占一个地址空间,则a54的地址为( 21

注意,这题是a11为第一元素,而不是a00为第一元素,所以:
4*(4+1)/ 2 + 3 + 8 = 21

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

这里a45是所在位置是上三角矩阵,所以为了方便运算,我们要把它转化为下三角矩阵,转化方法请看上面。
所以变成下三角矩阵以后,使用a54 进行计算:
5*(5+1)/ 2 + 4 + 8 = 15 + 4 + 8 =27

  • 补充:

  • L 表示 每个数据元素所占存储单元的个数。

  • 一维数组中任一元素 A[i] 的存储位置为:
    LOC( A[i] )= LOC (A [0]) + i * L (从0下标开始)
    LOC( A[i] )= LOC (A [1]) + ( i - 1 ) * L (从1下标开始)

  • 二维数组 A[m][n]:
    以行序为主序: LOC( A[i][j] )= LOC (A [0][0]) + ( i * n + j ) * L
    以列序为主序: LOC( A[i][j] )= LOC (A [0][0]) + ( j * m + i ) * L

我把我目前写的关于数据结构 题目的链接全部汇总整理在下面,有需要的小伙伴自己点击哈。

  • 数据结构 习题 第一章 概论
  • 数据结构 习题 第二章 线性表 (C语言描述)
  • 数据结构 习题 第三章 栈和队列 (C语言描述)
  • 数据结构 习题 第四章 串 (C语言描述)
  • 数据结构 习题 第五章 多维数组和广义表(C语言描述)
  • 数据结构 习题 综合复习

实验:

  • 数据结构 实验一 顺序表的操作
  • 数据结构 实验二 链表的基本操作
  • 数据结构 实验三 栈的基本运算
  • 数据结构 实验四 二叉树的操作
  • 数据结构实验五-马踏棋盘
  • 数据结构-顺序表的排序操作-冒泡排序

因为最近还在准备别的考试,所以目前就先更新这么多哈,后面有时间的话,还会再写一篇关于数据结构实验的题目,欢迎大家关注呦!

如果大家觉得对你们有帮助的话,可以点个赞再走吗,嘿嘿。
笔者使用的教材是高等教育出版社唐策善、李龙澍、黄刘生编著的《数据结构——用C语言描述》。
因为都是我自己打字,或者我的答案,可能会有错误的地方,如果有的话,欢迎大家指出。

数据结构 习题 第五章 多维数组和广义表 (C语言描述)相关推荐

  1. 《数据结构》-第四章 串、数组和广义表(习题)

    第四章 串.数组和广义表练习题 本章考点较少易于掌握,对于串的重点考点为串的模式匹配算法:数组的主要考点为数组下标与存储地址计算和特殊矩阵的压缩存储方法:针对广义表的考点主要为在广义表中取原子项(表) ...

  2. 第五章:1.数组和广义表 -- 数组

    前言: 2.3.4章讨论的线性结构中的数据元素都是非结构的原子类型,元素的值是不再分解的.本章讨论的两种数据结构---数组和广义表可以看成是线性表在下述含以上的扩展:表中的数据元素本身也是一个数据结构 ...

  3. 《数据结构》第四章串,数组和广义表

    <数据结构>第四章 文章目录 <数据结构>第四章 4.1 串的定义 4.2 案例引入 4.3 串的类型定义,存储结构及其运算 4.3.1 串的抽象类型定义 4.3.2的存储结构 ...

  4. 广工 AnyviewC 数据结构习题 第五章

    广工 AnyviewC 数据结构习题 第五章 广工 AnyviewC 数据结构习题 第五章 1[题目]试编写如下定义的递归函数的递归算法: 2[题目]试写出求递归函数F(n)的递归算法: 3[题目]求 ...

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

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

  6. 数据结构第二版(朱昌杰版)第四章:串、多维数组、广义表

    简要概括 串的定义和存储结构 串的模式匹配 数组矩阵与稀疏矩阵的压缩存储 广义表的定义与基本操作 首先串的定义:是指字符串,且存储结构同样是顺序存储和链式存储两种方式 串的模式匹配,也是根据两种不同的 ...

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

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

  8. 【数据结构】CH6 数组和广义表

    目录 前言 一.数组 1.数组的基本概念 (1)定义 (2)性质 (3)d维数组的抽象数据类型 (4)[例6.1] 2.数组的存储结构 (1)一维数组的存储结构 (2)二维数组的存储结构 (3)三维数 ...

  9. 6.串、数组、广义表

    思考 一.什么是串.数组.广义表?(What) 1.串的定义 1.串: 2.子串.真子串: 3.字符位置.子串位置.空格串 4.串相等 2.案例引入 3.串的类型定义.存储结构及其运算 1.类型定义 ...

最新文章

  1. Global.asax
  2. pymc3 贝叶斯线性回归_使用PyMC3进行贝叶斯媒体混合建模,带来乐趣和收益
  3. UVA10258 ZOJ1837 Contest Scoreboard【结构排序】
  4. 跟着波哥学安卓之HelloKitty
  5. 12306网站抢票机制攻与防
  6. 微型计算机上的射箭成为什么,《说文解字》第429课:“谢”字里为什么有一个“射箭”的“射”...
  7. C#:实现麦克劳林级数计算非线性函数算法(附完整源码)
  8. “垃圾食品”卫龙欲洗白上市,藏在“辣条一哥”背后的暴利生意经
  9. 团队作业(三):项目分工
  10. PDF转换Word如何操作?用迅读PDF转换器,任意互转
  11. C#回顾学习笔记四十:三层架构
  12. HanLP --- 依存句法分析
  13. 2013渣打编程马拉松赛天津初赛总结
  14. 汽车音响AMP功放-扬声器诊断驱动开发
  15. 芯片测试随笔之一:采用Excel进行处理数据
  16. STC89C52单片机红外遥控中断以及代码显示
  17. 2020年一级消防工程师消防安全技术实务精讲班第1讲-考试特点及备考方案
  18. 第11周项目七 太乐(泰勒)了
  19. 【c++复习笔记】——智能指针详细解析(智能指针的使用,原理分析)
  20. 逻辑面试题之:A说B说谎,B说C说谎,C说AB说谎,那么谁说的是真话谁说的是假话

热门文章

  1. 如何用python实现视频字幕提取?
  2. 智慧车行小程序设计方案
  3. RoadMap:面向自动驾驶的轻型语义地图视觉定位方法
  4. 课程设计 KCSJ-04 轴承座零件的工艺规程及工艺装备设计(设计说明书+CAD图纸+工序卡10张+过程卡)
  5. Solidity-僵尸攻击人类
  6. selenium鼠标悬停
  7. Qt触摸屏点击无MouseButtonRelease产生的问题
  8. linux远程连接工具putty使用方法,linux远程登陆工具putty使用
  9. numpy median is use the median median algorithm(quickselect)
  10. 非成对图像翻译(Unpaired Image-to-Image Translation)部分经典论文汇总