5------第三章 数据结构及其运算(二)
目前最完整的数据结构1800题包括完整答案-第三章-栈和队列范文(汇编)

第3章栈和队列一选择题1. 对于栈操作数据的原则是()。
【青岛大学 2001 五、2(2分)】A. 先进先出B. 后进先出C. 后进后出D. 不分顺序2. 在作进栈运算时,应先判别栈是否( ① ),在作退栈运算时应先判别栈是否( ② )。
当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( ③ )。
为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 ( ④ )分别设在这片内存空间的两端,这样,当( ⑤ )时,才产生上溢。
①, ②: A. 空 B. 满 C. 上溢 D. 下溢③: A. n-1 B. n C. n+1 D. n/2④: A. 长度 B. 深度 C. 栈顶 D. 栈底⑤: A. 两个栈的栈顶同时到达栈空间的中心点.B. 其中一个栈的栈顶到达栈空间的中心点.C. 两个栈的栈顶在栈空间的某一位置相遇.D. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.【上海海运学院 1997 二、1(5分)】【上海海运学院 1999 二、1(5分)】3. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。
A. 不确定B. n-i+1C. iD. n-i【中山大学 1999 一、9(1分)】4. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。
A. i-j-1B. i-jC. j-i+1D. 不确定的【武汉大学 2000 二、3】5. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( )。
A. iB. n-iC. n-i+1D. 不确定【南京理工大学 2001 一、1(1.5分)】6. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?()A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 6【北方交通大学 2001 一、3(2分)】7. 设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。
数据结构

malloc函数为动态分配空间;原型为: void * malloc(int size);使用方法一般为:假设你要定义一个名为a的Node类型的指针变量,使用以下语句:Node * a=(Node *)malloc(sizeof(Node));其中(Node *)为强制转换,把返回类型void *转换为Node *,sizeof(Node)为获取Node 类型占据空间的大小,如在我机子上int类型占4字节,sizeof(int)就返回4;使用malloc需要包含#include <malloc.h>学习数据结构有什么用?计算机内的数值运算依靠方程式,而非数值运算(如表、树、图等)则要依靠数据结构。
同样的数据对象,用不同的数据结构来表示,运算效率可能有明显的差异。
程序设计的实质是对实际问题选择一个好的数据结构,加之设计一个好的算法。
而好的算法在很大程度上取决于描述实际问题的数据结构。
程序=数据结构+算法(尼克劳斯.沃尔斯)目标:“数据结构” 课程的教学目标是要求学生学会分析数据对象特征,掌握数据组织方法和计算机的表示方法,以便为应用所涉及的数据选择适当的逻辑结构、存储结构及相应算法,初步掌握算法时间空间分析的技巧,培养良好的程序设计技能。
意义1. 算法和数据结构是计算机科学的两大支柱2.数据结构是程序设计的基础程序=数据结构+算法--图灵奖获得者:Nicklaus Wirth(瑞士)数据结构是设计OS、DBMS、编译等系统程序和各种应用程序的重要基础数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。
术语:数据(Data):是对信息的一种符号表示。
在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
一个数据元素可由若干个数据项组成。
《数据结构》参考教案

