第8章 数组和广义表
数据结构答案(清华大学出版)

若是N维数组,其中任一元素的地址该如何计算? 若是 维数组,其中任一元素的地址该如何计算? 维数组 低维优先的地址计算公式,该式称为n维数组的映像函数: 低维优先的地址计算公式,该式称为n维数组的映像函数: 优先的地址计算公式
n
0)+ Loc(j1,j2,…jn)=LOC(0,0, 0)+i =1 j )=LOC(0,0,…0)
a11 a12 … a1n ^
… …
am1 am2 … amn ^
^ 注:数组的运算参见下一节实例(稀疏矩阵的转置) 数组的运算参见下一节实例(稀疏矩阵的转置)
13
5.3 矩阵的压缩存储
讨论: 讨论: 1. 什么是压缩存储? 什么是压缩存储? 若多个数据元素的值都相同 则只分配一个元素值的存储空间, 值都相同, 若多个数据元素的值都相同,则只分配一个元素值的存储空间, 且零元素不占存储空间。 且零元素不占存储空间。 2. 所有二维数组(矩阵)都能压缩吗? 所有二维数组(矩阵)都能压缩吗? 未必,要看矩阵是否具备以上压缩条件。 未必,要看矩阵是否具备以上压缩条件。 3. 什么样的矩阵具备以上压缩条件? 什么样的矩阵具备以上压缩条件? 一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩 一些特殊矩阵, 对称矩阵,对角矩阵,三角矩阵, 阵等。 阵等。 4. 什么叫稀疏矩阵? 什么叫稀疏矩阵 稀疏矩阵? 矩阵中非零元素的个数较少(一般小于5% 5%) 矩阵中非零元素的个数较少(一般小于5%) 重点介绍稀疏矩阵的压缩和相应的操作。 重点介绍稀疏矩阵的压缩和相应的操作。
8
无论规定行优先或列优先, 无论规定行优先或列优先,只要知道以下三要素便可随时求出 任一元素的地址(这样数组中的任一元素便可以随机存取! 任一元素的地址(这样数组中的任一元素便可以随机存取!): ①开始结点的存放地址(即基地址) 开始结点的存放地址(即基地址) 维数和每维的上、下界; ②维数和每维的上、下界; ac1,c2 … ac1,d2 ③每个数组元素所占用的单元数 Amn= … aij … ad1,c2 … ad1,d2 则行优先存储时的地址公式为: 行优先存储时的地址公式为: 存储时的地址公式为 LOC(aij)=LOC(ac1,c2)+[(i-c1)*(d2-c2+1)+j-c2)]*L , aij之前的 数组基址 a 本行前面的
数据结构各章概要

数据结构各章概要数据结构是计算机科学中非常重要的一个学科,其主要研究各种数据的组织方式和操作方法。
善于运用合适的数据结构可以提高算法的效率,并优化程序的性能。
本文将对数据结构的各个章节进行概要介绍,帮助读者了解不同章节的主要内容和应用。
第一章:引论在引论章节,我们将引入数据结构的基本概念和术语,例如什么是数据、数据项、数据对象等等。
同时,还将介绍数据结构的分类和基本操作,如搜索、遍历、插入、删除和排序。
这些基础知识是后续章节的基础。
第二章:线性表线性表是数据结构中最简单、最基本的一种结构。
其特点是数据元素之间的前驱和后继关系非常明确。
线性表可以用数组和链表两种方式实现。
在本章节中,我们将分别介绍顺序表和链表的实现原理、插入、删除、合并以及应用场景。
第三章:栈和队列栈和队列是两种特殊的线性表结构,它们对数据的访问具有限制性。
栈具有“先进后出”的特点,而队列则具有“先进先出”的特点。
在本章节中,我们将介绍栈和队列的实现方式以及常见的应用场景,如递归、表达式求值、广度优先搜索等。
第四章:串串是由零个或多个字符组成的有限序列,其长度可以为零。
在本章节中,我们将介绍串的定义和操作,包括字符串的模式匹配、模式识别和编辑操作。
串的相关算法在文本处理、计算机网络等领域具有广泛的应用。
第五章:数组和广义表数组是一种在内存中以连续方式存储的数据结构,它具有高效的随机访问特性。
广义表是线性表的一种扩展,可以包含表结构、原子结构以及其他广义表。
本章节将介绍数组和广义表的定义、操作和应用。
第六章:树树是一种非线性的数据结构,具有分层次、递归和层次遍历等特点。
在本章节中,我们将介绍树的基本概念、二叉树、树的遍历算法、平衡树以及树的应用,如编译器中的语法树、文件系统的目录结构等。
第七章:图图是一种复杂的非线性数据结构,由顶点集合和边集合组成。
在本章节中,我们将介绍图的各种表示方式,图的遍历算法、最短路径算法以及常用的图算法,如最小生成树算法和拓扑排序。
数据结构串、数组和广义表知识点总结

