精华内容
下载资源
问答
  • 现有一n*n的稀疏矩阵,其非零元素的个数为P,假设在上述三种表示法中,每个域(值指针)都占4个字节的空间,而且头结点非头结点有相同的结构。请给出三种表示法表示该矩阵各自所需的空间数(以字节为单位)。 ...

    一 基础知识题:

    (一)关于稀疏矩阵的存储

    1.有三种存储稀疏矩阵的方法:a.十字链表法b.二维数组表示法c.三元组表示法

    现有一n*n的稀疏矩阵,其非零元素的个数为P,假设在上述三种表示法中,每个域(值和指针)都占4个字节的空间,而且头结点和非头结点有相同的结构。请给出三种表示法表示该矩阵各自所需的空间数(以字节为单位)。

    解:这道题主要考察稀疏矩阵的三种存储方法,需要对各方法有较深入的认识。

    (1)对于一个n*n矩阵,该矩阵有P个非零元素,在十字链表表示法中,零元素不分配空间,但每行每列都应有各自的头指针,所以共有头指针2n个,共占用2n*4=8n个字节。对于非零元素,需要3个数据域(i,j,e)和2个指针域(right,down)。所以共有(3+2)P个域,共需5P*4=20P个字节。于是,采用该表示法共需20P+8n个字节。

    (2)若采用二维数组表示法,则共有n^2元素,因此共需4n^2个字节。

    (3)三元组表示法,零元素同样不占用空间,每个三元组需要3个数据域。除此之外,还需要一个数据域来存放存储矩阵的行数、列数以及非零元素的个数。所以共需要(P+1)*3*4=12P+12个字节。

    2.设m*n阶稀疏矩阵A有t个非零元素,其三元组表表示为LTMA[1:(t+1),1:3],试问:非零元素的个数t达到什么程度时用LTMA表示A才有意义?

    解:如果选用二维数组表示法来表示稀疏矩阵A,则需要m*n个存储单元。三元组表表示法的优点在于不需要存储零元素,节约了存储空间。而该三元组表共有3*(t+1)个存储单元,所以只有当3*(t+1)<m*n时,用LTMA表示A才有意义。

    展开全文
  • 数组和广义表1.如何理解数组是线性表的推广答:数组可以看成是线性表在下述含义上的拓展:线性表中的数据元素本身也是一个线性表。在d(d>=1)维数组中的每个数据元素都受着d个关系的约束,在每个关系中,数据元素...

    数组和广义表

    • 1.如何理解数组是线性表的推广

      • 答:数组可以看成是线性表在下述含义上的拓展:线性表中的数据元素本身也是一个线性表。在d(d>=1)维数组中的每个数据元素都受着d个关系的约束,在每个关系中,数据元素都有一个后继元素(除最后一个元素外)和一个前驱元素(除第一个元素外)。
      • 因此。这d个关系中任一关系,就其单个关系而言,仍是线性关系。例如,mxn的二维数组的形式话定义如下:
        A = (D, R)
        其中:
        D = {aij | 0 <=i<=m-1, 0 <=j < = n - 1} // 数据元素的集合
        R = {ROW, COL}
        ROW = {1,j> | 0 <= i <=m - 2, 0 <= j <= n - 1} // 行关系
        COL = {1> | 0 <= i <= m - 1, 0 <= j <= n - 2} // 列关系
    • 2.有三维数组a[0..7, 0...8, 0...9]采用按行序优化存储,数组的起始地址是1000,每个元素占用2个字节,试给出下面结果:

      • LOC(a1,6,8) = LOC(a0,0,0) + [1 * 9 * 10 + 6 * 10 + 8] * 2 = 1000 + 316
      • 数组a所占用存储空间 = 8 * 9 * 10 * 2 = 1440字节
      • 元素a1,6,8的起始地址
      • 数组a所占用的存储空间
      • 答:
    • 3.如果某个一维数组A的元素个数n很大,存在大量重复的元素,且所有元素值相同的元素紧挨在一起,请设计一个压缩存储方式使得存储空间更节省。

      • 答:设数组的元素类型为ElemType,采用一种结构体数组B来实现压缩存储,该结构体数组的元素如下:
        struct
      • 如数组A[] = {1, 1, 1, 5, 5, 6, 6}共有17个元素,对应的压缩存储为:{{1, 3}, {5, 2}, {6, 2}}。从中看出,如果重复元素越多,采用这种压缩存储方式越节省存储空间。
    • 4.一个n阶对称矩阵A采用压缩存储在一维数组B中,则B包含多少个元素?

      • 答:通常B中包含n阶对称矩阵A的下三角和主对角线上的元素,其元素个数为1+2+...+n=n(n + 1)n / 2
    • 5.设nxn的上三角矩阵A[0..n-1, 0..n-1]已压缩到一维数组B[0..m]中,若按列为主序存储,则A[i][j]对应的B中存储位置k为多少,给出推导过程

      • 对于上三角部分或者主对角中的元素A[i]j,按列为主序存储时,前面有0~j-1共j列,第0列有1个元素,第1列有2个元素,...第j-1列有j个元素,所以这j列的元素个数=1+2+...+j=j(j+1)/2;在第j列中,A[i][j]元素前有A[0..i-1, j]共i个元素。所以A[i][j]元素前有j(j+1)/2+i个元素,而B的下标从0开始,所以A[i][j]在B中的位置k=j(j+1)/2+i。
    • 利用三元组存储任意稀疏数组A时,假设其中一个元素和一个整数占用的存储空间相同,问在什么条件下才能节省存储空间。

      • 设稀疏矩阵A有t个非零元素,加上行数rows丶加上列数cols和非零元素个数nums(也算一个三元组),那么三元组顺序表的存储空间总数为3(t+1),若用二维数组存储时占用空间总数为mxn,只有当3(t+1)n即tn/3-1时,采用三元组存储才能节省存储空间。
    • 7.用十字链表存储一个有K个非0元素的m*n的稀疏矩阵,则其总的节点数为多少?

      • 该十字链表有一个十字链表表头节点,MAX(m, n)个行丶列表头节点。另外,每个非0元素对应一个节点,即K个元素节点。所以共有MAX(m, n) + k + 1个节点。
    • 8.求下列广义表运算的结果

      • head[(x, y, z)] = x;
      • tail[((a, b), (x, y))] = (x, y);
      • head[(x, y, z)]
      • tail[((a, b), (x, y))]
      • 注意:为了清楚起见,在括号层次较多时,将head和tail的参数用中括号表示。例如head[G]丶tail[G]分别表示求广义表G的表头和表尾。
    • 9.设定二维数组B[0..m-1, 0..n-1]的数据在行丶列方向上都按从小到大的顺序按序,且整型变量X中的数据在B中存在。设计一个算法,找出一对满足B[i][j]=x的i丶j值。要求比较次数不超过m+n。

      • 若相等,则比较结束;
      • 若X大于右上角元素,则可断定二维数组的最上面一行肯定没有与X相等的数据,下次比较时搜索范围可减少一行;
      • 若X小于右上角,则可断定二维数组的最右面一列肯定不包含与X相等的数据,下次比较时可把最右一列剔除出搜索范围。
      • 从二维数组B的右上角的元素开始比较。每次比较有三种可能的结果:
      • 这样,每次比较可使搜索范围减少一行或一列,最多经过m+n次比较就可找到要求的与X相等的元素。对应的程度如下:
        #include 
    • 10.设计一个算法,计算一个三元组表示的稀疏矩阵的对角线元素之和。

      • 答:对于稀疏矩阵三元组表a,从a.data[0]开始查看,若其行号等于列好,表示是一个对角线的元素,则进行累加,最后返回累加值。算法如下:
        bool diagonal(TSMatrix a, ElemType &sum)
    • 11.设计一个算法Same(g1, g2),判断两个广义表g1和g2是否相同。

      bool Same(GLNode *g1, GLNode *g2)
      • 答:判断广义表是否相同过程是,若g1个g2均为NULL,则返回true;若g1和g2中一个为NULL,另一个不为NULL,则返回false;若g1和g2均不为NULL,若同为原子且原子值相等,则返回Same(g1->link,g2->link),若同为子表,则返回Same(g1->val.sublist, g2->val.sublist)&Same(g1->link, g2->link)的结果,若一个为原子另一个为字表,则返回false。对应的算法如下:

    参考:《数据结构教程》

    如果你看完觉得这篇文章不错,帮我两件小事

    • 点个在看,让更多人也能看到这篇内容
    • 关注公众号前端应届生,持续为你推送精彩文章49de5bf805861dde447a1bb5fdee0771.png
    • 加我拉你进超级前端交流群,和各大厂的同学一起交流042a7ecdc6594f5ea945b1bc0c48774d.png
    展开全文
  • 数据结构-栈队列串数组和广义表习题 一选择题 1 一个栈的输入序列为1 2 3 4 5则下列序列中不可能是栈的输出序列的是 B A. 2 3 4 1 5 B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 2 2 若已知一个栈的入栈序列是1,2,3,n其...
  • 习题数组和广义表 一单项选择题 1常对数组进行的两种基本操作是 A. 建立与删除 B. 索引与修改 C. 2对于 C 语言的二维数组 DataType A[m][n], 任意元素 a[i,j] 的存储位置可由 ( ) 式确定 . 查找与修改 每个数据...
  • - PAGE PAGE 3 欢迎下载 第五章数组和广义表习题 习? 题 ?一选择题 ?1假设以行序为主序存储二维数组A[1100,1100]设每个数据元素占两个存储单元基地址为10则LOC(A[55])=? ) ? ?A. 808? B. 818? C. 1010? D. 1020 ?2...
  • 数据结构习题之多维数组和广义表

    千次阅读 2015-07-01 15:45:33
    第五章 多维数组和广义表 一、基本要求、重点、难点  本章目的是介绍多维数组的逻辑结构特征及其存储方式,特殊矩阵和稀疏矩阵的压缩存储方法。本章重点是熟悉多维数组的存储方式、矩阵的压缩存储方式,难点是...
    
    

    第五章 多维数组和广义

             一、基本要求、重点、难点

            本章目的是介绍多维数组的逻辑结构特征及其存储方式,特殊矩阵和稀疏矩阵的压缩存储方法。本章重点是熟悉多维数组的存储方式、矩阵的压缩存储方式,难点是稀疏矩阵的压缩存储方示下实现的算法。

             二、考核目标、考核要求

            1.多维数组,要求达到“理解”层次

            1.1多维数组的逻辑特征。

            1.2多维数组的顺序存储结构及地址计算方式。

            1.3数组是一种随机存取结构的原因。

            2.矩阵的压缩存储,要求达到“理解”层次

            2.1特殊矩阵和稀疏矩阵的概念。

            2.2特殊矩阵的压缩存储时的下标变换方法。

            2.3稀疏矩阵的三元组表表示方法及有关算法。

            三、练习题

           1.单项选择题

           1.1二维数组M的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i的范围是从0到7,列下标j的范围从0到9,则存放M需要存储单元数为(   D  )

           A) 360               B)480                  C) 240                  D) 320

            注释:由题目知:8*10*4=320。

           1.2 N是一个5×8的二维数组,当N按行优先方式存储时,表示该数组的第10个元素的是( C )

            A) N[2][2]         B)N[2][1]              C) N[1][1]             D)N[1][2]

            注释:五行八列的数组的第十个的元素为N[1][1]元素为第二行第二列的元素。

            1.3 二维数组M[i][j]的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i的范围是从0到4,列下标j的范围从0到5,M按行存储时元素M[3][5]的起始地址与M按列存储时地址地址相同的元素是( B )

            A) M[2][4]        B)M[3][4]             C) M[3][5]            D)M[4][4]

            注释:由题知按行优先的存储地址为:4*6*4=96。按列优先存储的相同素地址元素为:M[3][4]。  

           1.4 稀疏矩阵一般的压缩存储方法有两种,即( D )

            A)二维数组和三维数组               B)三元组和散列

            C)散列和十字链表                      D)三元组和十字链表

           1.5 常对数组进行的两种基本操作是(C  )                

            A)建立和删除                             B)索引和修改

             C)查找和修改                             D)查找和索引

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

             A)j*(j-1)/2+i-1                             B)i*(i+1)/2+j

             C)j*(j+1)/2+i-1                           D)i*(i-1)/2+j

             注释:对于对称矩阵来说,下标位置的值为:i*(i+1)/2+j。


             2.填空

             2.1已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是[LOC[(A[0][0])+(n*i+j)k]]。

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

             注释:利用公式计算地址为:200+6*20+12=332

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

             注释:由于是对称矩阵,利用地址计算公式为:1+8*(8+1)/2+5=42

    展开全文
  • 文章目录四、串、数组和广义表4.1、串的定义4.2、案例引入4.3、串的类型定义、存储结构及其运算4.3.1、串的抽象类型定义4.3.2、串的存储结构4.3.3、串的模式匹配算法4.4、数组4.5、广义表第四章小结第四章习题 ...

    整本书的知识点,点击右方链接整本书笔记知识点

     

     

    四、串、数组和广义表

    4.1、串的定义

    串即字符串,是由零个或多个字符组成的有限序列,是数据元素为单个字符的特殊线性表。

    1. 串是内容受限的线性表,它限定了表中的元素为字符
    2. 串长:串中字符个数(n≥0). n=0 时称为空串
    3. 空白串:由一个或多个空格符组成的串
    4. 子串:串S中任意个连续的字符序列叫S的子串; S叫主串
    5. 当两个串的长度相等,并且各个对应位置的字符都相等时,才称这两个串相等

    4.2、案例引入

    4.3、串的类型定义、存储结构及其运算

    4.3.1、串的抽象类型定义

        ADT Sting{
            //数据对象
                Objects:    D = {ai | ai∈CharacterSet, i=1, 2, …,n, n≥0}
            //数据关系
                Relations: R1={ <ai - 1, ai > | ai - 1, ai ∈D, i = 2, …,n }
            //基本操作
                functions:                              // 有13种之多
                StrAssign(&T, chars)                    // 串赋值,生成值为chars的串T
                StrCompare(S, T)                        // 串比较,若S>T,返回值大于0…
                StrLength(S)                            // 求串长,即返回S的元素个数
                Concat(&T, S1, S2)                      // 串连接,用T返回S1+S2的新串
                SubString(&Sub, S, pos, len)            // 求S中pos起长度为len的子串
                ……
                Index(S, T, pos)                        // 返回子串T在pos之后的位置
                Replace(&S, T, V)                       // 用子串V替换子串T
        }
        ADT Sting
    

    4.3.2、串的存储结构

    ①、定长顺序存储:用一组连续的存储单元来存放串,直接使用定长的字符数组来定义,数组的上界预先给出,故称为静态存储分配。
    例如

    C语言约定在串尾加结束符 ‘ \0’,以利操作加速,但不计入串长;

    若字符串超过Maxstrlen 则自动截断(因为静态数组存不进去)

    想存放超长字符串怎么办?——静态数组有缺陷。 改用动态分配的一维数组 堆

    ②、堆分配存储:仍用一组连续的存储单元来存放串,但存储空间是在程序执行过程中动态按需分配而得

    三、链式存储

    在这里插入图片描述

    4.3.3、串的模式匹配算法

    课时缩短,计划中不讲也不学这个。

    想学的话跳转链接:串的总结

    串、数组和广义表知识点

    4.4、数组

    数组是线性表的推广,特点是结构中的元素本身可以是具有某种结构的数据,但属于同一数据类型

    1.一维数组
    一维数组可看成是一个线性表或一个向量,存储在一块连续的存储单元中,适合于随机查找。一维数组记为A[n]或A=(a0,al,…ai,…,an-1) ,一维数组中ai的存储地址LOC(ai)可由下式求出:
    LOC(ai)=LOC(a0)+i*L (0≤i<n)
    2.二维数组
    二维数组,又称矩阵(matrix)。每个元素又是一个定长的线性表(一维数组),都要受到两个关系即行关系和列关系的约束,也就是每个元素都同属于两个线性表。例如,设A是一个有m行n列的二维数组,A可以看成由m个行向量组成的向量,也可以看由n个列向量组成的向量。

    在这里插入图片描述

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

    链接:数组和广义表详细知识点

    4.5、广义表

    广义表是线性表的推广,也称为列表。

    广义表是n(n≥0)个元素的一个序列,表中的元素可以是称为原子的单个元素,也可以是一个子表

    若n=0时则称为空表。设ai为广义表的第i个元素,则广义表的一般表示与线性表相同

    LS=(a1,a2,,ai,,an)
    

    其中n表示广义表的长度,n≥0。ai可以是单个元素,也可以是广义表

    如果ai是单个数据元素,则ai是广义表LS的原子;如果ai是一个广义表,则ai是广义表LS的子表

    习惯上,用大写字母表示广义表的名称,用小写字母表示原子

    广义表的长度(广度)指:广义表中所包含的数据元素的个数
    例如,在广义表 (a,(b,c,d)) 中,它包含一个原子和一个子表,因此该广义表的长度为 2。
    再比如,广义表 ((a,b,c)) 中只有一个子表 (a,b,c),因此它的长度为 1。

    广义表的深度,可以通过观察该表中所包含括号的层数间接得到。这里需要注意,数左括号(或右括号)时同一层次的多个括号只计算一次

    比如:广义表 ((1,2),(3,(4,5))) 中,此广义表中包含 3 层括号,因此深度为 3

    广义表深度 = 匹配最多括号的元素所匹配的括号对数,如上例子中的 4 和 5 都匹配了 3 对括号。

    在这里插入图片描述

    题目1:广义表 (a,(a,b),d,e, ((i,j),k) ) 的长度是( ),深度是( )
    其长度为5、深度为3、为什么呢

    长度的求法为最大括号中的逗号数加1
    即为:
    a 后面的逗号,
    (a,b) 后面的逗号,
    d 后面的逗号,
    e 后面的逗号,((i,j),k) 前面的逗号,
    总计有四个,那么广义表的长度是4+1=5;

    深度的求法为上面每个元素的括号匹配数加1的最大值
    a为0+1=1;
    (a,b)为1+1=2;
    d,e类似a;
    ==((i,j),k)==为2+1=3;
    故深度为3。
    原文:https://blog.csdn.net/w_k_l/article/details/78983957

    在这里插入图片描述

    广义表三个重要结论
    在这里插入图片描述

    取表头GetHead(LS):取出表头为非空广义表的第一个元素,它可以是一个单原子,也可以是一个子表

    取表尾GetTail(LS):取出的表尾为除去表头之外,由其余元素构成的表。即表尾一定是一个广义表
    在这里插入图片描述

    已知广义表: A=(a,b), B=(A,A), C=(a,(b,A),B), 求下列运算的结果:

    tail(head(tail©)) =( )

    head() 返回列表的第一个元素;

    tail() 返回列表的删去第一个元素之后的剩余列表;

    所以,

    tail©=((b,A),B);

    head(tail©)=head( ((b,A),B) )=(b,A)

    tail (head(tail©) )=tail( (b,A) )=(A)

    注意,head返回的是元素 (去掉最外层括号) 此元素可以是原子也可能是子表,tail返回的是表(保留最外层括号)。

    广义表( )和 (( )) 不同。前者为空表,长度n = O; 后者长度 n = 1, 可分解得到其表头、 表尾均为空表()

    第四章小结

    1. 串是内容受限的线性表,它限定了表中的元素为字符
    2. 多维数组可以看成是线性表的推广,其特点是结构中的元素本身可以是具有某种结构的数据,但属于用一数据类型
    3. 广义表是另一种线性表的推广形式,表中的元素可以是称为原子的单个元素,也可以是一个子表,所以线性表可以看成广义表的特例

    在这里插入图片描述

    第四章习题

    (1)串是一种特殊的线性表,其特殊性体现在( )。

    A.可以顺序存储 B.数据元素是一个字符

    C.可以链式存储 D.数据元素可以是多个字符若

    答案:B

    串是内容受限的线性表,表中元素只能存字符

    (2)串下面关于串的的叙述中,( )是不正确的?

    A.串是字符的有限序列 B.空串是由空格构成的串

    C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储

    答案:B

    解释:空格常常是串的字符集合中的一个元素,有一个或多个空格组成的串成为空格串,零个字符的串成为空串,其长度为零。

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

    A.012345678999 B.012121111212 C.011234223456 D.0123012322345

    答案:C

    (4)串“ababaabab”的nextval为( )。

    A.010104101 B.010102101 C.010100011 D.010101011

    答案:A

    (5)串的长度是指( )。

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

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

    答案:B

    解释:串中字符的数目称为串的长度。

    (6)假设以行序为主序存储二维数组A=array[1…100,1…100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=( )。

    A.808 B.818 C.1010 D.1020

    答案:B

    解释:以行序为主,则LOC[5,5]=[(5-1)*100+(5-1)]*2+10=818。

    (7)设有数组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。

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

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

    答案:C

    (9)若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1…(n(n+1))/2]中,则在B中确定aij(i<j)的位置k的关系为( )。

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

    答案:B

    (10)二维数组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。故选B。

    (11)设二维数组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.jm+i-1

    答案:A

    解释:特殊值法。取i=j=1,易知A[1,1]的的下标为1,四个选项中仅有A选项能确定的值为1,故选A。

    (12)数组A[0…4,-1…-3,5…7]中含有元素的个数( )。

    A.55 B.45 C.36 D.16

    答案:B

    解释:共有533=45个元素。

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

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

    答案:D

    解释:Tail(A)=(b,(c,d),(e,(f,g)));Tail(Tail(A))=( (c,d),(e,(f,g))); Head(Tail(Tail(A)))= (c,d);Tail(Head(Tail(Tail(A))))=(d);Head(Tail(Head(Tail(Tail(A)))))=d。

    (14)广义表((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))的表尾为空表( )。

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

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

    答案:C

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

    展开全文
  • 欢迎下载 欢迎下载 PAGE # 第五章数组和广义表习题 习题 一选择题 1假设以行序为主序存储二维数组 A[1 100,1 100] 设每个数据元素占两个存储单 元基地址为 10则 LOC(A[5 5])=( ) 808 B. 818 C. 1010 D. 1020 2同一...
  • 第五章数组和广义表习题 习 题 一选择题 1 假设以行序为主序存储二维数组 A[1 100,1 100] 设每个数据元素占两个存储单 元基地址为 10 则 LOC(A[55])=( ) A. 808 B. 818 C. 1010 D. 1020 2 同一数组中的元素 ( ) A. ...
  • 最近在复习数据结构,所以想把平时上课做的习题做个总结,如果大家有遇到这方面的问题就可以参考一下了,废话不多说,直接开始吧。 1、单选题 稀疏矩阵一般的压缩存储方法有两种,即( D) A. 二维数组和三维数组 B....
  • ===Tips:点击上方蓝字 关注并查看...3、在多维数组中,数据元素的存放地址可以直接通过地址计算公式算出,所以多维数组是一种随机存取结构。4、数组元素a[0..2][0..3]的实际地址上2000,元素长度是4,则LOC[1,2]...
  • ===Tips:点击上方蓝字 关注并查看...3、在多维数组中,数据元素的存放地址可以直接通过地址计算公式算出,所以多维数组是一种随机存取结构。4、数组元素a[0..2][0..3]的实际地址上2000,元素长度是4,则LOC[1,2]...
  • ===Tips:点击上方蓝字 关注并查看历史消息===1、在一个m维数组中,( D )恰好有m个直接前驱m个直接后继。A.开始结点B.总终端结点C.边界结点D.内部结点2、对下述矩阵进行压缩存储后,失去随机存取功能是( D )。...
  • ===Tips:点击上方蓝字 关注并查看历史消息===1、在一个m维数组中,( D )恰好有m个直接前驱m个直接后继。A.开始结点B.总终端结点C.边界结点D.内部结点2、对下述矩阵进行压缩存储后,失去随机存取功能是( D )。...
  • 第5章 数组和广义表 ——《数据结构题集》-严蔚敏.吴伟民版 源码使用说明链接☛☛☛《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合辑链接☛☛☛《数据结构》课本源码合辑 ...
  • 目录一、串二、KMP算法三、矩阵四、广义表五、作业习题 本系列博客为《数据结构》(C语言版)的学习笔记(上课笔记),仅用于学习交流自我复习 数据结构合集链接: 《数据结构》C语言版(严蔚敏版) 全书知识...
  • 第5章 数组和广义表 -数组的顺序存储结构 ——《数据结构》-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合辑 链接☛☛☛ 《数据...
  • 1.写一个算法,统计在输入字符串中我各个不同字符出现的频度(字符串中的合法字符为A~Z这26个字母0~9这10个数字)。 #include <iostream> #include <string> using namespace std; void statistic...
  • 第5章 数组和广义表 -广义表(头尾链表存储表示) ——《数据结构》-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合辑 链接☛☛☛ ...

空空如也

空空如也

1 2 3 4 5
收藏数 83
精华内容 33
关键字:

数据结构数组和广义表习题

数据结构 订阅