13
2、链队列的算法: : 算法一:构造一个空队列 算法二:销毁一个队列 算法三:判队列是否为空: 算法四:入队列 算法五:出队列
3.循环队列的重要算法: 算法一:构造一个空队列 算法二:队列长度 int { QueueLength(SqQueue Q)
return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE; }
(2) 重要算法的实现:
入栈操作 取栈顶元素操作 取栈顶元素与出栈不同之处在于出栈操作改变栈顶指针 top 的位置,而取栈顶元素操作不改 出栈操作 判栈空操作 2. 链栈 一个链栈可由栈顶指针 top 唯一确定,当 top 为 NULL 时,是一个空栈。
12
第9讲
课程名称:数据结构 授 课 总课序 第9次 时 间 第4周 任 课 教 师 备课日期 讲 课 内 容 3.4 节
点
教 学 难 点 与关键
算法时间复杂度的计算
教学内容及板书纲要: 课程概述 对课程性质等课程相关情况进行介绍
第 1 章 绪论 1.1 什么是数据结构 用 3 个引例: 1.图书书目自动检索 2.人机对奕 3.交通灯管理 引出《数据结构》的研究内容 数据结构的基本概念和术语 1.2 数据结构的基本概念和术语 1. 数据 2. 数据元素、数据项 3. 数据对象、数据结构 4. 四类基本结构:集合、线性结构、树形结构、图形结构或网状结构。 5. 数据结构一般包括三方面的内容: 逻辑结构 存储结构(物理结构) 数据的运算 算法的设计取决于选定的数据逻辑结构,而算法的实现依赖于采用的存储结构。 6. 数据的两种存储结构: 顺序存储结构 链式存储结构 1.3 抽象数据类型的表示与实现 类 C 语言 1.4 算法和算法分析 1.4.1 算法 算法的定义 算法具有五个重要特性: 有穷性、确定性、可行性、输入、输出
《数据结构及其应用》笔记含答案 第三章_栈和队列

第3章栈和队列一、填空题1、栈是限定仅在表尾进行插入或删除操作的线性表。
2、栈的修改是按照后进先出的原则进行的。
3、队是一种先进先出的线性表。
4、把队列头尾相接的顺序存储结构称为循环队列。
5、队列也是一种操作受限的线性表,允许插入的一端叫做__队尾___,允许删除的一端叫做__队头__。
二、判断题1、栈和队列的存储,既可以采用顺序存储结构,又可以采用链式存储结构。
(√)2、任何一个递归过程都可以转换成非递归过程。
(√)3、若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列3,2,5,6,4,1。
(√)4、通常使用队列来处理函数的调用。
(╳)5、循环队列通常用指针来实现队列的头尾相接。
(╳)三、单项选择题1、若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在(C)种情况。
A.5,4,3,2,1 B.2,1,5,4,3 C.4,3,1,2,5 D.2,3,5,4,1解释:栈是后进先出的线性表,不难发现C选项中元素1比元素2先出栈,违背了栈的后进先出原则,所以不可能出现C选项所示的情况。
2、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为(C)。
A.i B.n-i C.n-i+1 D.不确定解释:栈是后进先出的线性表,一个栈的入栈序列是1,2,3,…,n,而输出序列的第一个元素为n,说明1,2,3,…,n一次性全部进栈,再进行输出,所以p1=n,p2=n-1,…,pi=n-i+1。
3、数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为(D)。
A.r-f B.(n+f-r)%n C.n+r-f D.(n+r-f)%n解释:对于非循环队列,尾指针和头指针的差值便是队列的长度,而对于循环队列,差值可能为负数,所以需要将差值加上MAXSIZE(本题为n),然后与MAXSIZE(本题为n)求余,即(n+r-f)%n。
数据结构-数据结构题库