数据结构串、数组和广义表知识点总结
数据结构是计算机科学中研究数据如何组织、存储、管理和操作的学科。
三个常见的数据结构串、数组和广义表都是用于存储和操作数据的。
1. 串:
- 串是由0个或多个字符组成的有限序列。
它是一维数组的特例。
- 串的操作包括插入、删除、修改和查找等常见操作。
- 串可以通过数组、链表或动态分配的内存来实现。
2. 数组:
- 数组是一种线性数据结构,它由一组连续的内存空间组成,
存储相同类型的数据。
- 数组的操作包括插入、删除、修改和查找等常见操作。
- 数组的访问时间复杂度为O(1),但插入和删除的时间复杂度
较高。
3. 广义表:
- 广义表是由若干元素组成的有序集合,每个元素可以是原子
或者是一个广义表。
- 广义表可以通过链表来实现,每个节点包含两个指针,一个
指向元素,一个指向下一个节点。
- 广义表的操作包括插入、删除、修改和查找等常见操作。
- 广义表可以表示任意层次的嵌套结构,具有灵活性和扩展性。
总结:
- 串、数组和广义表都是常见的数据结构,用于存储和操作数据。
- 串是字符的有限序列,可以通过数组或链表来实现。
- 数组是一维线性数据结构,存储相同类型的数据,具有常数时间复杂度的访问操作。
- 广义表是由元素组成的有序集合,可以通过链表来实现,能够表示任意层次的嵌套结构。
数组广义表

数组广义表数组广义表是一种数据结构,用于表示多层次的数据组织关系。
它可以看作是一种多叉树的扩展形式,其中每个节点可以有任意多个子节点。
数组广义表在计算机科学中具有重要的应用价值,特别是在数据库管理和树结构算法中。
一、数组广义表的定义和特点数组广义表由若干个元素组成,每个元素可以是一个原子元素,也可以是一个数组广义表。
这种嵌套的结构使得数组广义表可以表示复杂的数据关系。
数组广义表通过使用方括号和逗号来表示各个元素之间的层次关系。
例如,[1, [2,3], 4]表示一个包含三个元素的数组广义表,其中第一个元素是1,第二个元素是一个包含两个元素的数组广义表,其第一个元素是2,第二个元素是3,第三个元素是4。
数组广义表具有以下特点:1. 多层次结构:数组广义表可以表示多个层次的数据组织关系,使得数据的嵌套和层次化处理成为可能。
2. 可变长度:数组广义表的每个节点可以包含任意多个子节点,使得数据的组织形式更加灵活。
3. 多用途性:数组广义表既可以表示简单的数据结构,也可以表示复杂的数据关系,适用于各种不同的应用场景。
二、数组广义表的应用1. 数据库管理:数组广义表可以用于表示和管理数据库中的复杂数据结构,如树形结构、图形结构等。
通过使用数组广义表,可以方便地对数据库中的数据进行增、删、改、查等操作。
2. 树结构算法:数组广义表可以作为树结构的一种扩展形式,用于表示和处理树形数据结构。
通过使用数组广义表,可以简化树结构的操作和管理,提高算法的效率。
3. 文件系统:数组广义表可以用于表示和管理文件系统中的目录结构。
通过使用数组广义表,可以方便地对文件和目录进行组织和管理,实现快速的文件查找和访问。
4. 网络路由:数组广义表可以用于表示和管理网络中的路由表。
通过使用数组广义表,可以方便地对网络路由进行组织和管理,实现高效的数据传输和路由选择。
5. 图形图像处理:数组广义表可以用于表示和处理图形图像中的复杂结构,如图形对象、图像分割等。
数据结构(数组和广义表)习题与答案

