【VIP专享】数据结构 第4-5章习题答案

合集下载

数据结构课后习题答案第四章

数据结构课后习题答案第四章

第四章一、简述下列每对术语的区别:空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串;目标串和模式串;有效位移和无效位移。

答:●空串是指不包含任何字符的串,它的长度为零。

空白串是指包含一个或多个空格的串,空格也是字符。

●串常量是指在程序中只可引用但不可改变其值的串。

串变量是可以在运行中改变其值的。

●主串和子串是相对的,一个串中任意个连续字符组成的串就是这个串的子串,而包含子串的串就称为主串。

●静态分配的顺序串是指串的存储空间是确定的,即串值空间的大小是静态的,在编译时刻就被确定。

动态分配的顺序串是在编译时不分配串值空间,在运行过程中用malloc和free等函数根据需要动态地分配和释放字符数组的空间(这个空间长度由分配时确定,也是顺序存储空间)。

●目标串和模式串:在串匹配运算过程中,将主串称为目标串,而将需要匹配的子串称为模式串,两者是相对的。

●有效位移和无效位移:在串定位运算中,模式串从目标的首位开始向右位移,每一次合法位移后如果模式串与目标中相应的字符相同,则这次位移就是有效位移(也就是从此位置开始的匹配成功),反之,若有不相同的字符存在,则此次位移就是无效位移(也就是从此位置开始的匹配失败)。

二、假设有如下的串说明:char s1[30]="Stocktom,CA", s2[30]="March 5 1999", s3[30], *p;(1)在执行如下的每个语句后p的值是什么?p=stchr(s1,'t'); p=strchr(s2,'9'); p=strchr(s2,'6');(2)在执行下列语句后,s3的值是什么?strcpy(s3,s1); strcat(s3,","); strcat(s3,s2);(3)调用函数strcmp(s1,s2)的返回值是什么?(4)调用函数strcmp(&s1[5],"ton")的返回值是什么?(5)调用函数stlen(strcat(s1,s2))的返回值是什么?解:(1) stchr(*s,c)函数的功能是查找字符c在串s中的位置,若找到,则返回该位置,否则返回NULL。

数据结构课后习题及解析第四章

数据结构课后习题及解析第四章

11. 写算法,实现顺序串的基本操作 StrReplace(&s,t,v)r1 中第 index 个字符起求出首次与串 r2 相同的子串的起始位置。

写一个函数将顺序串 s1 中的第 i 个字符到第 j 个字符之间的字符用 s2 串替换。

写算法,实现顺序串的基本操作 StrCompare(s,t) 。

第四章习题1. 设 s=' I AM A STUDENT , t= ' GOO D,q=' WORKER 给出下列操作的结果: StrLength(s); SubString(sub1,s,1,7);SubString(sub2,s,7,1);StrIndex(s, ' A ' ,4); StrReplace(s, ' STUDEN 'T,q); StrCat(StrCat(sub1,t), StrCat(sub2,q));2. 编写算法,实现串的基本操作 StrReplace(S,T,V) 。

3. 假设以块链结构表示串,块的大小为 1,且附设头结点。

试编写算法,实现串的下列基本操作:StrAsign(S,chars) ; StrCopy(S,T) ; StrCompare(S,T) ; StrLength(S) ; StrCat(S,T) ; SubString(Sub,S,pos,len) 。

4. 叙述以下每对术语的区别:空串和空格串;串变量和串常量;主串和子串;串变量的名字和串变 量的值。

5. 已知:S=”(xyz)* ” ,T= ”(x+z)*y ”。

试利用联接、求子串和置换等操作,将 S 转换为T. 6. S 和T 是用结点大小为1的单链表存储的两个串,设计一个算法将串 S 中首次与T 匹配的子串逆 置。

7. S 是用结点大小为4的单链表存储的串,分别编写算法在第k 个字符后插入串T ,及从第k 个字符 删除 len 个字符。

最新版《数据结构》各章习题及答案

最新版《数据结构》各章习题及答案

最新版《数据结构》各章习题及答案第一章绪论一、选择题1.组成数据的基本单位是()(A)数据项(B)数据类型(C)数据元素(D)数据变量2.数据结构是研究数据的()以及它们之间的相互关系。

(A)理想结构,物理结构(B)理想结构,抽象结构(C)物理结构,逻辑结构(D)抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。