第一章绪论一.单项选择题1.数据对象是指______。
A. 描述客观事物且由计算机处理的数值、字符等符号的总称B. 数据的基本单位C. 性质相同的数据元素的集合D. 相互之间存在一种或多种特定关系的数据元素的集合2.在数据结构中,数据的基本单位是_________。
A. 数据项B. 数据类型C. 数据元素D. 数据变量3.数据结构中数据元素之间的逻辑关系被称为______。
A. 数据的存储结构B. 数据的基本操作C. 程序的算法D. 数据的逻辑结构4.在数据结构中,与所使用计算机无关的是数据的_______。
A. 存储结构B. 逻辑和物理结构C. 逻辑结构D. 物理结构5.在链式存储结构中,数据之间的关系是通过________体现的。
A. 数据在内存的相对位置B. 指示数据元素的指针C. 数据的存储地址D. 指针6.在定义ADT时,除数据对象和数据关系外,还需说明_______。
A. 数据元素B. 算法C. 基本操作D. 数据项7.计算算法的时间复杂度是属于一种_______。
A. 事前统计的方法B. 事前分析估算的方法C. 事后统计的方法D. 事后分析估算的方法8.在对算法的时间复杂度进行估计的时候,下列最佳的时间复杂度是_______。
A. n2B. nlognC. nD. logn9.设使用某算法对n个元素进行处理,所需的时间是T(n)=100nlog2n+200n+2000,则该算法的渐近时间复杂度为_______。
A. O(1)B. O(n)C. O(200n)D. O(nlog2n)10.有如下递归函数fact(a),其时间复杂度为_________。
int fact(int a){if(n==0)retrun 1;elsereturn(n*fact(n-1));}A. O(n)B. O(n2)C. O(n3)D. O(n4)11.线性表若采用链式存储结构时,要求内存中可用存储单元的地址_______。
数据结构(C语言版)(第2版)