1、以行序优先顺序存储数组A[5][5];假定A[0][0]的地址为1000, 每个元素占4个字节,下标变量A[4][3]的地址是____。
A.1069B.1092C.1023D.1046正确答案:B2、数组a[1..6][1..5] (无0行0列)以列序优先顺序存储,第一个元素a[1][1]的地址为1000,每个元素占2个存储单元,则a[3][4]的地址是____。
A.1040B.1026C.1046D.1038正确答案:A3、设有一个5行4列的矩阵A,采用行序优先存储方式,A[0][0]为第一个元素,其存储地址为1000,A[2][2]的地址为1040,则A[3][0]的地址为_________。
A.1048B.1024C.1096D.1060正确答案:A4、设有一个10行10列的矩阵A,采用行序优先存储方式,存储全部数据需要400个字节的空间。
如果A[0][0]为第一个元素,其存储地址为1000,则A[3][6]的地址为_________。
A.1036B.1144C.1014D.10565、设有一个10行10列的矩阵A,采用行序优先存储方式。
如果A[0][0]为第一个元素,其存储地址为1000,A[2][3]的存储地址为1069,则存储一个元素需要的单元数是_________。
A.4B.1C.2D.3正确答案:D6、不能够对数据元素进行随机访问的物理结构是_________。
A.三元组顺序表B.对称矩阵的压缩存储C.三对角矩阵的压缩存储D.数组的顺序存储正确答案:A7、对特殊矩阵采用压缩存储的目的主要是_________。
A.表达变得简单B.去掉矩阵中的多余元素C.对矩阵元素的存储变得简单D.减少不必要的存储空间正确答案:D8、对n*n的对称矩阵进行压缩存储,需要保存的数据元素的个数是_________。
A.nB.n(n+1)/2C.n2D.n(n+1)9、设10*10的对称矩阵下三角保存SA[1..55]中,其中A[1][1]保存在SA[1]中,A[5][3] 保存在SA[k]中,这里k等于_________。
数据结构试题答案

