第4章 数据结构 串、数组和广义表

合集下载

数据结构第4章 数组和广义表

数据结构第4章  数组和广义表

第4章数组和广义表【例4-1】二维数组A的每一个元素是由6个字符组成的串,其行下标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]解:二维数A是一个9行10列的矩阵,即A[9][10]。

按行存储时,A[8][5]是第85个元素存储的元素。

而按列存储时,第85个存储的元素是A[3][10]。

即正确答案为B。

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

A.jii+-2)1(*B.ijj+-2)1(*C.jii++2)1(*D.ijj++2)1(*解:如果a ij按行存储,那么它的前面有i-1行,其有元素个数为:1+2+3+…+(i-1)=i(i-1)/2。

同时它又是所在行的第j列,因此它排列的顺序还得加上j,一维数组B[n(n+1)/2]中的位置k与其下标的关系是:jii+-2)1(*。

因此答案为A。

【例4-3】已知n阶下三角矩阵A,按照压缩存储的思想,可以将其主对角线以下所有元素(包括主对角线上元素)依次存放于一维数组B中。

请写出从第一列开始以列序为主序分配方式时在B中确定元素a ij的存放位置的公式。

解:如果a ij按列存储,那么它的前面有j-1列,共有元素:n+(n-1)+(n-2)+ …+[n-(j-2)]=(j-1)*n-2)1)(2(--jj而它又是所在列的第i行,因此在它前的元素个数还得加上i。

因此它在一维数组B中的存储顺序为:(j-1)*n-2)1)(2(--jj+i【例4-4】已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出的原子项ASCII码最大的运算是()。

数据结构答案第4章

数据结构答案第4章

第 4 章广义线性表——多维数组和广义表2005-07-14第 4 章广义线性表——多维数组和广义表课后习题讲解1. 填空⑴数组通常只有两种运算:()和(),这决定了数组通常采用()结构来实现存储。

【解答】存取,修改,顺序存储【分析】数组是一个具有固定格式和数量的数据集合,在数组上一般不能做插入、删除元素的操作。

除了初始化和销毁之外,在数组中通常只有存取和修改两种操作。

⑵二维数组A中行下标从10到20,列下标从5到10,按行优先存储,每个元素占4个存储单元,A[10][5]的存储地址是1000,则元素A[15][10]的存储地址是()。

【解答】1140【分析】数组A中每行共有6个元素,元素A[15][10]的前面共存储了(15-10)×6+5个元素,每个元素占4个存储单元,所以,其存储地址是1000+140=1140。

⑶设有一个10阶的对称矩阵A采用压缩存储,A[0][0]为第一个元素,其存储地址为d,每个元素占1个存储单元,则元素A[8][5]的存储地址为()。

【解答】d+41【分析】元素A[8][5]的前面共存储了(1+2+…+8)+5=41个元素。

⑷稀疏矩阵一般压缩存储方法有两种,分别是()和()。

【解答】三元组顺序表,十字链表⑸广义表((a), (((b),c)),(d))的长度是(),深度是(),表头是(),表尾是()。

【解答】3,4,(a),((((b),c)),(d))⑹已知广义表LS=(a,(b,c,d),e),用Head和Tail函数取出LS中原子b的运算是()。

【解答】Head(Head(Tail(LS)))2. 选择题⑴二维数组A的每个元素是由6个字符组成的串,行下标的范围从0~8,列下标的范围是从0~9,则存放A至少需要()个字节,A的第8列和第5行共占()个字节,若A按行优先方式存储,元素A[8][5]的起始地址与当A按列优先方式存储时的()元素的起始地址一致。

第四、五章串、数组和广义表练习题答案

第四、五章串、数组和广义表练习题答案

第四、五章串、数组和广义表练习题答案一.填空题1. 不包括任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。

2. 设S=“A;/document/”,那么strlen(s)= 20 , “/”的字符定位的位置为3。

3. 子串的定位运算称为串的模式匹配;被匹配的主串称为目标串,子串称为模式。

4. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,那么第 6 次匹配成功。

5. 假设n为主串长,m为子串长,那么串的古典(朴素)匹配算法最坏的情形下需要比较字符的总次数为(n-m+1)*m。

6. 假设有二维数组A6×8,每一个元素用相邻的6个字节存储,存储器按字节编址。

已知A的起始存储位置(基地址)为1000,那么数组A的体积(存储量)为 288 B ;末尾元素A57的第一个字节地址为 1282 ;假设按行存储时,元素A14的第一个字节地址为(8+4)×6+1000=1072 ;假设按列存储时,元素A47的第一个字节地址为 (6×7+4)×6+1000)=1276 。

(注:数组是从0行0列仍是从1行1列计算起呢?由末单元为A57可知,是从0行0列开始!)7. 〖00年运算机系考研题〗设数组a[1…60, 1…70]的基地址为2048,每一个元素占2个存储单元,假设以列序为主序顺序存储,那么元素a[32,58]的存储地址为8950 。

答:不考虑0行0列,利用列优先公式:LOC(a ij)=LOC(a c1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L得:LOC(a32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=89508. 三元素组表中的每一个结点对应于稀疏矩阵的一个非零元素,它包括有三个数据项,别离表示该元素的行下标、列下标和元素值。

9.求以下广义表操作的结果:(1)GetHead【((a,b),(c,d))】=== (a, b) ; u=;(*b).nu=;(*b).tu=;if{ q=1;for(col=1; __ col<=, ________;col++)for(p=1;p<=;p++)if[p].j ==col){(*b).data[q].i=[p].j;(*b).data[q].j=[p].i;(*b).data[q].v=[p].v;__q++_________;}}23.基于三元组的稀疏矩阵转置的处置方式有两种,以下计算依照矩阵A的三元组的顺序进行转置,请在___________处用适当的句子用以填充。

数据结构答案第4章

数据结构答案第4章
【解答】设稀疏矩阵为m行n列,如果采用二维数组存储,其空间复杂度为O(m×n);因为要将所有的矩阵元素累加起来,所以,需要用一个两层的嵌套循环,其时间复杂度亦为O(m×n)。如果采用三元组顺序表进行压缩存储,假设矩阵中有t个非零元素,其空间复杂度为O(t),将所有的矩阵元素累加起来只需将三元组顺序表扫描一遍,其时间复杂度亦为O(t)。当t<<m×n时,采用三元组顺序表存储可获得较好的时、空性能。
⑴二维数组A的每个元素是由6个字符组成的串,行下标的范围从0~8,列下标的范围是从0~9,则存放A至少需要()个字节,A的第8列和第5行共占()个字节,若A按行优先方式存储,元素A[8][5]的起始地址与当A按列优先方式存储时的()元素的起始地址一致。
A 90 B 180 C 240 D 540 E 108 F 114 G 54
⑵二维数组A中行下标从10到20,列下标从5到10,按行优先存储,每个元素占4个存储单元,A[10][5]的存储地址是1000,则元素A[15][10]的存储地址是()。
【解答】1140
【分析】数组A中每行共有6个元素,元素A[15][10]的前面共存储了(15-10)×6+5个元素,每个元素占4个存储单元,所以,其存储地址是1000+140=1140。
Head(Tail(Tail(Head(ST))))=奖金
⑵工资表ST的头尾表示法如图4-7所示。7.若在矩阵A中存在一个元素ai,j(0≤i≤n-1,0≤j≤m-1),该元素是第i行元素中最小值且又是第j列元素中最大值,则称此元素为该矩阵的一个马鞍点。假设以二维数组存储矩阵A,试设计一个求该矩阵所有马鞍点的算法,并分析最坏情况下的时间复杂度。
⑵因为k和i, j之间是一一对应的关系,k+1是当前非零元素的个数,整除即为其所在行号,取余表示当前行中第几个非零元素,加上前面零元素所在列数就是当前列号,即:

考研《数据结构》复习知识点归纳

考研《数据结构》复习知识点归纳

《数据结构》复习重点知识点归纳一.数据结构的章节结构及重点构成数据结构学科的章节划分基本上为:概论,线性表,栈和队列,串,多维数组和广义表,树和二叉树,图,查找,内排,外排,文件,动态存储分配。

对于绝大多数的学校而言,“外排,文件,动态存储分配”三章基本上是不考的,在大多数高校的计算机本科教学过程中,这三章也是基本上不作讲授的。

所以,大家在这三章上可以不必花费过多的精力,只要知道基本的概念即可。

但是,对于报考名校特别是该校又有在试卷中对这三章进行过考核的历史,那么这部分朋友就要留意这三章了。

按照以上我们给出的章节以及对后三章的介绍,数据结构的章节比重大致为:·概论:内容很少,概念简单,分数大多只有几分,有的学校甚至不考。

·线性表:基础章节,必考内容之一。

考题多数为基本概念题,名校考题中,鲜有大型算法设计题,如果有,也是与其它章节内容相结合。

·栈和队列:基础章节,容易出基本概念题,必考内容之一。

而栈常与其它章节配合考查,也常与递归等概念相联系进行考查。

·串:基础章节,概念较为简单。

专门针对于此章的大型算法设计题很少,较常见的是根据KMP进行算法分析。

·多维数组及广义表:基础章节,基于数组的算法题也是常见的,分数比例波动较大,是出题的“可选单元”或“侯补单元”。

一般如果要出题,多数不会作为大题出。

数组常与“查找,排序”等章节结合来作为大题考查。

·树和二叉树:重点难点章节,各校必考章节。

各校在此章出题的不同之处在于,是否在本章中出一到两道大的算法设计题。

通过对多所学校的试卷分析,绝大多数学校在本章都曾有过出大型算法设计题的历史。

·图:重点难点章节,名校尤爱考。

如果作为重点来考,则多出现于分析与设计题型当中,可与树一章共同构成算法设计大题的题型设计。

·查找:重点难点章节,概念较多,联系较为紧密,容易混淆。

出题时可以作为分析型题目给出,在基本概念型题目中也较为常见。

数据结构第4章数组和串

数据结构第4章数组和串
1
● 教学目的:理解抽象数据类型数组的概念, 掌握数组的不同存储结构的实现及应用,了 解广义表的相关概念,掌握串的逻辑结构、 存储结构及其基本运算。
● 教学重点:数作在不同 存储结构上的实现。 ● 教学难点:带状矩阵的压缩存储;稀疏矩 阵的三元组表实现及其转置算法,堆结构的 串操作实现;串的模式匹配算法。
矩阵的压缩存储
printf("Array a:\n"); k=0; for(i=0;i<N;i++)//输出矩阵A { for(j=0;j<N;j++) if(i<j)printf("%5d",sa[M-1]); else printf("%5d",sa[i*(i+1)/2+j]); printf("\n"); } printf("Array b:\n"); k=0; for(i=0;i<N;i++)//输出矩阵B { for(j=0;j<N;j++) if(i>j)printf("%5d",sb[M-1]); else printf("%5d",sb[j*(j+1)/2+i]); printf("\n"); }}
矩阵的压缩存储
由此可见,要唯一表示一个稀疏矩阵,在存储三 元组表的同时还需存储该矩阵总的行数、列数及非 零元个数。 练习:写出图4-9(a)所示稀疏矩阵的三元组表。
三元组表(也是线性表)的存储方式主要有两种: 顺序存储和链式存储,从而可引出稀疏矩阵的两种 压缩存储方法:三元组顺序表和十字链表。 3、三元组顺序表
矩阵的压缩存储

数据结构C语言版第2版课后习题答案

数据结构C语言版第2版课后习题答案

数据结构C语言版第2版课后习题答案数据结构(C语言版)(第2版)课后习题答案李冬梅2015.3第1章绪论 0第2章线性表 (4)第3章栈和队列 (14)第4章串、数组和广义表 (27)第5章树和二叉树 (34)第6章图 (43)第7章查找 (55)第8章排序 (66)第1章绪论1•简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。

如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。

在有些情况下,数据元素也称为元素、结点、记录等。

数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。

例如,学生基本信息表中的学号、姓名、性别等都是数据项。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。

例如:整数数据对象是集合N={0,± 1,±2,…},字母字符数据对象是集合C={ ‘ A',' B',…,'b',…,‘ z' },学生基本信息表也可是一个数据对象。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。

因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

存储结构:数据对象在计算机中的存储表示,也称为物理结构。

抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。

数据结构简答题

数据结构简答题

数据结构简答题第⼀章绪论1、数据结构是⼀门研究什么的学科?数据结构是⼀门研究⾮数值计算的程序设计问题中,计算机操作对象及对象间的关系和施加于对象的操作等的学科。

2、数据存储结构有哪⼏种类型?存储结构可分为顺序存储、链式存储、索引存储和散列存储。

3、数据逻辑结构包括哪⼏种类型?逻辑结构包括线性结构和⾮线性结构。

更细分的话可以说,逻辑结构包括集合、线性结构(线性表、栈、队列等)、树形结构和⽹状结构。

4、数据结构与数据类型有什么区别?答:数据结构这⼀术语有两种含义,⼀是作为⼀门课的名称,⼆是作为⼀个科学的概念,⽬前尚⽆公认定义,⼀般认为,数据结构包括三个⽅⾯数据的逻辑结构,数据的存储结构,数据的运算。

⽽数据类型是值的集合和操作的集合,可以看做是已实现了的数据结构,后者是前者的⼀种简化情况。

5、数据类型和抽象数据类型是如何定义的?⼆者有何相同和不同之处?抽象数据类型的主要特点是什么?使⽤抽象数据类型的主要好处是什么?数据类型和抽象数据类型是如何定义的?⼆者有何相同和不同之处?抽象数据类型的主要特点是什么?使⽤抽象数据类型的主要好处是什么?答:数据类型是程序设计语⾔中的⼀个概念,数据类型是值的集合和操作的集合,可以看做是已实现了的数据结构抽象数据类型指⼀个数学模型及定义在该模型上的⼀组操作。

抽象的意义在于数据类型的数学抽象特性。

抽象数据类型的定义仅取决于它的逻辑特性,⽽与其在计算机内部如何表⽰与实现⽆关。

⽆论其内部如何变化。

只要它的数学特性不变就不影响它的外部使⽤。

抽象数据类型和数据类型实质上是⼀个概念,但是抽象数据类型的范围更⼴,它已不再局限于机器已定义和实现的数据类型,还包括⽤户在设计软件系统时⾃⾏定义的数据类型。

使⽤抽象数据类型定义的软件模块含定义,表⽰和实现三部分,封装在⼀起,对⽤户透明(提供接⼝),⽽不必了解实现细节。

6、名词解释数据:是对客观事物的符号表⽰,在计算机科学中指所有能输⼊到计算机并能被计算机程序处理的符号总称。

数据结构习题解析与实验指导

数据结构习题解析与实验指导

6.1习题 6.2答案及解析
7.1习题 7.2答案及解析
8.1习题 8.2答案及解析
实验1基于线性 1
表的图书信息 管理
实验2基于栈的 2
中缀算术表达 式求值
3 实验3基于栈的
后缀算术表达 式求值
4
实验4基于字符 串模式匹配算
法的病毒感染
检测问题
5 实验5基于哈夫
曼树的数据压 缩算法
实验6基于二叉树的 表达式求值算法
实验7基于Dijsktra 算法的最短路径求解
实验8基于广度优先 搜索的六度空间理论 的验证
课程设计基于不同策 略的英文单词的词频 统计和检索系统
读书笔记
这是《数据结构习题解析与实验指导》的读书笔记模板,可以替换为自己的心得。
精彩摘录
这是《数据结构习题解析与实验指导》的读书笔记模板,可以替换为自己的精彩内容摘录。
作者介绍
这是《数据结构习题解析与实验指导》的读书笔记模板,暂无该书作者的介绍。
谢谢观看
数据结构习题解析与实验指导
读书笔记模板
01 思维导图
03 目录分析 05 精彩摘录
目录
02 内容摘要 04 读书笔记 06 作者介绍
思维导图
关键字分析思维导图
广义
求值
习题
章树
线性表
解析 树
实验
队列
表第 实验
二叉树
数据结构
习题
线性表
答案
算术
算法
英文单词
内容摘要
本书主要内容包括上下两篇,上篇为习题及习题解析,下篇为实验指导。每篇又分为几章内容,分别为:第 1章 绪论、第 2章 线性表、第3章栈和队列、第4章串、数组和广义表、第5章 树和二叉树、第6章图、第7章 查找、第8章 排序。

第4章:串与数组 数据结构C语言第三版

第4章:串与数组 数据结构C语言第三版
4-l=3,所以该数组的元素数目共有(4-0+1)*(3-0+1)=5*4=20个。
又由于C语言采用行序为主序的存储方式,则有:
LOC(a3,2)=LOC(a0,0)+(i*n+j)*k=2000+(3*4+2)*4=2056
4.2.3稀疏矩阵
特殊矩阵是指非零元素或零元素的分布有一定规律的矩阵。
为了节省存储空间, 可以利用特殊矩阵的规律,对它们进行压缩存储。
/*继续匹配下一个字符*/
{ i++; j++; }
/*主串和子串依次匹配下一个字符*/
else
/*主串、子串指针回溯重新开始下一次匹配*/
{ i=i-j+1;j=0; } /*主串从下一个位置开始匹配,子串从头开始匹配*/
}
if (t[j]>=‘\0’) return i-j; /*返回匹配的第一个字符的下标*/
例如,“a”、“ab”、“abc”和“abcd”等都是“abcde”的子串。
4.1.2串的基本运算
(1)求串长StrLength(s):返回串s中字符个数。 (2)串赋值StrAssign(s1,s2):将一个字符串常量s2赋给串变量s1。 (3)串连接StrConcat(s1,s2):返回由两个串s1和s2连接在一起形成的新串。 (4)求子串SubStr(s,i,len):返回串s中从第i个字符开始的、由连续len个字符组成的子串。 (5)串比较StrComp(s1,s2):若s1=s2,返回值为0;若s1<s2,返回值<0;若s1>s2,返回值>0; (6)串定位StrIndex(s,t):返回子串t在主串s中首次出现的位置,找不到返回-1。 (7)串插入操作StrInsert(s,i,t):将串t插入到串s的第i个字符上,并返回产生的新串。 (8)串删除操作StrDel(s,i,len):从串s中删去从第i个字符开始的长度为len的子串,并返 回产生的新串。 (9)串替换操作StrRep(s,t,r):将串s中所有与t相等且不重叠的子串用串r替换,并返回产 生的新串。 (10)串相等StrEqual(s,t):若两个串s与t相等则返回真;否则返回假。 (11)串输出DispStr(s):输出串s的所有元素值。

《数据结构及其应用》笔记含答案 第四章_串、数组和广义表

《数据结构及其应用》笔记含答案 第四章_串、数组和广义表

第4章串、数组和广义表一、填空题1、零个或多个字符组成的有限序列称为串。

二、判断题1、稀疏矩阵压缩存储后,必会失去随机存取功能。

(√)2、数组是线性结构的一种推广,因此与线性表一样,可以对它进行插入,删除等操作。

(╳)3、若采用三元组存储稀疏矩阵,把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算。

(╳)4、若一个广义表的表头为空表,则此广义表亦为空表。

(╳)5、所谓取广义表的表尾就是返回广义表中最后一个元素。

(╳)三、单项选择题1、串是一种特殊的线性表,其特殊性体现在(B)。

A.可以顺序存储B.数据元素是一个字符C.可以链式存储D.数据元素可以是多个字符若2、串下面关于串的的叙述中,(B)是不正确的?A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储解释:空格常常是串的字符集合中的一个元素,有一个或多个空格组成的串成为空格串,零个字符的串成为空串,其长度为零。

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

A.012345678999 B.012121111212 C.011234223456 D.01230123223454、串“ababaabab”的nextval为(A)。

A.010104101B.010102101 C.010100011 D.0101010115、串的长度是指(B)。

A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数解释:串中字符的数目称为串的长度。

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

A.808 B.818 C.1010 D.1020解释:以行序为主,则LOC[5,5]=[(5-1)*100+(5-1)]*2+10=818。

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构( C语言版)(第 2版)课后习题答案李冬梅2015.3目录第 1 章绪论 (1)第 2 章线性表 (5)第 3 章栈和队列 (13)第 4 章串、数组和广义表 (26)第 5 章树和二叉树 (33)第 6 章图 (43)第 7 章查找 (54)第 8 章排序 (65)第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。

如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。

在有些情况下,数据元素也称为元素、结点、记录等。

数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。

例如,学生基本信息表中的学号、姓名、性别等都是数据项。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。

例如:整数数据对象是集合N={0 ,± 1,± 2,, } ,字母字符数据对象是集合C={‘A’,‘B’, , ,‘Z’,‘ a’,‘ b’, , ,‘z ’} ,学生基本信息表也可是一个数据对象。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。

因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

存储结构:数据对象在计算机中的存储表示,也称为物理结构。

抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。

具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

数据结构课后习题(第4-5章)

数据结构课后习题(第4-5章)

【课后习题】第4章 串 第5章 数组和广义表网络工程2010级( )班 学号: 姓名:题 号 一 二 三 四 总分 得 分一、填空题(每空1分,共30分)1. 串有三种机内表示方法: 、 和 ,其中前两种属于顺序存储结构,第三种属于 。

2. 若n 为主串长度,m 为子串长度,则串的BF (朴素)匹配算法最坏的情况下需要比较字符的总次数为 ,T(n)= 。

3. 是任意串的子串;任意串S 都是S 本身的子串,除S 本身外,S 的其他子串称为S 的 。

4. 设数组a[1…50, 1…60]的基地址为1000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[32,58]的存储地址为 。

5. 对于数组,比较适于采用 结构够进行存储。

6. 广义表的深度是指_______。

7. 将一个100100 A 的三对角矩阵,按行优先存入一维数组B[297]中,A 中元素66,66A 在B 数组中的位置k 为 。

8. 注意:a i,j 的k 为 2(i-1)+j-1,(i=1时j=1,2;1<i<=n 时,j=i-1,i,i+1) 。

9. 称为空串; 称为空白串。

10. 求串T 在主串S 中首次出现的位置的操作是 ,其中 称为目标串, 称为模式。

11. 对称矩阵的下三角元素a[i,j],存放在一维数组V 的元素V[k]中(下标都是从0开始), 12. k 与i ,j 的关系是:k= 。

13. 在n 维数组中每个元素都受到 个条件的约束。

14. 同一数组中的各元素的长度 。

15. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 、 和 。

16.稀疏矩阵中有n个非零元素,则其三元组有行。

17.求下列广义表操作的结果:18.(1)GetHead【((a,b),(c,d))】=== ;19.(2)GetHead【GetTail【((a,b),(c,d))】】=== ;20.(3)GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== ;21.(4)GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== ;22.广义表E=(a,(b,E)),则E的长度= ,深度= ;二、判断题(如果正确,在下表对应位置打“√”,否则打“⨯”。

数据结构(c语言版)课后习题答案完整版

数据结构(c语言版)课后习题答案完整版

第1章 绪论5.选择题:CCBDCA6.试分析下面各程序段的时间复杂度。

.试分析下面各程序段的时间复杂度。

(1)O (1) (2)O (m*n ) (3)O (n 2) (4)O (log 3n )(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O (n 2) (6)O(n )第2章 线性表1.选择题.选择题babadbcabdcddac 2.算法设计题.算法设计题(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; }}、空间(n)、空间(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)的数据元素。

复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。

数据结构数组和广义表

数据结构数组和广义表

数据结构05数组与广义表数组与广义表可以看做是线性表地扩展,即数组与广义表地数据元素本身也是一种数据结构。

5.1 数组地基本概念5.2 数组地存储结构5.3 矩阵地压缩存储5.4 广义表地基本概念数组是由相同类型地一组数据元素组成地一个有限序列。

其数据元素通常也称为数组元素。

数组地每个数据元素都有一个序号,称为下标。

可以通过数组下标访问数据元素。

数据元素受n(n≥1)个线性关系地约束,每个数据元素在n个线性关系地序号 i1,i2,…,in称为该数据元素地下标,并称该数组为n维数组。

如下图是一个m行,n列地二维数组A矩阵任何一个元素都有两个下标,一个为行号,另一个为列号。

如aij表示第i行j列地数据元素。

数组也是一种线性数据结构,它可以看成是线性表地一种扩充。

一维数组可以看作是一个线性表,二维数组可以看作数据元素是一维数组(或线性表)地线性表,其一行或一列就是一个一维数组地数据元素。

如上例地二维数组既可表示成一个行向量地线性表: A1=(a11,a12,···,a1n)A2=(a21,a22, ···,a2n)A=(A1,A2, ···,Am) ············Am=(am1,am2, ···,amn)也可表示成一个列向量地线性表:B1=(a11,a21,···,am1)B2=(a12,a22, ···,am2)A=(B1,B2, ···,Bm) ············Bn=(a1n,a2n, ···,amn)数组地每个数据元素都与一组唯一地下标值对应。

北京师范大学数据结构教学资料 第4章——数组、串与广义表

北京师范大学数据结构教学资料 第4章——数组、串与广义表

精选ppt
25
设矩阵 A 中有 s 个非零元素。令 e = s/(m*n), 称 e 为矩阵的稀疏因子。
有人认为 e≤0.05 时称之为稀疏矩阵。 在存储稀疏矩阵时,为节省存储空间,应只
存储非零元素。但由于非零元素的分布一般 没有规律,故在存储非零元素时,必须记下 它所在的行和列的位置 ( i, j )。 每一个三元组 (i, j, aij) 唯一确定了矩阵A的一 个非零元素。因此,稀疏矩阵可由表示非零 元的一系列三元组及其行列数唯一确定。
精选ppt
26
稀疏矩阵的定义
const int drows = 6, dcols = 7, dterms = 9;
template<class E>
struct Triple {
//三元组
int row, col;
//非零元素行号/列号
E value;
//非零元素的值
void operator = (Triple<E>& R) //赋值
a1 1
a2 1 an1 1
a1 2
a2 2 an1 2
aaan12n1nn111
下 三 角 矩 阵
01 2 3 4 5 6 7 8
n(n+1)/2-1
B a00 a10 a11 a20 a21 a22 a30 a31 a32 …… an-1n-1
若 i j, 数组元素A[i][j]在数组B中的存放位置 为 1 + 2 + + i + j = (i + 1)* i / 2 + j
前i行(0~i-1)元素总数 第i行第j个元素前元素个数
精选ppt
18

(NEW)李春葆《数据结构教程》(C++语言描述)配套题库【名校考研真题+课后习题+章节题库+模拟试题】

(NEW)李春葆《数据结构教程》(C++语言描述)配套题库【名校考研真题+课后习题+章节题库+模拟试题】
A.DIV R0,R1;(R0)/(R1)→R0 B.INT n;产生软中断 C.NOT R0;寄存器R0的内容取非 D.MOV R0,addr;把地址处的内存数据放入寄存器R0中 【答案】C 【解析】A项,除法操作出现除数为零的情况时,会产生内中断, CPU切换为内核态进行中断处理;B项,直接产生中断,会切换到内核 态;D项,addr出现非法地址,会出现中断,进而切换到内核态。
D.1用C语言写的某单位的认识管理程序语言,2操作系统,3编译
程序 【答案】B 【解析】计算机系统的组成如下图所示:
其中,C语言写的某单位的认识管理程序语言属于应用程序,编译 程序属于语言处理程序。
3 假定下列指令已装入指令寄存器。则执行时不可能导致CPU从 用户态变为内核态(系统态)的是( )。[2015年联考真题]
5 下列说法中( )不是创建进程必须的。[上海交通大学考研真 题]
A.建立一个进程的进程表项 B.为进程分配内存 C.为进程分配CPU D.将进程表项放入就绪队列 【答案】C 【解析】进程刚被创建后,实际上是处于就绪状态的,所以不许为 进程分配CPU。
6 若系统S1采用死锁避免方法,S2采用死锁检测方法,下列叙述 中正确的是( )。[2015年联考真题]
4 下列选项中会导致进程从执行态变为就绪态的事件是( )。 [2015年联考真题]
A.执行P(wait)操作 B.申请内存失败 C.启动I/0设备 D.被高优先级进程抢占 【答案】D 【解析】D项,被高优先级进程抢占,进程会由执行态变为就绪 态。ABC三项,程序由于缺少资源而由执行态转为阻塞态。
目录
第一部分 名校考研真题 一、选择题 二、综合应用题
第二部分 课后习题 第1章 绪 论 第2章 线性表 第3章 栈和队列 第4章 串 第5章 数组和广义表 第6章 树和二叉树 第7章 图 第8章 查 找 第9章 内排序 第10章 外排序 第11章 数据结构和STL
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
typedef struct{ *ch; char *ch; //若串非空,则按串长分配存储区, //若串非空,则按串长分配存储区, 若串非空 //否则ch //否则ch为NULL 否则ch为 int length; length; //串长度 //串长度
}HString; HString;
辽宁科技大学
• 直到主串的一个连续子串字符序列与模式相等 。 返回值为S中与T匹配的子序列第一个字符的序号 第一个字符的序号, 返回值为S中与T匹配的子序列第一个字符的序号, 即匹配成功。 即匹配成功。 • 否则,匹配失败,返回值 0 否则,匹配失败,
辽宁科技大学
2011年12月7日
BF算法描述(算法4.1) BF算法描述(算法4.1) 算法描述 4.1
子串 主串 字符位置 子串位置 串相等 空格串
辽宁科技大学
2011年12月7日
串的抽象数据类型 ADT String { 数据对象: 数据对象:
D = {ai | ai ∈ CharacterSet , i = 1,2,L, n, n ≥ 0}
数据关系: 数据关系: R1 = {< ai −1 , ai > | ai −1 , ai ∈ D, i = 1,2,L , n} 基本操作: 基本操作:
算法种类: 算法种类:
•BF算法(又称古典的、经典的、朴素的、穷举的) BF算法(又称古典的、经典的、朴素的、穷举的) BF算法 •KMP算法(特点:速度快) KMP算法(特点:速度快) KMP算法
辽宁科技大学
2011年12月7日
BF算法设计思想 BF算法设计思想 i S :ababcabcacbab
辽宁科技大学
//求子串 求子串 //串拷贝 串拷贝 //串判空 串判空 //清空串 清空串 //子串的位置 子串的位置 //串替换 //串替换 //子串插入 子串插入 //子串删除 子串删除 //串销毁 串销毁
2011年12月7日
串的存储结构
顺序存储 链式存储
辽宁科技大学
2011年12月7日
顺序存储表示

T :abc j
i指针回溯
S :ababcabcacbab T : abc S :ababcabcacbab T : abc
辽宁科技大学
2011年12月7日
BF算法设计思想 BF算法设计思想 Index(S,T,pos)
• 将主串的第pos个字符和模式的第一个字符比较, 将主串的第pos个字符和模式的第一个字符比较, pos个字符和模式的第一个字符比较 相等,继续逐个比较后续字符; 若相等,继续逐个比较后续字符; 不等,从主串的下一字符起, 若不等,从主串的下一字符起,重新与模式的 第一个字符比较。 第一个字符比较。
辽宁科技大学
2011年12月7日
数组的抽象数据类型 ADT Array {
ji = 0,L bi − 1, i = 1,2,L, n
数据对象: 数据对象
D = {a j j2 L jn | a j1 j2 L jn ∈ ElemSet
数据关系: R1 = {< a j L j L j , a j L j +1L j >| 数据关系
总次数为: 总次数为:(n-m)*m+m=(n-m+1)*m = 若m<<n,则算法复杂度 ,则算法复杂度O(n*m)
辽宁科技大学
2011年12月7日
KMP( Pratt) KMP(Knuth Morris Pratt)算法
《计算机程序设计艺术 第1卷 基本算法》 98元 卷 基本算法》 元 《计算机程序设计艺术 第2卷 半数值算法》 98元 卷 半数值算法》 元 《计算机程序设计艺术 第3卷 排序与查找》 98元 卷 排序与查找》 元 /~knuth/
(1) StrAssign (&T,chars) (2) StrCompare (S,T) (3) StrLength (S) (4) Concat(&T,S1,S2)
辽宁科技大学
//串赋值 串赋值 //串比较 串比较 //求串长 求串长 //串联 串联
2011年12月7日
(5) SubString(&Sub,S,pos,len) (6) StrCopy(&T,S) (7) StrEmpty(S) (8) ClearString (&S) (9) Index(S,T,pos) (11) Replace(&S,T,V) (12) StrInsert(&S,pos,T) (12) StrDelete(&S,pos,len) (13) DestroyString(&S) }ADT String
2011年12月7日
链式存储表示
head
A B C D
E F G H
I # # #
head
A
B
C
...
I
辽宁科技大学
2011年12月7日
链式存储表示
#define CHUNKSIZE 80 typedef struct Chunk{ char ch[CHUNKSIZE]; struct Chunk *next; }Chunk; //可由用户定义的块大小 可由用户定义的块大小
辽宁科技大学
2011年12月7日
第4章 串、数组和广义表
教学内容
4.1 串 4.2 数组 4.3 广义表
辽宁科技大学
2011年12月7日
教学目标
1. 了解串的存储方法, 理解串的两种模式匹 掌握串的存储方法, 1.了解串的存储方法,理解串的两种模式匹配 掌握串的存储方法, 算法,重点掌握BF算法 算法。 算法,重点掌握 算法。 配算法; 配算法; 2. 明确数组和广义表这两种数据结构的特点, 2.明确数组和广义表这两种数据结构的特点, 明确数组和广义表这两种数据结构的特点 掌握数组地址计算方法 掌握数组存储时地址计算方法, 数组地址计算方法, 掌握数组地址计算方法,了解几种特殊矩阵 ,掌握数组存储时地址计算方法,了解几种 的压缩存储方法。 的压缩存储方法。 特殊矩阵的压缩存储方法。 特殊矩阵的压缩存储方法。 3.掌握广义表的定义、性质及其 掌握广义表的定义、 和 掌握广义表的定义 性质及其GetHead和 G7日
二维数组
A = (α1 ,α 2 ,L,α p ) (p = m或n)
α i = ( ai1 , ai 2 ,L, ain ) 1 ≤ i ≤ m
Am×n
1 i n 1 i n
0 ≤ jk ≤ bk − 1, 1 ≤ k ≤ n, 且k ≠ i, 0 ≤ ji ≤ bk − 2, a j1L ji L jn , a j1L ji +1L jn ∈ D, i = 2,L, n}
辽宁科技大学
2011年12月7日
基本操作: 基本操作
(1) InitArray (&A,n,bound1, …boundn) //构造数组 构造数组A 构造数组 (2) DestroyArray (&A) // 销毁数组 销毁数组A (3) Value(A,&e,index1,…,indexn) //取数组元素值 取数组元素值 (4) Assign (A,&e,index1,…,indexn) //给数组元素赋值 给
2011年12月7日
4.2 数组
本节所讨论的数组与高级语言中的数组区别: 本节所讨论的数组与高级语言中的数组区别: • 高级语言中的数组是顺序结构; 高级语言中的数组是顺序结构 顺序结构; • 而本章的数组既可以是顺序的,也可以是链式结构, 而本章的数组既可以是顺序 顺序的 也可以是链式结构, 链式结构 用户可根据需要选择。 用户可根据需要选择。
可将多个字符存放在一个结点中,以克服其缺点 可将多个字符存放在一个结点中,
head
A
B
C
D
E
F
G
H
I
#
#
#
head
A
B
C
...
I
辽宁科技大学
2011年12月7日
串的模式匹配算法 算法目的: 算法目的:
确定主串中所含子串第一次出现的位置(定位) 确定主串中所含子串第一次出现的位置(定位) 即如何实现教材P72 Index(S,T,pos)函数 即如何实现教材 函数
}ADT Array
辽宁科技大学
2011年12月7日
一维数组
LOC(i) =
0 1 2
a,
3 4
i=0
5 6 7 8 9
LOC(i-1)+l = a+i*l, i > 0 -
a 35 27 49 18 60 54 77 83 41 02
l l l l l l l a+i*l l l l
LOC(i) = LOC(i-1)+l = a+i*l -
typedef struct{ Chunk *head,*tail; //串的头指针和尾指针 串的头指针和尾指针 int curlen; //串的当前长度 串的当前长度 }LString; ;
辽宁科技大学
2011年12月7日
链式存储表示
优点: 优点:操作方便 缺点: 缺点:存储密度较低
= 串值所占的存储位 存储密度 实际分配的存储位
k
辽宁科技大学
2011年12月7日
串操作应用举例--文本编辑 串操作应用举例--文本编辑 --
• • • 文本可被看作一个字符串,称为文本串 文本可被看作一个字符串, 页则是文本串的子串 行又是页的子串。 行又是页的子串。 页表 页号 起始行号
…………
辽宁科技大学
行表 行号 起始地址 长度
…………
辽宁科技大学
2011年12月7日
相关文档
最新文档