构
5.5遍历二叉
树和线索二叉
树
1
4
5.7哈夫曼树
及其应用
2
5
5.8案例分析
与实现
5.9小结
习题
6.1图的定义和基本
术语
6.3图的类型定义
6.2案例引入
6.4图的存储结构
3
6.7案例分析
与实现
1
6.5图的遍历
4
6.8小结
2
6.6图的应用
5
习题
7.1查找的基本概念
7.2线性表的查找
7.3树表的查找
7.4散列表的查找
7.5小结
习题
8.1基本概念和排序
方法概述
8.3交换排序
8.2插入排序
8.4选择排序
3
8.7外部排序
1
8.5归并排序
4
8.8小结
2
8.6基数排序
5
习题
作者介绍
这是《数据结构(C语言版)(第2版)》的读书笔记模板,暂无该书作者的介绍。
感谢观看
用来学习,适合已经完全学会的人过来查漏补缺。
没有老师的同学可以去b站听听青岛大学王卓老师的课,教材是这本…。
严谨的教科书,和习题及上级指导一起阅读能学到很多东西,花了28个小时阅读,不过对于较难的一些算法
比如图算法的弗洛伊德算法,排序种的基数排序,二叉树中的avl树等还是一知半解,可能再花2个28小时能有突
数据结构(C语言版)(第2
版)
读书笔记模板
目录
01
思维导图
02
内容摘要
03
读书笔记
04
精彩摘录
05
目录分析
06
基本数据结构及其运算
基本数据结构及其运算1.数组:数组是一种线性数据结构,可以存储相同类型的一组元素。
数组的特点是连续存储,可以通过索引快速访问元素。
数组的常用运算包括访问指定索引的元素、插入和删除元素等。
2.链表:链表也是一种线性数据结构,但不同于数组的连续存储,链表是由一系列节点组成的,每个节点包含元素和指向下一个节点的指针。
链表的常用运算包括在指定位置插入和删除节点、遍历链表等。
3. 栈:栈是一种后进先出(LIFO)的数据结构,用于存储和管理函数调用、表达式求值等需要按照特定顺序操作的场景。
栈的基本运算包括入栈(push)和出栈(pop)。
4. 队列:队列是一种先进先出(FIFO)的数据结构,用于存储和管理需要按照特定顺序处理的元素。
队列的基本运算包括入队列(enqueue)和出队列(dequeue)。
5.树:树是一种非线性数据结构,由一组节点和边组成,用于表示层次关系。
树的根节点是唯一的,每个非叶子节点可以有多个子节点。
树的常用运算包括遍历树(前序、中序、后序遍历)、特定节点等。
除了上述基本的数据结构,还有其它常见的数据结构如哈希表、图等。
不同的数据结构适用于不同的应用场景,具有不同的性能特点和运算复杂度。
在进行数据结构的运算时,可以使用不同的算法和技术来提高效率,常见的包括递归、迭代、排序算法、算法等。
此外,还可以使用一些高级数据结构如红黑树、堆等来优化特定的问题。
总结起来,数据结构是计算机科学中非常重要的基础概念,它提供了存储和组织数据的方法。
不同的数据结构适用于不同的应用场景,通过不同的算法和技术可以提高数据结构的运算效率。
数据结构(宁夏大学)智慧树知到课后章节答案2023年下宁夏大学
数据结构(宁夏大学)智慧树知到课后章节答案2023年下宁夏大学宁夏大学第一章测试1.在数据结构中,从逻辑上可以把数据结构分成()。
A:动态结构和静态结构 B:紧凑结构和非紧凑结构 C:线性结构和非线性结构 D:内部结构和外部结构答案:线性结构和非线性结构2.算法分析的两个主要方面是()。
A:时间复杂度和空间复杂度 B:数据复杂性和程序复杂性 C:可读性和文档性 D:正确性和简单性答案:时间复杂度和空间复杂度3.计算机算法必须具备输入、输出和()等5个特性。
A:易读性、稳定性和安全性 B:确定性、有穷性和稳定性 C:可行性、确定性和有穷性 D:可行性、可移植性和可扩充性答案:可行性、确定性和有穷性4.数据结构是研究数据的()以及它们之间的相互关系。
A:物理结构,逻辑结构 B:理想结构,物理结构 C:抽象结构,逻辑结构 D:理想结构,抽象结构答案:物理结构,逻辑结构5.数据结构中,与所使用的计算机无关的是数据的()结构。
A:逻辑 B:物理 C:物理和存储 D:存储答案:逻辑6.组成数据的基本单位是()。
A:数据项 B:数据变量 C:数据元素 D:数据类型答案:数据元素7.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。
A:图型结构 B:线性结构 C:树型结构 D:集合答案:图型结构8.下面程序的时间复杂为()for(i=1,s=0; i<=n; i++) {t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;} A:O(n2) B:O(n3) C:O(n4) D:O(n)答案:O(n2)9.程序段s=i=0;do {i=i+1; s=s+i;}while(i<=n);的时间复杂度为()。
A: O(n2) B:O(n) C:O(n3/2) D:O(nlog2n)答案:O(n)10.算法指的是()A:计算机程序 B:排序算法 C:解决问题的有限运算序列 D:解决问题的计算方法答案:解决问题的有限运算序列11.算法就是程序。
第二章基本数据结构及其运算
用这种方法查找,每次比较都可抛弃子表一半的 元素,查找效率较高 从该例可看出,数据元素在表中的排列顺序对查 找效率有很大的影响
例2、学生情况登记表信息查询 成绩在90分及以上的学生情况登记表
学 号 970156 970157 970158 970159 970160 970161 970162 970163 970164 … 姓 名 性 别 年龄 20 张小明 男 19 李小青 女 19 赵 凯 男 21 李启明 男 18 刘 华 女 19 曾小波 女 18 张 军 男 20 王 伟 男 19 胡 涛 男 … … … 成绩 86 83 70 91 78 90 80 65 95 … 学 号 姓 名 性别 男 女 男 女 年龄 21 19 19 17 成绩 91 90 95 93 970159 李启明 970161 曾小波 970164 胡 970168 梅 涛 玲
数据结构主要研究和讨论三方面问题:
1、数据元素之间的固有逻辑关系,称为数据的逻辑结构 2、数据元素及其关系在计算机中的存储方式,称为数据的 物理结构或存储结构
3、施加在数据结构上的操作,称为数据结构的运算。数据处 理的本质就是对数据结构施加各种运算,常见的运算有:查找、 排序、插入、删除等。
主要目的是提高数据处理的效率:
§2.1.3 数据结构的图形表示
D中的数据元素用中间标有元素值的方框表示, 称为数据结点(结点);R中的关系用一条有向线段 从前件结点指向后件结点。
例:设数据元素的集合为D = {di |1≤ i≤ 7的整数},画 出对应于下列关系所构成的数据结构的图形
①、R1={(d1,d3),(d1,d7),(d4,d5),(d3,d6),(d2,d4)} ②、R2={(di,dj)|i+j=5} ③、R3={(d2,d3)(d3,d1),(d1,d4),(d4,d6),d6,d5),(d5,d7)}
数据结构考试题库含答案
数据结构考试题库含答案数据结构习题集含答案目录目录1选择题2第一章绪论2第二章线性表4第三章栈和队列5第四章串6第五章数组和广义表7第六章树和二叉树7第七章图9第八章查找11第九章排序12简答题15第一章绪论15第二章线性表20第三章栈和队列22第四章串24第五章数组和广义表24第六章树和二叉树26第七章图31第八章查找33第九章排序34编程题36第一章绪论36第二章线性表36第三章栈和队列46第四章串46第五章数组和广义表46第六章树和二叉树46第七章图46第八章查找46第九章排序51选择题第一章绪论1.数据结构这门学科是针对什么问题而产生的?(A)A、针对非数值计算的程序设计问题B、针对数值计算的程序设计问题C、数值计算与非数值计算的问题都针对D、两者都不针对2.数据结构这门学科的研究内容下面选项最准确的是(D)A、研究数据对象和数据之间的关系B、研究数据对象C、研究数据对象和数据的操作D、研究数据对象、数据之间的关系和操作3.某班级的学生成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那么下面关于数据对象、数据元素、数据项描述正确的是(C)A、某班级的学生成绩表是数据元素,90分是数据项B、某班级的学生成绩表是数据对象,90分是数据元素C、某班级的学生成绩表是数据对象,90分是数据项D、某班级的学生成绩表是数据元素,90分是数据元素4.某数据结构是指(A)。
A、数据元素的组织形式B、数据类型C、数据存储结构D、数据定义5.数据在计算机存储器内表示时,物理地址与逻辑地址不相同,称之为(C)。
A、存储结构B、逻辑结构C、链式存储结构D、顺序存储结构6.算法分析的目的是(C)A、找出数据的合理性B、研究算法中的输入和输出关系C、分析算法效率以求改进D、分析算法的易懂性和文档型性7.算法分析的主要方法(A)。
A、空间复杂度和时间复杂度B、正确性和简明性C、可读性和文档性D、数据复杂性和程序复杂性8.计算机内部处理的基本单元是(B)A、数据B、数据元素C、数据项D、数据库9.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要(B)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.4 数组与矩阵
3.4.3 规则矩阵的压缩
a11 a a22 0 下三角矩阵的压缩存储 21 A a31 a32 a33 存储原则: 1)只需要存储左下三角元素, ... ... ... ... an1 an 2 an 3 ... ann 不需要存储右上三角的零 元素。 2)用一个一维数组以行(或列)为主顺序存放 三角矩阵中的所有左下三角元素。 压缩情况:n2个元素只需要n(n+1)/2个元素的存 储空间
3.4 数组与矩阵
3.4.1 数组概述
数组是在程序设计中,为了处理方便,把具有相同类 型的若干变量按有序的形式组织起来的一种形式。这些按 序排列的同类数据元素的集合称为数组。 根据下标的数量可将数组分为一维数组、二维数组及n 维数组。如一维数组a[10],二维数组a[4][5],三维数组 a[3][4][6]。 数学中的矩阵在程序设计语言中用二维数组表示。本节 主要讨论二维数组,多维数组可由二维数组类推而得到。
21 22 31 32 33 n1 n2 n3 11 21 31 21 22 32 31 32 33 n1 n2 n3
11
12
21
22
23
32
33
34
0
...
...
... an 1,n 1 an,n 1
an 1,n 2
an 1,n an,n
3.4 数组与矩阵
3.4.3 规则矩阵的压缩
三对角矩阵的压缩存储
要访问三对角矩阵A的元素aij,分以下两种情况考虑。(以 行为主存储方式) 如果要访问的aij不在3条对角线上(j<i-1或j>i+1),则aij 为0; 如果要访问的aij在3条对角线上(j=i-1或j=i或j=i+1), 则该元素存放在B中,在B中存放的位置计算如下:第i-1 行最后一位非0元素存放的位置为3(i-1)-1,这样第i行第1 个非0元素(此时j=i-1)位置为3(i-1)-1+1=3(i-1),同样 j=i对应的元素位置为3(i-1)+1,j=i+1对应的元素位置为 3(i-1)+2,也就是说第i行第j行存放位置为:3(i-1)-1+ji+2=2i+j-2=2(i-1)+j
Байду номын сангаас
3.4 数组与矩阵
3.4.2 数组的顺序存储结构
二维数组以行为主的顺序存储
二维数组以行为主的顺序存储是指将数组中的元素一 行一行地顺序存储在计算的连续存储空间中,即先存储第 1行,再存储第2行,以此类推;每一行的元素以从左到右 的顺序存储。
a11 a12 a13 a21 a22 a23 a11 a12 a13 a21 a22 a23
3.4 数组与矩阵
3.4.2 数组的顺序存储结构
二维数组以行为主的顺序存储
对于二维数组{aij,1≤i≤m,1≤j≤n},即n×m矩阵,如果 数组中第一个元素(a11)在计算机中的存储地址为Adr(a11), 且每个元素占L个字节,则数组中的元素aij在计算机中的 存储地址为 Adr(aij)=Adr(a11)+[(i-1)n+j-1]*L, 1≤i≤m,1≤j≤n 在程序设计语言BASIC、C中的多维数组在计算机中 是以行为主顺序存储的。
3.4 数组与矩阵
3.4.2 数组的顺序存储结构
二维数组以列为主的顺序存储
对于二维数组{aij,1≤i≤m,1≤j≤n},即n×m矩阵,如果 数组中第一个元素(a11)在计算机中的存储地址为Adr(a11), 且每个元素占L个字节,则数组中的元素aij在计算机中的 存储地址为 Adr(aij)=Adr(a11)+[(j-1)n+i-1]*L, 1≤i≤m,1≤j≤n 在程序设计语言FORTRAN中的多维数组在计算机中 是以行为主顺序存储的。
a11 a 21 A a12 a22 a32 a23 a33 ... 0 a34 ... ... ... ... ... ... ... an 1,n 2 ... an 1,n 1 an,n 1 0 an 1,n an,n
3.4.3 规则矩阵的压缩
对称矩阵的压缩存储
a11 a 21 A a31 ... an1 a21 a22 a32 ... an 2 a31 ... an1 a32 ... an 2 a33 ... an 3 ... ... ... an 3 ... ann
规则矩阵是指矩阵中非零元素的分布有规律。如: a 上三角矩阵:非零元素只在矩阵的右上 A a a a 0 a a ... ... ... ... 三角出现,而左下三角的元素都为0; a a a ... 下三角矩阵:非零元素只在矩阵的左下 a a ... a a a a ... 三角出现,而右上三角的元素都为0; A a a a ... ... ... ... ... 对称矩阵:左下三角与右上三角的元素 a a a ... a a 是对称的; a a a 0 三对角矩阵:除了在3条对角线上 a a a ... ... ... A 的元素为非零外,其他元素都为0; ... ... ...
a11 a 21 A a12 a22 a32 a23 a33 ... 0 a34 ... ... ... ... ... ... ... an 1,n 2 ... an 1,n 1 an,n 1 0
an 1,n an,n
a11 a 21 A a31 ... an1 a22 a32 a33 0 ... ... ann
aij元素访问: ... ... an 2 an 3 当访问第i行第j列的元素时, 如果i<j,则该元素位于矩阵的右上三角区域,元 素值为0; 如果i≥j,元素值非0,需要计算压缩后aij会放在 一维数组B中的序号。首先需要计算第i-1行最后一 个元素放置的位置,为1+2+3+…+i-1=i(i-1)/2,则 aij在B中的位置为i(i-1)/2+j。即访问关系为:
三对角矩阵的压缩存储
n阶三对称矩阵的形式为,
a11 a 21 A a12 a22 a32 a23 a33 ... 0 a34 ... ... ... ... ... ... ... an 1,n 2 ... an 1,n 1 an,n 1 0 an 1,n an,n
3.4 数组与矩阵
3.4.2 数组的顺序存储结构
二维数组以列为主的顺序存储
二维数组以列为主的顺序存储是指将数组中的元素一 列接一列地顺序存储在计算机的连续存储空间中,即先存 储第1列,然后存储第2列,以此类推;每一列的元素以从 上到下的顺序存储。
a11 a a21 12 a13 a22 a23 a11 a21 a12 a22 a13 a23
3.4 数组与矩阵
3.4.3 规则矩阵的压缩
在规则矩阵中,由于非零元素有规律地分布在矩阵中, 因此,在存储一个规则矩阵时,只需存储非零元素,而对 于大部分的零元素或重复的非零元素不必存储,从而节省 存储空间。----压缩存储 问题:规则矩阵压缩存储后,如何能方便地访问矩阵中的 每个元素。以下以三角矩阵、对称矩阵与三对角矩阵为例 讨论。
3.4 数组与矩阵
3.4.2 数组的顺序存储结构
数组在计算机中是顺序存储的,也就是说是按一维线 性排列的。 如对于二维数组,虽然在概念上是二维的,其下标在 两个方向上变化 ,但按一维存储的 。 如何在一维存储 器中存放二维数组,可有两种方式:一种是以行为主的顺 序存储, 即放完一行之后顺次放入第二行。另一种是以 列为主的顺序存储, 即放完一列之后再顺次放入第二列。
a11 a 21 A a31 ... an1
a22 a32 ... an 2 a33 ... an 3
0 ... ... ann
在以列为主压缩存储的情况下,访问下 三角矩阵的元素其下标运算要比以行为 主压缩存储时要复杂一些。
3.4 数组与矩阵
3.4 数组与矩阵
3.4.3 规则矩阵的压缩
a11 A
11
a12 a22 0
a13 a23 a33
... a1n ... a2 n .. a3n ... ... ann ann an1 an 2 an 3 ... ann
3.4 数组与矩阵
3.4.3 规则矩阵的压缩
下三角矩阵的压缩存储
存储方法(以行为主):对 于n阶下三角矩阵A,开辟一个 长度为n(n+1)/2的一维数组B, 然后一行接一行依次次存放A中 下三角部分的元素,存放在一 维数组B中的形式如右图。
3.4 数组与矩阵
3.4.3 规则矩阵的压缩
下三角矩阵的压缩存储
3.4 数组与矩阵
3.4.1 数组概述
二维数组的元素也称为双下标变量,其表示的形式为: 数组名[下标][下标] ,其中下标应为整型常量或整型表 达式。例如: a[3][4] 表示a数组三行四列的元素。 下标变量和数组说明在形式中有些相似,但这两者具 有完全不同的含义。 数组说明的方括号中给出的是某一 维的长度,即可取下标的最大值; 而数组元素中的下标 是该元素在数组中的位置标识。前者只能是常量, 后者 可以是常量,变量或表达式。
B[i(i 1) / 2 j ] i j aij i j 0
3.4 数组与矩阵
3.4.3 规则矩阵的压缩
下三角矩阵的压缩存储
同样,在以列为主压缩存储下三角矩阵 A的情况下(如右图),访问aij的公式为