① (A)数据元素(B)计算方法(C)逻辑存储(D)数据映像② (A)结构(B)关系(C)运算(D)算法5.算法分析的目的是()。

(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性6.计算机算法指的是(①),它必须具备输入、输出和(②)等5 个特性。

① (A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法② (A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。

()2.算法就是程序。

()3.数据元素是数据的最小单位。

()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。

()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。

()三、填空题1.数据逻辑结构包括________、________、_________ 和__________ 四种类型,其中树形结构和图形结构合称为_____ 。

2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______ 个前驱结点;最后一个结点______后续结点,其余每个结点有且只有 _______ 个后续结点。

3.在树形结构中,树根结点没有_______ 结点,其余每个结点有且只有_______个前驱结点;叶子结点没有 ________ 结点,其余每个结点的后续结点可以_________。

数据结构答案第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是当前非零元素的个数,整除即为其所在行号,取余表示当前行中第几个非零元素,加上前面零元素所在列数就是当前列号,即:

数据结构第4章作业参考答案

数据结构第4章作业参考答案

第4章(数组和广义表)作业参考答案一、单项选择题1.将一个A[1..100,1..100]的三对角矩阵,按行优先压缩存储到一维数组B[1‥298]中,A 中元素A[66][65]在B数组中的位置K为(C )。

A. 198B. 197C. 195D. 1962.广义表(a,(b,c),d,e)的表头为( A )。

A. aB. a,(b,c)C. (a,(b,c))D. (a)3.在三对角矩阵中,非零元素的行标i和列标j的关系是( A )。

A. |i-j|≤1B. i>jC. i==jD. i<j4.广义表L=(a,(b,c)),进行Tail(L)操作后的结果为( D )。

A. cB. b,cC.(b,c)D.((b,c))5.设二维数组A[1..m,1..n](即m行n列)按行存储在数组B[1..m*n]中,则二维数组元素A[i,j]在一维数组B中的下标为( D )。

A. j*m+i-1B. (i-1)*n+j-1C. i*(j-1)D. (i-1)*n+j6.广义表(( ),( ),( ))的深度为( C )。

A. 0B. 1C. 2D. 37.假设以行序为主序存储二维数组A[0..99,0..99],设每个数据元素占2个存储单元,基地址为10,则LOC(A[4][4])=( C )。

A. 1020B. 1010C. 818D. 8088.已知广义表A=((a,b),(c,d)),则head(A)等于( A )。

A. (a,b)B. ((a,b))C. a,bD. a9.已知一个稀疏矩阵的三元组表如下:(1,2,3),(1,6,1),(3,1,5),(3,2,-1),(4,5,4),(5,1,-3)则其转置矩阵的三元组表中第3个三元组为( C )。

A. (2,3,-1)B. (3,1,5)C. (2,1,3)D. (3,2,-1)10.广义表((b,c),d,e)的表尾为( C )。

数据结构第五章参考答案

数据结构第五章参考答案

习题51.填空题(1)已知二叉树中叶子数为50,仅有一个孩子的结点数为30,则总结点数为(___________)。

答案:129(2)3个结点可构成(___________)棵不同形态的二叉树。

答案:5(3)设树的度为5,其中度为1~5的结点数分别为6、5、4、3、2个,则该树共有(___________)个叶子。

答案:31(4)在结点个数为n(n>1)的各棵普通树中,高度最小的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

高度最大的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

答案:2 n-1 1 n 1 n-1(5)深度为k的二叉树,至多有(___________)个结点。

答案:2k-1(6)(7)有n个结点并且其高度为n的二叉树的数目是(___________)。

答案:2n-1(8)设只包含根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为(___________),最小结点数为(___________)。

答案:2k+1-1 k+1(9)将一棵有100个结点的完全二叉树按层编号,则编号为49的结点为X,其双亲PARENT (X)的编号为()。

答案:24(10)已知一棵完全二叉树中共有768个结点,则该树中共有(___________)个叶子结点。

答案:384(11)(12)已知一棵完全二叉树的第8层有8个结点,则其叶子结点数是(___________)。

答案:68(13)深度为8(根的层次号为1)的满二叉树有(___________)个叶子结点。

答案:128(14)一棵二叉树的前序遍历是FCABED,中序遍历是ACBFED,则后序遍历是(___________)。

答案:ABCDEF(15)某二叉树结点的中序遍历序列为ABCDEFG,后序遍历序列为BDCAFGE,则该二叉树结点的前序遍历序列为(___________),该二叉树对应的树林包括(___________)棵树。

数据结构课后习题与解析第四章

数据结构课后习题与解析第四章

第四章习题1. 设s=’I AM A STUDENT’, t=’GOOD’, q=’WORKER’。

给出下列操作的结果:StrLength(s); SubString(sub1,s,1,7); SubString(sub2,s,7,1);StrIndex(s,’A’,4); StrReplace(s,’STUDENT’,q);StrCat(StrCat(sub1,t), StrCat(sub2,q));2. 编写算法,实现串的基本操作StrReplace(S,T,V)。

3. 假设以块链结构表示串,块的大小为1,且附设头结点。

试编写算法,实现串的下列基本操作:StrAsign(S,chars);StrCopy(S,T);StrCompare(S,T);StrLength(S);StrCat(S,T);SubString(Sub,S,pos,len)。

4.叙述以下每对术语的区别:空串和空格串;串变量和串常量;主串和子串;串变量的名字和串变量的值。

5.已知:S=”(xyz)*”,T=”(x+z)*y”。

试利用联接、求子串和置换等操作,将S转换为T. 6.S和T是用结点大小为1的单链表存储的两个串,设计一个算法将串S中首次与T匹配的子串逆置。

7.S是用结点大小为4的单链表存储的串,分别编写算法在第k个字符后插入串T,及从第k个字符删除len个字符。

以下算法用定长顺序串:8.编写下列算法:(1)将顺序串r中所有值为ch1的字符换成ch2的字符。

(2)将顺序串r中所有字符按照相反的次序仍存放在r中。

(3)从顺序串r中删除其值等于ch的所有字符。

(4)从顺序串r1中第index 个字符起求出首次与串r2相同的子串的起始位置。

(5)从顺序串r中删除所有与串r1相同的子串。

9.写一个函数将顺序串s1中的第i个字符到第j个字符之间的字符用s2串替换。

10.写算法,实现顺序串的基本操作StrCompare(s,t)。

数据结构课后习题(第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 为 。

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

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

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

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

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

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

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

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

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

数据结构第四章实习题答案

数据结构第四章实习题答案

数据结构第四章实习题答案数据结构第四章实习题答案第一题:给定一个长度为n的整数数组nums,找出数组中任意两个元素之间的最大差值,并返回这个差值。

解答:首先,我们可以对数组进行排序,然后遍历排序后的数组,计算相邻元素之间的差值,并找出最大的差值即可。

具体实现如下:```int maximumGap(vector<int>& nums) {if(nums.size() < 2) return 0;sort(nums.begin(), nums.end());int maxGap = 0;for(int i = 1; i < nums.size(); i++) {maxGap = max(maxGap, nums[i] - nums[i-1]);}return maxGap;}```第二题:给定一个字符串s,找出其中最长的回文子串,并返回该子串。

我们可以使用动态规划的方法来解决这个问题。

定义一个二维数组dp,其中dp[i][j]表示字符串s从第i个字符到第j个字符是否为回文子串。

那么,如果dp[i+1][j-1]为true且s的第i个字符和第j个字符相等,那么dp[i][j]也为true。

具体实现如下:```string longestPalindrome(string s) {int n = s.size();vector<vector<bool>> dp(n, vector<bool>(n, false));string ans;for(int len = 1; len <= n; len++) {for(int i = 0; i <= n - len; i++) {int j = i + len - 1;if(len == 1) {dp[i][j] = true;} else if(len == 2) {dp[i][j] = (s[i] == s[j]);} else {dp[i][j] = (dp[i+1][j-1] && s[i] == s[j]);}if(dp[i][j] && len > ans.size()) {ans = s.substr(i, len);}}return ans;}```第三题:给定一个整数数组nums,找出其中出现次数超过n/2的元素,并返回该元素。

数据结构答案第4章

数据结构答案第4章

数据结构答案第4章本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March第 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章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现?5.选择题(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)以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈6.试分析下面各程序段的时间复杂度。

(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(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.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。

数据结构1-5章习题参考答案

数据结构1-5章习题参考答案

第1章绪论一、填空题01、【操作对象】【关系和运算】02、【数据元素】【关系】03、【逻辑结构】【存储结构】【运算】04、【线性结构】【非线性结构】05、【一对一】【一对多】【多对多】06、【没有】【没有】07、【前驱】【1】【后续】【任意多个】08、【任意多个】09、【顺序】【链式】【索引】【散列】10、【集合】【线性结构】【树形结构】【图状结构】11、【插入】【删除】【修改】【查找】【排序】12、【时间】【空间】13、【时间复杂度】【空间复杂度】14、【映射】15、【有穷性】【确定性】【可行性】16、【n+1】【n】【n(n+3)/2】【n(n+1)/2】17、【n(n+1)(n+2)/6】【O(n3)】18、【O(n2 log)】19、【O(nn2 log)】20、【O(22log n)】21、【(n+3)(n-2)/2】22、【n(n-1)/2】二、判断题01-05、×××√×06-10、×√×××11-12、√×三、单项选择题B01 BD02 A03 C04 C05A06 C07 B08 A09 C10B11 A12 C13 D14 A15C16四、分析下面各程序段的时间复杂度01、O(nm )02、O(2n)03、答:O(2n)04、答:O(n3 log)五、设有数据逻辑结构S=(D,R),试按各小题所给条件画出这些逻辑结构的图示,并确定相对于关系R,哪些结点是开始结点,哪些结点是终端结点?01、此图为线性结构d1→d2→d3→d4d1—无直接前驱,是首结点d4—无直接后继是尾结点02、此图为树形结构d1—无直接前驱,是根结点d2,d5,d7,d9—无直接后继是叶子结点03、此图为图形结构d1,d2—无直接前驱,是开始结点d6,d7—无直接后继是终端结点六、简述题01、什么是数据结构?答:数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科。

数据结构(C语言版)习题及答案第四章

数据结构(C语言版)习题及答案第四章

习题4.1选择题1、空串与空格串是(B)。

A、相同B、不相同C、不能确定2、串是一种特殊的线性表,其特殊性体现在(B)。

A、可以顺序存储B、数据元素是一个字符C、可以链式存储D、数据元素可以是多个字符3、设有两个串p和q,求q在p中首次出现的位置的操作是(B)。

A、连接B、模式匹配C、求子串D、求串长4、设串s1=“ABCDEFG”,s2=“PQRST”函数strconcat(s,t)返回s和t串的连接串,strsub(s,i,j)返回串s中从第i个字符开始的、由连续j个字符组成的子串。

strlength(s)返回串s的长度。

则strconcat(strsub(s1,2,strlength(s2)),strsub(s1,strlength(s2),2))的结果串是(D)。

A、BCDEFB、BCDEFGC、BCPQRSTD、BCDEFEF5、若串s=“software”,其子串个数是(B)。

A、8B、37C、36D、94.2简答题1、简述空串与空格串、主串与子串、串名与串值每对术语的区别?答:空串是指长度为0的串,即没有任何字符的串。

空格串是指由一个或多个空格组成的串,长度不为0。

子串是指由串中任意个连续字符组成的子序列,包含子串的串称为主串。

串名是串的一个名称,不指组成串的字符序列。

串值是指组成串的若干个字符序列,即双引号中的内容。

2、两个字符串相等的充要条件是什么?答:条件一是两个串的长度必须相等条件二是串中各个对应位置上的字符都相等。

3、串有哪几种存储结构?答:有三种存储结构,分别为:顺序存储、链式存储和索引存储。

4、已知两个串:s1=”fg cdb cabcadr”, s2=”abc”, 试求两个串的长度,判断串s2是否是串s1的子串,并指出串s2在串s1中的位置。

答:(1)串s1的长度为14,串s2的长度为3。

(2)串s2是串s1的子串,在串s2中的位置为9。

5、已知:s1=〃I’m a student〃,s2=〃student〃,s3=〃teacher〃,试求下列各操作的结果:strlength(s1);答:13strconcat(s2,s3);答:”studentteachar”strdelsub(s1,4,10);答:I’m6、设s1=”AB”,s2=”ABCD”,s3=”EFGHIJK,试画出它们在各种存储结构下的结构图。

数据结构课后习题(第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的数据元素。

数据结构 第4章答案(已核 )

数据结构 第4章答案(已核 )

4.7习题一、选择(1)串是()。

A 不少于一个字母和序列B 任意个字母的序列C 不少于一个字符的序列D 有限个字符的序列(2)串的长度是()。

A 串中不同字母的个数B 串中不同字符的个数C 串中所含字符的个数,且大于0D 串中所含字符的个数(3)设串s1=‘abcdefg’,s2=‘pqrst’,函数CON(X,Y)返回X和串的连接串,SUB (S,I,J)返回串S的从序号I的字符开始的J个字符组成的子串,LEN(S)返回串S的长度,则CON(SUB(s1,2,LEN(s2)),SUB(s1,LEN(s2),2))的结果串是()。

A bcdefB bcdefgC bcpqrstD bcdefef注释:CON(SUB(s1,2,LEN(s2)), SUB(s1,LEN(s2),2))= CON(SUB(s1,2,5), SUB(s1,5,2))= CON(bcdef, ef)=bcdefef(4)数组A[1:5][1:6]的每个元素占5个单元,将其按行优先次序存储在起始起址为1000的连续的内存单元中,则元素A[5,5]的地址为(A)。

A 1140B 1145C 1120D 1125注释:该数组为5行6列,按照公式:Loc[i, j]=Loc[1,1] + (n×(i-1)+j-1)×size,其中m=5,n=6, size=5 ,那么Loc[5, 5]=Loc[1,1] + (6×(5-1)+5-1)×5=1140(5)对矩阵压缩存储是为了()。

A 方便运算B 节省空间C 方便存储D 提高运算速度(6)数组通常具有的两种基本操作是()。

A 插入与删除B 索引和修改C 查找和修改D 查找与删除注释:数组,连续存储,不适合经常插入和删除;适合经常查找和修改(定位后修改某单元内的值,单元个数和单元之间的逻辑顺序不做修改。

)(7)二维数组M[i,j]的行下标i的范围从0到4,列下标j的范围从0到5,M按行存储时元素M[3,5]的起始地址与M按列存储时元素()的起始地址相同。

数据结构课后习题答案第四章

数据结构课后习题答案第四章

第四章串一、单项选择题1.B2. B3.B4.C5. C二、填空题1.空、字符2.由空格字符(ASCII值32)所组成的字符串空格个数3.长度、相等、子、主4.55.011223126.(1)char s[ ] (2) j++ (3) i >= j7.[题目分析]本题算法采用顺序存储结构求串s和串t的最大公共子串。

串s用i指针(1<=i<=s.len)。

t串用j指针(1<=j<=t.len)。

算法思想是对每个i(1<=i<=s.len,即程序中第一个WHILE循环),来求从i开始的连续字符串与从j(1<=j<=t.len,即程序中第二个WHILE循环)开始的连续字符串的最大匹配。

程序中第三个(即最内层)的WHILE循环,是当s中某字符(s[i])与t中某字符(t[j])相等时,求出局部公共子串。

若该子串长度大于已求出的最长公共子串(初始为0),则最长公共子串的长度要修改。

(1) i+k<=s.len && j+k<=t.len && s[i+k]==t[j+k] //所有注释同上(a)(2) con=0 (3) j+=k (4) j++ (5) i++三、应用题1.空格是一个字符,其ASCII码值是32。

空格串是由空格组成的串,其长度等于空格的个数。

空串是不含任何字符的串,即空串的长度是零。

2.(a)A+B “ mule”(b)B+A “mule ”(c)D+C+B “myoldmule”(d)SUBSTR(B,3,2) “le”(e)SUBSTR(C,1,0) “”(f)LENGTH(A) 2(g)LENGTH(D) 2(h)INDEX(B,D) 0(i)INDEX(C,”d”) 3(j)INSERT(D,2,C) “myold”(k)INSERT(B,1,A) “m ule”(l)DELETE(B,2,2) “me”(m)DELETE(B,2,0) “mule”3.朴素的模式匹配(Brute-Force)时间复杂度是O(m*n),KMP算法有一定改进,时间复杂度达到O(m+n)。

数据结构各章习题及答案!

数据结构各章习题及答案!

数据结构习题及解答第1章 概述【例1-1】分析以下程序段的时间复杂度。

for(i=0;i<n;i++) for(j=0;j<m;j++) A[i][j]=0;解:该程序段的时间复杂度为O (m*n )。

【例1-2】分析以下程序段的时间复杂度。

i=s=0; ① while(s<n) { i++; ② s+=i; ③ }解:语句①为赋值语句,其执行次数为1次,所以其时间复杂度为O (1)。

语句②和语句③构成while 循环语句的循环体,它们的执行次数由循环控制条件中s 与n 的值确定。

假定循环重复执行x 次后结束, 则语句②和语句③各重复执行了x 次。

其时间复杂度按线性累加规则为O (x )。

此时s 与n 满足关系式:s ≥n ,而s=1+2+3+…+x 。

所以有:1+2+3+…+x ≥n ,可以推出:x=nn 241212811+±-=+±-x 与n 之间满足x=f(n ),所以循环体的时间复杂度为O (n ),语句①与循环体由线性累加规则得到该程序段的时间复杂度为O (n )。

【例1-3】分析以下程序段的时间复杂度。

i=1; ① while(i<=n) i=2*i; ②解:其中语句①的执行次数是1,设语句②的执行次数为f (n ),则有:n n f ≤)(2。

log)得:T(n)=O(n2【例1-4】有如下递归函数fact(n),分析其时间复杂度。

fact(int n){ if(n<=1)return(1);①elsereturn(n*fact(n-1));②}解:设fact(n)的运行时间函数是T(n)。

该函数中语句①的运行时间是O(1),语句②的运行时间是T(n-1)+ O(1),其中O(1)为常量运行时间。

由此可得fact(n)的时间复杂度为O(n)。

习题1一、单项选择题1.数据结构是指(1. A )。

A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(2. C )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

序为主序顺序存储,则元素 a[32,58]的存储地址为 8950
答:不考虑 0 行 0 列,利用列优先公式: LOC(aij)=LOC(ac1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L
得:LOC(a32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=8950
9. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素
的 行下标 、 列下标 和 元素值
10.求下列广义表操作的结果:
(1) GetHead【((a,b),(c,d))】=== (a, b)
(2) GetHead【GetTail【((a,b),(c,d))】】=== (c,d) ;
元素 A47 的第一个字节地址为 (6×7+4)×6+1000)=1276
(注:数组是从 0 行 0 列还是从 1 行 1 列计算起呢?由末单元为 A57 可知,是从 0 行 0 列开始!)
8. 〖00 年计算机系考研题〗设数组 a[1…60, 1…70]的基地址为 2048,每个元素占 2 个存储单元,若以列
D.数据元素可以是多个字符
6.培养学生观察、思考、对比及分析综合的能力。过程与方法1.通过观察蚯蚓教的学实难验点,线培形养动观物察和能环力节和动实物验的能主力要;特2征.通。过教对学观方察法到与的教现学象手分段析观与察讨法论、,实对验线法形、动分物组和讨环论节法动教特学征准的备概多括媒,体继课续件培、养活分蚯析蚓、、归硬纳纸、板综、合平的面思玻维璃能、力镊。子情、感烧态杯度、价水值教观1和.通过学理解的蛔1虫.过观适1、察于程3观阅 六蛔寄.内列察读 、虫生出蚯材 让标容生常3根蚓料 学本教活.见了 据身: 生,师的2的、解 问体巩鸟 总看活形线作 用蛔 题的固类 结雌动态形业 手虫 自形练与 本雄学、三动: 摸对 学状习人 节蛔生结、4物、收 一人 后和同类 课虫活构请一并蚯集 摸体 回颜步关 重的动、学、归蚓鸟 蚯的 答色学系 点形教生生让纳在类 蚓危 问。习从 并状学理列学线平的害 题蚯四线人 归、意特出四生形面生 体以蚓、形类 纳大图点常、五观动玻存 表及的鸟请动文 本小引以见引、察物璃现 ,预身类 3学物明 节有言及的导 、巩蚯的上状 是防体之生和历 课什根蚯环学 怎固蚓主和, 干感是所列环史 学么据蚓节二生 样练引要牛鸟 燥染否以举节揭 到不上适动、回 区习导特皮类 还的分分蚯动晓 的同节于物让答 分。学征纸减 是方节布蚓物起 一,课穴并学课 蚯生。上少 湿法?广的教, 些体所居归在生前 蚓回4运的 润;泛益学鸟色生纳.靠物完问 的答蛔动原 的4,处目类 习和活环.近在成题 前蚯虫的因 ?了以。标就 生体的节身其实并 端蚓寄快及 触解上知同 物表内特动体结验总 和的生利慢我 摸蚯适识人 学有容点物前构并结 后生在用一国 蚯蚓于与类 的什,的端中思线 端活人问样的 蚓飞技有 基么引进主的的考形 ?环体题吗十生行能着 本特出要几变以动境,?大 节活的1密 方征本“特节化下物.并会让为珍 近习形理切 法。课生征有以问的引小学什稀 腹性态解的 。2课物。什游题主.出起结生么鸟 面和结蛔关观题体么戏:要蚯哪利明?类 处适构虫系察:的特的特蚓些用确等 ,于特适。蛔章形殊形征这疾板,资 是穴点于可虫我态结式。种病书生料 光居是寄的们结构,五典?小物, 滑生重生鸟内学构,学、型5结的以 还活要生类部习与.其习巩的如鸟结爱 是的原活生结了功颜消固线何类构鸟 粗形因的存构腔能色化练形预适特护 糙态之结的,肠相是系习动防于点鸟 ?、一构现你动适否统。物蛔飞都为结。和状认物应与的。虫行是主构课生却为和”其结病的与题、本理不蛔扁的他构?特环以生8特乐虫形观部特8三征境小理页点观的动位点、梳相组等这;,哪物教相,引理适为方些2鸟,育同师.导知应单面鸟掌类结了;?生学识的位你握日构解2互.生。办特认线益特了通动观手征识形减点它过,察抄;吗动少是们理生蛔报5?物,与的解.参虫一了它和有寄主蛔与结份解们环些生要虫其构。蚯都节已生特对中。爱蚓会动经活征人培鸟与飞物灭相。类养护人吗的绝适这造兴鸟类?主或应节成趣的为要濒的课情关什特临?就危感系么征灭来害教;?;绝学,育,习使。我比学们它生可们理以更解做高养些等成什的良么两好。类卫动生物习。惯根的据重学要生意回义答;的3.情通况过,了给解出蚯课蚓课与题人。类回的答关:系线,形进动行物生和命环科节学动价环值节观动的物教一育、。根教据学蛔重虫点病1.引蛔出虫蛔适虫于这寄种生典生型活的线结形构动和物生。理二特、点设;置2.问蚯题蚓让的学生生活思习考性预和习适。于穴居生活的形态、结构、生理等方面的特征;3.线形动物和环节动物的主要特征。
7. 假设有二维数组 A6×8,每个元素用相邻的 6 个字节存储,存储器按字节编址。已知 A 的起始存储位置
(基地址)为 1000,则数组 A 的体积(存储量)为 288 B ;末尾元素 A57 的第一个字节地址为
1282 ;若按行存储时,元素 A14 的第一个字节地址为 (8+4)×6+1000=1072 ;若按列存储时,
〖李〗串是一种特殊的线性表,其特殊性体现在:
A.可以顺序存储
C.可以链式存储
( B )2. 〖李〗设有两个串 p 和 q,求 q 在 p 中首次出现的位置的运算称作:
1
;

B.数据元素是一个字符
, “/”的字符定位的位置为 3 。


//头元素不必加括号
第 4~5 章 串、数组和广义表 习题答案 一、填空题(每空 1 分,共 20 分)
1. 不包含任何字符(长度为 0)的串 称为空串; 由一个或多个空格(仅由空格符)组成的串 称为空白串。 (对应严题集 4.1①,简答题:简述空串和空格串的区别)
2. 设 S=“A;/document/Mary.doc”,则 strlen(s)= 20
(3) GetHead【GetTail【GetHead【((a,b),(c,d))】】】=== b ;
(4) GetTail【GetHead【GetTail【((a,b),(c,d))】】】=== (d)
11.模式串 p=“abaabcac”的 next 函数值序列为 01122312 。
12.模式串 p=“ababaaab”的 nextval 函数值序列为 01010421。
4. 子串的定位运算称为串的模式匹配; 被匹配的主串 称为目标串, 子串 称为模式。
5. 设目标 T=”abccdcdccbaa”,模式 P=“cdcc”,则第 6 次匹配成功。
6. 若 n 为主串长,m 为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为 (n-m+1)*m 。
相关文档
最新文档