数据结构问答5

文章讨论了数组与线性表的区别,数组的特点,包括其统一的数据类型、线性结构以及在存储上的优势。二维数组的存储方式包括按行和按列。特殊矩阵如对称、对角和稀疏矩阵可以进行压缩存储,其中稀疏矩阵使用三元组或十字链表表示。广义表作为线性表的推广,包含原子和子表,具有深度和长度的概念,并且可以是递归的或共享的,通常采用动态链式存储。
摘要由CSDN通过智能技术生成

1. 数组与一般线性表之间的差异

答:二维数组可以看做每个数据元素都是相同类型的一维数组的一维数组。以此类推,任何多维数组都可以看成一线性表,此时线性表中的每个元素也是一个线性表。多维数组是线性表的推广。

2. 数组的特点

答:① 数组中各元素具有统一的类型

       ② d维数组中非边界元素具有d个前驱元素和d个后继元素

       ③ 数组维数确定后,数组元素个数和元素之间的关系不再发生改变,特别适合于顺序存储(按照顺序存储的数组都具有“随机存取”的特性)

       ④ 每组有意义的下标都存在一个与其相对应的数组元素值

3. 二维数组a顺序存储

答:两种方式:按行存;按列存,已知二维数组的行上下界为c1,d1;列上下界为c2,d2

按行:loc(aij) = loc(ac1d1) + [ (i - c1) * (d2 - c2 +1 ) + (j - c2) ] * k

按列:loc(aij) = loc(ac1d1) + [ (j - c2) * (d1 - c1 +1 ) + (i - c1) ] * k

4. 特殊矩阵的压缩存储

答:压缩存储:对方阵中0元素和相同的元素不分配存储空间,有对称矩阵、对角矩阵、稀疏矩阵三元组表示顺序表存储、链式存储:十字链表存储时,都不再具有随机存储功能)用十字链表存储稀疏矩阵时,共有Max{m, n}+1个头结点,m+n+1个单链表。相同的行列共用一个表头结点,各个表头结点再链接成链表,这个链表上再用一个表头结点并存储表示行和列的数量

5. 广义表定义和特性

答:

定义:广义表是线性表的推广,是n个元素的一个有限序列。广义表GL表示与线性表相同

GL=(a1, a2, ... , an)。若ai是单个数据元素,这称之为广义表的原子;如果是一个广义表,则称之为广义表的一个子集

特性:GL=(a, (b, (c), (#))),head=a,tail=((b, (c), (#)))

① 一个广义表中的数据既可以是原子,也可以是子表

② 广义表中的数据元素有相对次序,数据元素个数有限

③ 其长度定义为最外层包含的元素个数

④ 深度定义为所包含的括号的重数,原子深度为0,空表深度为1

⑤ 可以共享,共享的广义表称为再入表

⑥ 可以是一个递归的表,一个广义表可以是自己的子表。这种称为递归表,深度是无穷值,长度是有限值。

⑦ 任何一个广义表均可分解为表头和表尾两部分。空表不能求表头表尾。表尾总是一个广义表

存储结构:很难为其分配一个固定大小的空间,只能采用动态链式存储结构。

6. 简述广义表、数组和线性表的关系

答:多维数组、广义表是线性表的推广,线性表是其特殊情况。将线性表中的元素变为一维数组或者广义表的子表,则推广到了多维数组和广义表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值