第一章概论一、选择题1、研究数据结构就是研究(D )。
A. 数据的逻辑结构B. 数据的存储结构C. 数据的逻辑结构和存储结构D. 数据的逻辑结构、存储结构及其基本操作(研究非数值计算的程序设计问题中,计算机操作对象以及他们之间的关系和操作)2、算法分析的两个主要方面是( A )。
A. 空间复杂度和时间复杂度B. 正确性和简单性C. 可读性和文档性D. 数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。
(线性结构就是:在非空有限集合中,存在为一个被称为第一个的数据元素和最后一个元素,有除了第一个元素,集合中每一个元素均只有一个前驱,除了最后一个元素有唯一后继)(链表、栈、队列、数组、串)A. 图B. 树C. 广义表(线性表的推广)D. 栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B )等5个特性。
A. 可执行性、可移植性和可扩充性B. 可执行性、有穷性和确定性C. 确定性、有穷性和稳定性D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。
for(i=0;i<m;i++)for(j=0;j<n;j++)a[i][j]=i*j;A. O(m2)B. O(n2)C. O(m*n)D. O(m+n)6、算法是(D )。
为了解决某一问题而规定的一个有限长的操作序列A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示(C )。
A. O(n)B. O(nlog2n)C. O(n2)D. O(log2n)8、下面程序段的时间复杂度为( C )。
i=1;while(i<=n)i=i*3;A. O(n)B. O(3n)C. O(log3n)D. O(n3)9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的(B )和运算等的学科。
数据结构数组与广义表知识点总结
数据结构数组与广义表知识点总结数组是一种线性数据结构,可以存储多个相同类型的元素。
它的特点是元素的大小固定,并且在内存中是连续存储的。
数组的访问方式是通过下标来访问,下标从0开始。
数组可以在编程中应用于各种情况,比如存储一组数字、一组字符串等。
广义表是一种扩展的线性数据结构,可以存储不同类型的元素。
它由元素和表构成,其中表可以是空表、原子或子表。
广义表可以递归定义,即子表可以包含更多的子表。
广义表的访问方式是通过递归来访问,可以对表的元素进行遍历和操作。
在数据结构中,数组和广义表都有自己的特点和用途,下面对它们的知识点进行总结:1.数组的特点及应用:-数组是一种线性数据结构,可以存储多个相同类型的元素。
-数组的内存分配是连续的,可以通过下标来访问元素。
-数组的大小固定,一旦定义后不能改变。
-数组的访问速度快,可以通过下标直接访问元素。
-数组适合用于存储一组相同类型的数据,比如一组数字、一组字符串等。
-数组的应用场景包括但不限于:排序算法、查找算法、图像处理、矩阵运算等。
2.数组的操作和常用算法:-初始化:可以直接赋值或使用循环初始化数组。
-访问元素:通过下标访问元素,下标从0开始。
-修改元素:直接通过下标修改元素的值。
-插入元素:需要移动插入位置之后的元素。
-删除元素:需要移动删除位置之后的元素。
-查找元素:可以使用线性查找或二分查找等算法。
-排序算法:比如冒泡排序、选择排序、插入排序等。
-数组还有一些常用的属性和方法,比如长度、最大值、最小值等。
3.广义表的特点及应用:-广义表是一种扩展的线性数据结构,可以存储不同类型的元素。
-广义表由元素和表构成,表可以是空表、原子或子表。
-广义表可以递归定义,即子表可以包含更多的子表。
-广义表的访问方式是通过递归遍历和操作。
-广义表适合存储一组不同类型的数据,比如存储学生信息、函数调用栈等。
-广义表的应用场景包括但不限于:函数式编程、树的表示、图的表示等。
数据结构-串、数组和广义表-实验
数据结构-串、数组和⼴义表-实验实验四串、数组和⼴义表⼀、⽬的和要求1. 掌握串、数组和⼴义表的逻辑结构定义和各种存储结构的实现。
2. 熟练运⽤串、数组和⼴义表的的各种存储结构以及各种基本操作。
3. 根据实际问题的需要,选择串、数组和⼴义表适合的存储结构解决问题。
⼆、实验环境1.WindowsXP操作系统;2.DEV C++、Visual C++6.0语⾔环境;三、实验内容(⼀)验证性实验(第1、3题⼀组;第2、4题为另⼀组,每个同学选择⼀组完成。
每个⼩题⼀个⽂件夹,所有⽂件夹打在⼀个包中,⽂件名:“学号”+“姓名”,例如: 13131000张三.rar 。
提交码为2014DS4,截⽌时间:2014年12⽉30⽇12:00时。
)1.KMP算法的验证(1)设计测试⽤例,对教材介绍的模式匹配算法进⾏验证,把运⾏结果截屏保存。
(2)修改KMP算法中求失效值的函数,解决原算法中的⽆效匹配问题,提⾼匹配效率。
2.三元组顺序表的验证(1)设计测试⽤例,对三元组顺序表进⾏验证,把运⾏结果截屏保存。
(2)重载加法运算符,实现两个矩阵的加法运算。
3.⼗字链表的验证(1)设计测试⽤例,对⼗字链表进⾏验证,把运⾏结果截屏保存。
(2)增加成员函数Transpose(),实现矩阵的转置运算。
4.⼴义链表的验证(1)设计测试⽤例,对⼴义链表进⾏验证,把运⾏结果截屏保存。
(2)增加成员函数reversal(),实现⼴义表的转置运算。
(⼆)设计性实验(⼩组完成)5.串的链式存储参照教材中串的顺序存储的类String,设计并实现串的链式存储的类LinkString(简称链串)。
在链串中字符串的信息存储在⼀个带头结点的单链表中。
如图1所⽰是字符串“ABCDEF”的链式存储结构⽰意图。
基本要求:完成链串的定义(函数成员与顺序存储的类String类似)和实现,并完成串的相关函数在串类上的实现。
选做内容:为了提⾼存储密度,考虑在链表的⼀个结点中存放多个字符(例如,放4个字符)。
多维数组与广义表
…
假设数组各维的下界是1,按“行优先顺序”存储,假
设每个元素占用d个存储单元。
二维数组Amn, aij的地址计算函数为:
LOC(aij)=LOC(a11)+[(i-1)*n+j-1]*d
三维数组Amnp,aijk的地址计算函数为:
LOC(aijk)=LOC(a111)+[(i-1)*n*p+(j-1)*p +(k-1)]*d
5.2 矩阵的压缩存储
在编程时,简单而又自然的方法,是将矩阵描述为
一个二维数组。矩阵在这种存储表示之下,可以对 其元素进行随机存取。
但是在一些特殊矩阵中,非零元素呈某种规律分布
或者矩阵中有大量的零元素,如果仍用二维数组存, 会造成极大的浪费,尤其是处理高阶矩阵的时候。
为了节省存储空间, 我们可以对这类矩阵进行压缩
最基本的原理
Ai1…in的起始地 址 第一个元素 该元素前面 单位 = 〸 ╳ 的起始地址 的元素个数 长度
程序员试题
2006-1
对于二维数组a[0…4,1…5],设每个元素占1个存储单
元,且以行为主序存储,则元素a[2,1]相对于数组空 间起始地址的偏移量是___(40)___。 (40)A.5 B.10 C.15 D.25
2001
二维数组 X 的行下标范围是0~5,列下标范围是1~8,每
个数组元素占六个字节,则该数组的体积为__(6)__个字节, 若已知 X 的最后一个元素的起始字节地址为382,则 X 的 首地址(即第一个元素的起始字节地址)为 __(7)__,记为 Xd 。若按行存储,则 X{1,5] 的起始地址是 __(8)__, 结束字节 地址是 __(9)__。若按列存储,则 X[4,8]的起始字节地址为 __(10)__。 (6): A.210 B.240 C.288 D.294 (7): A.0 B.6 C.94 D.100 (8): A.Xd+24 B.Xd+72 C.Xd+78 D.Xd+144 (6)C (7)D (8)B (9)B (10)D (9): A.Xd+29 B.Xd+77 C.Xd+83
(完整word版)数据结构(c语言版)课后习题答案完整版资料
第1章绪论5.选择题:CCBDCA6.试分析下面各程序段的时间复杂度。
(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n—1+n—2+……+1= n(n—1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题babadbcabdcddac2.算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。
ElemType Max (LinkList L ){if(L—〉next==NULL) return NULL;pmax=L-〉next;//假定第一个结点中数据具有最大值p=L-〉next—>next;while(p != NULL ){//如果下一个结点存在if(p->data > pmax—>data) pmax=p;p=p->next;}return pmax-〉data;(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间.void inverse(LinkList &L) {// 逆置带头结点的单链表Lp=L-〉next;L->next=NULL;while (p){q=p—>next;// q指向*p的后继p->next=L—>next;L—>next=p; // *p插入在头结点之后p = q;}}(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素.[题目分析]在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i个元素,第i+1至第n个元素要依次前移)。
本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。
因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章数组和广义表[能力要求](1)计算机基础知识:掌握线性表的概念以及顺序表和链表的基本操作。
(2)分析问题:针对具体的问题,要能够运用线性表去进行分析,逐步找到解决问题的方法。
(3)具有概念化和抽象化能力:针对具体的应用和实际的问题,能够运用线性表对问题进行抽象,提取它的逻辑结构和存储结构。
(4)发现问题和表述问题:在具体的工程中,能够发现工程中涉及到顺序表和链表的问题,并能够明确表述。
(5)建模:在具体的工程中,能够使用线性表进行建模,设计合理的数据结构和相应的算法。
(6)解决方法和建议:在具体工程应用中,发现了关于线性表的问题,要能够解决问题,并提出合理的建议。
(7)定义功能、概念和结构:使用线性表这种逻辑结构处理一些具体问题,实现系统的功能。
(8)设计过程的分段与方法:采取不同的阶段去设计(概念设计、详细设计)一个具体的线性表的应用项目。
(9)软件实现过程:了解系统中各个模块中的关于线性表的设计;讨论算法(数据结构、控制流程、数据流程);使用编程语言实施底层设计(编程)。
8.1知识点:数组的定义和顺序存储一、选择题1①常对数组进行的两种基本操作是()。
A.建立与删除 B.索引和修改C.对数据元素的存取和修改D.查找与索引2①下面说法中,不正确的是()。
A.数组是一种线性结构B.数组是一种定长的线性表结构C.除了插入与删除操作外,数组的基本操作还有存取、修改、检索和排序等D.数组的基本操作有存取、修改、检索和排序等,没有插入与删除操作3②数组A中,每个元素的长度为3个字节,行下标I从1到8,列下标J从1到10,从首地址SA开始连续存放在存储器内,该数组占用的字节数为()。
A.80 B.100 C.240 D.2704②在二维数组A[9][10]中,每一个数组元素A[i][j] 占用3个存储空间,所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储空间是()。
A. 80 B.100 C.240 D.2705②设有一个n*n的对称矩阵A,将其下三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么第I行的对角元素A[I][I]存放于B中()处。
A.(I+3)*I/2 B.(I+1)*I/2C.(2n-I+1)*I/2 D.(2n-I-1)*I/26②设有一个n阶的三对角矩阵A中,任意非零元素A[i][j]的行下标必须满足0≤i≤n-1,而列下标必须满足()。
A.0≤j≤n-1 B.I-1≤j≤I+1C.0≤j≤I D.I≤j≤n-17③一个n*n的对称矩阵,如果以行或列为主序放入内存,则其容量为()。
A.n*n B.n*n/2 C.(n+1)*n/2 D.(n+1)*(n+1)/28②若将n阶上三角矩阵A按列优先顺序压缩存放在一维数组B[1..n(n+1)/2]中,第一个非零元素a[1][1]存于B[0]中,则应存放到B[k]中的非零元素a[i][j](1≤i≤n, 1≤j≤i)的下标i、j与k的对应关系是()。
A.i(i+1)/2+j B.i(i-1)/2+j-1 C.j(j+1)/2+i D.j(j-1)/2+i-1 9②设有一个10 阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a[1][1]为第一元素,其存储地址为1,每个元素占一个地址空间,则a[8][5]的地址为()。
【燕山大学 2001】A. 13B. 33C. 18D. 4010②数组A[6][7]的每个元素占五个字节,将其“按列优先”存储在起始地址为1000的内存单元中,则元素A[5][5]的地址是()。
【南京理工大学 2001】A. 1175B. 1180C. 1205D. 1210二、填空题1①数组是相同_________的元素组成的集合,其中的每一个数组元素所占用的存储空间相等。
2①一维数组的长度是指_________的空间大小,而不是指数组中已存放元素个数。
3①一维数组的逻辑结构是_____________,存储结构是_____________。
4①在程序运行过程中可以扩充的数组是__________分配的数组,这种数组在声明它时必须使用数组指针。
5①对于二维数组或多维数组,分为按_____________和按_____________两种不同的存储方式存储。
6②二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元,且A[0][0]的地址是200,则A[6][12]的地址是__________。
7②有一个10阶对称矩阵A,采用以行为主序的压缩存储方式,A[0][0]的地址为1,则A[8][5]的地址是__________。
8②将一个n阶三对角矩阵A的三条对角线上的元素按行压缩存放于一个一维数组B 中,A[0][0]存放于B[0]中。
对于任意给定数组元素B[K],它应是A中第_________行的元素。
9①上三角矩阵压缩的下标对应关系为_____ __。
【福州大学 1998】【南京大学 1999】10②设有二维数组A[10][20],其每个元素占两个字节,第一个元素的存储地址为100,若按列优先顺序存储,则元素A[6][6]存储地址为_______。
【北京工商大学 2001】11② n阶对称矩阵a满足a[i][j]=a[j][i],i、j=1..n,用一维数组t存储时,t的长度为________,当i=j,a[i][j]=t[ ],i>j,a[i][j]=t[ ],i<j,a[i][j]=t[ ]。
【青岛大学 2001】三、判断题()1①数组中存储的数据可以是任意类型的任何数据。
()2①对角矩阵的特点是非零元素只出现在矩阵的两条对角线上。
()3①用一维数组表示矩阵,可以简化对矩阵的存取操作。
()4②从逻辑结构上看,n维数组的每个元素均属于n个向量。
【东南大学 2001】【中山大学 1994】()5①数组是同类型值的集合。
【上海海运学院 1999】()6①数组可看成线性结构的一种推广,因此与线性表一样,可以对它进行插入,删除等操作。
【上海交通大学 1998】四、简答题1③设有一个二维数组A[m][n],假设A[0][0]存放位置在644,A[2][2]存放位置在676,每个元素占一个空间,问A[3][3]存放在什么位置?2③设A[10][10]是一个10*10对称矩阵,采用压缩存储方式存储其下三角部分,已知每个元素占用两个存储单元,其第一个元素A[0][0]的存储位置在1000,求下面问题的计算过程及结果:(1)给出A[4][5]的存储位置。
(2)给出存储位置为1080的元素下标。
1④假定数组A[n]的n个元素中有多个零元素,编写算法将A中所有的非零元素依次移到A的前端。
2④设二维数组a[1..m, 1..n] 含有m*n 个整数。
(1)写出算法(Pascal 过程或C 函数):判断a 中所有元素是否互不相同?输出相关信息(yes/no);(2)试分析算法的时间复杂度。
【华中理工大学 1999】8.2知识点:特殊数组的压缩存储一、选择题1①稀疏矩阵一般的压缩存储方法有两种,即()。
A.二维数组和三维数组B.三元组和散列C.三元组和十字链表 D.散列和十字链表2①对稀疏矩阵进行压缩存储目的是()。
【北京工商大学 2001】A.便于进行矩阵运算 B.便于输入和输出C.节省存储空间 D.降低运算的时间复杂度3②有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是()。
【南京理工大学 1999】A. 60 B. 66 C.18000 D. 33二、填空题1①所谓稀疏矩阵指的是_______。
【厦门大学 2001】2②用十字链表表示一个有k个非零元素的m*n的稀疏矩阵,则其总的结点数为_______。
三、判断题()1①稀疏矩阵在用三元组表示法时,可节省空间,但对矩阵的操作会增加算法的难度及耗费更多的时间。
()2①稀疏矩阵压缩存储后,必会失去随机存取功能。
【中科院软件所 1997】()3①一个稀疏矩阵Am*n 采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把m 和n 的值互换,则就完成了Am*n 的转置运算。
【西安交通大学 1996】1②利用三元组存储任意稀疏数组时,在什么条件下才能节省存储空间。
【西北工业大学 1998】2③一个稀疏矩阵如图所示,则对应的三元组线性表是什么?其对应的十字链表是什么?图8.1 2题图五、算法题1④设计一个算法,计算一个三元组表表示的稀疏矩阵的对角线元素之和。
2④假设稀疏矩阵A采用三元组表示,编写一个函数计算其转置矩阵B,要求B也用三元组表示。
8.3知识点:广义表的基本概念一、选择题1②设有一个广义表A ((x, (a, b)), (x, (a, b), y)),运算Head (Head (Tail (A)))的执行结果为()。
A. xB. (a, b)C. (x, (a, b))D. A2①设有广义表D=(a,b,D),则其长度为(),深度为()A. 1B.3C.∞D. 53②广义表运算式(Tail((a,B),(c,d)))的操作结果是()A.(c,d)B. c,dC.((c,d))D. d4①对于一组广义表A (), B (a, (b)), C (c, (e, f, g)), D (B, A, C), E (B, D),其中的E是()。
A.线性表B.纯表C.递归表D.再入表5②下列广义表中的线性表是()。
A. E (a, (b, c))B. E (a, E)C. E (a, b)D. E (a, L ())6①广义表((a),a)的表尾为()。
A. aB. bC. (a)D. ((a))7①下面说法不正确的是()。
【南京理工大学 2001】A. 广义表的表头总是一个广义表B. 广义表的表尾总是一个广义表C. 广义表难以用顺序存储结构D. 广义表可以是一个多层次的结构8①广义表(a,(b,c),d,e)的表头为()。
【中山大学 1998】A. aB. a,(b,c)C. (a,(b,c))D. (a)9①设广义表L=((a,b,c)),则L 的长度和深度分别为()。
【武汉大学 2000】A. 1 和1B. 1 和3C. 1 和2D. 2 和310②已知广义表L=((x,y,z),a,(u,t,w)),从L 表中取出原子项t 的运算是()。
【北京邮电大学 1998】A. head(tail(tail(L)))B. tail(head(head(tail(L))))C. head(tail(head(tail(L))))D. head(tail(head(tail(tail(L)))))11②广义表A=(a,b,(c,d),(e,(f,g))),则下面式子的值为()。