数据结构第四章考试题库(含答案)
数据结构1-4章习题答案
第1章概论习题参考解答一、填空题1、数据的逻辑结构是数据元素之间的逻辑关系,通常有下列4类:()、()、()、()。
【答】集合、线性结构、树型结构和图状结构。
2、数据的存储结构是数据在计算机存储器里的表示,主要有4种基本存储方法:()、()、()、()。
【答】顺序存储方法、链接存储方法、索引存储方法和散列存储方法。
二、选择题1、一个算法必须在执行有穷步之后结束,这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】B。
2、算法的每一步,必须有确切的定义。
也就是说,对于每步需要执行的动作必须严格、清楚地给出规定。
这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】C。
3、算法原则上都是能够由机器或人完成的。
整个算法好像是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作。
这是算法的()。
(A)正确性(B)有穷性(C)确定性(D)可行性【答】D。
三、简答题1、算法与程序有何异同?【答】尽管算法的含义与程序非常相似,但两者还是有区别的。
首先,一个程序不一定满足有穷性,因此它不一定是算法。
例如,系统程序中的操作系统,只要整个系统不遭受破坏,它就永远不会停止,即使没有作业要处理,它仍处于等待循环中,以待一个新作业的进入。
因此操作系统就不是一个算法。
其次,程序中的指令必须是计算机可以执行的,而算法中的指令却无此限止。
如果一个算法采用机器可执行的语言来书写,那么它就是一个程序。
2、什么是数据结构?试举一个简单的例子说明。
【答】数据结构是指数据对象以及该数据对象集合中的数据元素之间的相互关系(即数据元素的组织形式)。
例如,队列的逻辑结构是线性表(先进先出);队列在计算机中既可以采用顺序存储也可以采用链式存储;对队列可进行删除、插入数据元素以及判断是否为空队列、将队列置空等操作。
3、什么是数据的逻辑结构?什么是数据的存储结构?【答】数据元素之间的逻辑关系,也称为数据的逻辑结构。
数据结构课后习题答案第四章
第四章一、简述下列每对术语的区别:空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串;目标串和模式串;有效位移和无效位移。
答:●空串是指不包含任何字符的串,它的长度为零。
空白串是指包含一个或多个空格的串,空格也是字符。
●串常量是指在程序中只可引用但不可改变其值的串。
串变量是可以在运行中改变其值的。
●主串和子串是相对的,一个串中任意个连续字符组成的串就是这个串的子串,而包含子串的串就称为主串。
●静态分配的顺序串是指串的存储空间是确定的,即串值空间的大小是静态的,在编译时刻就被确定。
动态分配的顺序串是在编译时不分配串值空间,在运行过程中用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。
数据结构考试题库含答案
数据结构考试题库含答案数据结构习题集含答案⽬录⽬录 (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)第九章排序 (52)选择题第⼀章绪论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 )。
(完整word版)数据结构试题试卷四含答案
模拟试题四模拟试题四一、选择题(20分)1。
由两个栈共享一个存储空间的好处是()。
A)减少存取时间,降低下溢发生的几率B)节省存储空间,降低上溢发生的几率C)减少存取时间,降低上溢发生的几率D)节省存储空间,降低下溢发生的几率2。
设有两个串p和q,求q在p中首次出现位置的运算称做()。
A)连接B)模式匹配 C)求子串D)求串长3。
n个顶点的连通图中边的条数至少为()。
A)0 B)l C)n—l D)n4.对一个具有n个元素的线性表,建立其有序单链表的时间复杂度为( )。
A)O(n)B)O(1)C)O(n2) D) O(log2n)5.在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是( )。
A) p—>next=s; s—〉prior=n;p->next—>prior=s;s-〉next:p->next。
B) s—〉priOFp;s->next—p->next;p—>next=s; p—〉next->priOFS.C) p-〉next=s;p-〉next—〉priOFS; s->prior=p; s-〉next=p—〉next.D) s—>prior=p; s-〉next=p—〉next; p-〉next—〉priOFS;p-〉next=S.6,串的长度是( ).A)串中不同字符的个数 B)串中不同字母的个数C)串中所含字符的个数n(n>0) D)串中所含字符的个数n(n≥0)7.若有一个钱的输入序列是l,2,…,n,输出序列的第一个元素是n,则第i个输出元素是()。
A) n—i B) n—i—l C)n—i+l D)不确定8.设有一个栈,元素的进栈次序为A,B,C,D,E,下列( )是不可能的出栈序列。
A) A,B,C,D,E B)B,C, D,E,AC)E,A, B,C,D D)E,D, C,B,A9。
在一棵度为3的树中,度为3的结点数有2个,度为2的结点数有1个,度为l的结点数有2个,那么度为0的结点数有()个。
数据结构第4单元课后练习答案
对于三个结点A,B和C,可分别组成多少 不同的无序树、有序树和二叉树?
答:(1)无序树:9棵 (2)有序树:12棵 (3)二叉树:30棵
高度为h的k叉树的特点是:第h层的节点度为 0,其余结点的度均为k。如果按从上到下, 从左到右的次序从1开始编号,则: ①各层的结点是多少? ②编号为i的结点的双亲的编号是多少? ③编号为i的结点的第m个孩子的编号是多少? ④编号为i的结点的有右兄弟的条件是什么?
写出下面得二叉树的遍历结果。
先序:ADEHFJGBCK 中序:HEJFGDABKC 后序:HJGFEDKCBA
设计算法,交换一棵二叉树中每个结点 的左、右子树。
template <class T> void BTree<T>::Exch(BTNode<T> *p){ if (p){ BTNode<T> *q=Exch(p->lchild); p->lchild=Exch(p->rchild); p->rchild=q; } }
试证明在哈夫曼算法的实施过程中,二叉树森林中的每 一棵子树都是Huffman树。
证明: 在Huffman算法进行的每一步,都会有一棵新的二叉树产生,它是合并 原来森林中根结点权值最小的两棵子树而得来的。假设此二叉树为T。 取T的根为一棵独立的子树,则它是一棵Huffman树,将此结点向下分 解,仍然得到一棵Huffman树。 此后,按照与T的形成过程相反的顺序依次分解各叶结点。由于在每次 分解时,新产生的两个叶结点在Huffman算法过程中,都是待合并子树根 结点中权值最小的,也就必然在本二叉树中是权值最小的两个叶结点。 根据前面的定理可知,T是一棵Huffman树。
数据结构第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 )。
数据结构 第1-4章选择题(有 答案)
2."1的末尾,它是小于或等于1的一个实数。
(8)将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()。
A.n
B.2n-
1
C.2n
D.n-1
说明:
合并两个有序表的算法见课本算法
2."15和算法
2."1
6。"当两个表中的一个完全排在另一个表的前面时,比较的次数最少,此时只是后面表中的第一个元素与前面表中的元素逐一比较一次,然后就直接将两个表连接起来。
D.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。
(11)若指定有n个元素的向量,则建立一个有序单链表的时间复杂性的量级是()。
2A.O
(1)
B.O(n)
C.O(n)
D.O(nlog
2n)说明:
这道题其实有些问题。若题目的意思是,有n个元素,事先我们不知道元素的大小次序,我们依此将这些元素一个个插入单链表中并且使得单链表有序。注意这是单链表,第8章的一些快速排序算法在这里用不上。因为是单链表,每次插入一个元素,只能从表头开始逐一比较,寻找插入的位置。在最坏的情况下,需要比较n(n-1)/2次,时间复杂性为O(n2)。但平均却是O(n)。
A.r-f
B.(n+f-r)%n
C.n+r-f
D.(n+r-f)%n说明:
当用数组表示循环队列时,f、r是数组元素的下脚标。由于是循环的,所以有可能r<f。若r>f,则r-f即为队列的元素个数;当r<意当r>f时,(n+r-f)%n=(r-f)%n=r-f。
(4)链式栈结点为:
说明:
数据结构考试题库含答案
数据构造习题集含答案目录目录1选择题2第一章绪论2第二章线性表4第三章栈和队列6第四章串7第五章数组和广义表8第六章树和二叉树8第七章图11第八章查找13第九章排序14简答题19第一章绪论19第二章线性表22第三章栈和队列24第四章串26第五章数组和广义表27第六章树和二叉树28第七章图31第八章查找31第九章排序32编程题34第一章绪论34第二章线性表34第三章栈和队列45第四章串45第五章数组和广义表45第六章树和二叉树45第七章图45第八章查找45第九章排序50选择题第一章绪论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 〕。
《数据结构(C语言版 第2版)》(严蔚敏 著)第四章练习题答案
《数据结构(C语言版第2版)》(严蔚敏著)第四章练习题答案第4章串、数组和广义表1.选择题(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.010104101B.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。
数据结构第四章实习题答案
数据结构第四章实习题答案数据结构第四章实习题答案第一题:给定一个长度为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章答案
一、填空题(每空1分,共15分)1. 向量、栈和队列都是线性结构,可以在向量的任何位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。
2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。
不允许插入和删除运算的一端称为栈底。
3. 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
4. 在一个循环队列中,队首指针指向队首元素的前一个位置。
5. 在具有n个单元的循环队列中,队满时共有n-1 个元素。
6. 向栈中压入元素的操作是先存入元素,后移动栈顶指针。
7.从循环队列中删除一个元素时,其操作是先移动队首指针,后取出元素。
8.带表头结点的空循环双向链表的长度等于0。
二、判断正误(判断下列概念的正确性,并作出简要的说明。
)(每小题1分,共10分)(×)1. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
(×)2. 在表结构中最常用的是线性表,栈和队列不太常用。
(√)3. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。
(√)4. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。
(×)5. 栈和链表是两种不同的数据结构。
(×)6. 栈和队列是一种非线性数据结构。
(√)7. 栈和队列的存储方式既可是顺序方式,也可是链接方式。
(√)8. 两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。
(×)9. 队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。
(×)10. 一个栈的输入序列是12345,则栈的输出序列不可能是12345。
三、单项选择题(每小题1分,共20分)(B)1.栈中元素的进出原则是A.先进先出B.后进先出C.栈空则进D.栈满则出(C)2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为A.i B.n=i C.n-i+1 D.不确定(B)3. 判定一个栈ST(最多元素为m0)为空的条件是A.ST->top<>0 B.ST->top=0 C.ST->top<>m0 D.ST->top=m0(A)4. 判定一个队列QU(最多元素为m0)为满队列的条件是A.QU->rear-QU->front = = m0 B.QU->rear -QU->front -1= = m0 C.QU->front = = QU->rear D.QU->front = = QU->rear+1(D)5.数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为(A)r-f; (B)(n+f-r)% n;(C)n+r-f; (D)(n+r-f)% n6.设有4个数据元素a1、a2、a3和a4,对他们分别进行栈操作或队操作。
数据结构试题库集及答案
数据结构试题库及答案第一章概论一、选择题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、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的()和运算等的学科。
A. 结构B. 关系C. 运算D. 算法10、下面程序段的时间复杂度是()。
i=s=0;while(s<n){i++;s+=i;}A. O(n)B. O(n2)C. O(log2n)D. O(n3)11、抽象数据类型的三个组成部分分别为()。
A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是()。
数据结构(C语言版)第4-5章习题答案
第4~5章串和数组自测卷答案一、填空题(每空1分,共20分)1. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串称为空白串。
(对应严题集4.1①,简答题:简述空串和空格串的区别)2. 设S=“A;/document/Mary.doc”,则strlen(s)= 20 , “/”的字符定位的位置为3。
4. 子串的定位运算称为串的模式匹配;被匹配的主串称为目标串,子串称为模式。
5. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第 6 次匹配成功。
6. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为(n-m+1)*m。
7. 假设有二维数组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列开始!)8. 〖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=89509. 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的行下标、列下标和元素值。
数据结构课后习题和解析第四章
第四章习题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)。
11.写算法,实现顺序串的基本操作StrReplace(&s,t,v)。
数据结构的第4-7习题的答案
4.10 线性表有两种存储结构,即顺序表和单链表。试问: (1)若有N个线性表同时并存,且在处理过程中各表长度会
动态发生变化,线性表的总数也会自动地改变,在此情况下 应选用哪种存储结构?为什么?
应采用链式存储结构,因为采用链式存储时插入删除操作不需 要移动数据元素
(2)若线性表的总数基本稳定,且很少进行插入和删除操作 ,但要以最快的速度存取表中元素,那么应采用哪种存储结 构?为什么?
pq
pq r
rq
head *
A
1
&C
3
$
D
E^
p=NULL r=NULL
Void invert(LinkList &head) { linklist p,q,r;
p=r=NULL; q=head; while(q!=NULL) {r=q->next; q->next=p; p=q; q=r; } head=p; }
3在长度为n的顺序表上进行 插入运算,有几个可插入的 位置?在第i(假设合法)个 位置上插入一个数据元素, 需要向什么方向平移多少个 数据元素?在长度为n的顺 序表上进行删除运算,有几 个可删除的数据元素?删除 第i(假设合法)个位置上的 数据元素,需要向什么方向 平移多少个数据元素?
1
2
第i个位置上插入,需向右移 动n-i+1个数据元素
Status EnQueue(stack &s1,ElemType x) { if(S1.top==n-1) return 0;
else {Push(s1,x); return 1;}} 时间复杂度T(n)=O(1)
Status DeQueue(stack &s1,Stack &s2,ElemType &x) { ElemType y; While(!StackEmpty(S1))
数据结构第四章考试题库(含答案)
第四章串一、选择题1.下面关于串的的叙述中,哪一个是不正确的?()【北方交通大学 2001 一、5(2分)】A.串是字符的有限序列 B.空串是由空格构成的串C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储2 若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,i ndex(S2,‘8’),length(S2))) 其结果为()【北方交通大学 1999 一、5 (25/7分)】A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345E.ABC###G1234 F.ABCD###1234 G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串 B.联接 C.匹配 D.求串长【北京邮电大学 2000 二、4(20/8分)】【西安电子科技大学 1996 一、1 (2分)】4.已知串S=‘aaab’,其Next数组值为()。
【西安电子科技大学 1996 一、7 (2分)】A.0123 B.1123 C.1231 D.12115.串‘ababaaababaa’的next数组为()。
【中山大学 1999 一、7】A.9 B.2 C.6 D.456.字符串‘ababaabab’的nextval 为()A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )【北京邮电大学 1999 一、1(2分)】7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval数组的值为()。
数据结构 第1-4章选择题(有 答案)
第1章绪论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.栈ﻬ第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )。
A.110B.108C.100 D.120说明:计算公式:A+(i-1)*L,A为起始地址,i是元素序号,L是元素长度。
(2)在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是( )。
A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)B.在第i个结点后插入一个新结点(1≤i≤n)C.删除第i个结点(1≤i≤n)D.将n个结点从小到大排序(3) 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为( )。
数据结构单元4练习参考答案
单元测验4一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)(√)(1)队列是限制在两端进行操作的线性表。
(√)(2)判断顺序队列为空的标准是头指针和尾指针都指向同一个结点。
(×)(3)在链队列上做出队操作时,会改变front指针的值。
(√)(4)在循环队列中,若尾指针rear大于头指针front,其元素个数为rear- front。
(×)(5)在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是p=h。
(√)(6)链队列在一定范围内不会出现队满的情况。
(×)(7)在循环链队列中无溢出现象。
(×)(8)栈和队列都是顺序存储的线性结构。
(×)(9)在队列中允许删除的一端称为队尾。
(×)(10)顺序队和循环队关于队满和队空的判断条件是一样的。
二.填空题(1)在队列中存取数据应遵循的原则是先进先出。
(2)队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
(3)在队列中,允许插入的一端称为队尾。
(4)在队列中,允许删除的一端称为队首(或队头)。
(5)队列在进行出队操作时,首先要判断队列是否为空。
(6)顺序队列在进行入队操作时,首先要判断队列是否为满。
(7)顺序队列初始化后,front=rear= -1 。
(8)解决顺序队列“假溢出”的方法是采用循环队列。
(9)循环队列的队首指针为front,队尾指针为rear,则队空的条件为 front == rear 。
(10)链队列LQ为空时,LQ->front->next= NULL 。
(11)设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为 O(n)。
(12)设长度为n的链队列用单循环链表表示,若只设尾指针,则出队操作的时间复杂度为 0(1)。
(13)在一个链队列中,若队首指针与队尾指针的值相同,则表示该队列为空。
(14)设循环队列的头指针front指向队首元素,尾指针rear指向队尾元素后的一个空闲元素,队列的最大空间为MAXLEN,则队满标志为:front==(rear+1)%MAXLEN 。
数据结构 第四章测验 测验答案 慕课答案 UOOC优课 课后练习 深圳大学
数据结构第四章测验一、单选题 (共100.00分)1. 以下结构中,哪一个是属于逻辑结构()A. 顺序表B. 链栈C. 循环队列D. 串正确答案:D2. 以下哪一种是串在计算机中的常见表示方式()A. 定长顺序B. 堆分配C. 块链D. 前三种都是正确答案:D3. 在数据结构中,串可以等同于()的处理A. 整数串B. 浮点数串C. 字符串D. 多种类型的数组正确答案:C4. 以下哪一种是串匹配的常用算法()A. 普里姆算法B. 克鲁斯卡尔算法C. KMP算法D. 关键路径算法正确答案:C5. 已知主串为abcbcaddabc,模式串为cad,假设串位置从1开始,则串匹配位置是()A. 3B. 5C. 7D. 不存在正确答案:B6. 已知模式串为abaab,则next数组为()A. 1122B. 22312C. 1212D. 1112正确答案:A7. 已知串S的内容为1+2+3,以下描述哪一个是正确的()A. 串S的长度是6B. 串S的运算结果是6C. 整数1是串S的子串D. 符号+是串S的子串正确答案:D8. 以下描述哪一个是正确的()A. 串是字符有限序列B. 串是整数、浮点数、字符等多种数据的有限序列C. 只包含空格的串称为空串D. 串只能使用顺序表存储正确答案:A9. 串的长度是指()A. 串中包含不同字母的个数B. 串中所含字符的个数C. 串中包含不同字符的个数D. 串中包含非空格的字符的个数正确答案:B10. 串函数Sub(S, x, y)表示在串S中,从x位置开始,取出y个字符,串位置从1开始计算。
已知串S内容为Shenzh en,则Sub(S, 2, 3)是()A. SheB. zhenC. ShenD. hen正确答案:D。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章串一、选择题1.下面关于串的的叙述中,哪一个是不正确的()【北方交通大学 2001 一、5(2分)】A.串是字符的有限序列 B.空串是由空格构成的串C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储2 若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘012345’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index (S2,‘8’),length(S2)))其结果为()【北方交通大学 1999 一、5 (25/7分)】A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345E.ABC###G1234 F.ABCD###1234 G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串 B.联接 C.匹配 D.求串长【北京邮电大学 2000 二、4(20/8分)】【西安电子科技大学 1996 一、1 (2分)】4.已知串S=‘aaab’,其Next数组值为()。
【西安电子科技大学 1996 一、7 (2分)】A.0123 B.1123 C.1231 D.12115.串‘ababaaababaa’的next数组为()。
【中山大学 1999 一、7】A.0 B.012121111212 C.0 D.06.字符串‘ababaabab’的nextval 为()A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )【北京邮电大学 1999 一、1(2分)】7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval 数组的值为()。
A.0 1 1 1 2 2 1 1 1 2 3 4 5 6 7 1 2 B.0 1 1 1 2 1 2 1 1 2 3 4 5 6 1 1 2C.0 1 1 1 0 0 1 3 1 0 1 1 0 0 7 0 1 D.0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2E.0 1 1 0 0 1 1 1 0 1 1 0 0 1 7 0 1 F.0 1 1 0 2 1 3 1 0 1 1 0 2 1 7 0 1【北京邮电大学 1998 二、3 (2分)】8.若串S=’software’,其子串的数目是()。
【西安电子科技大学 2001应用一、2(2分)】A.8 B.37 C.36 D.99.设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为()。
【中科院计算所 1997 】A.2n-1 B.n2 C.(n2/2)+(n/2) D.(n2/2)+(n/2)-1 E. (n2/2)-(n/2)-1 F.其他情况10.串的长度是指()【北京工商大学 2001 一、6 (3分)】A.串中所含不同字母的个数 B.串中所含字符的个数C.串中所含不同字符的个数 D.串中所含非空格字符的个数二、判断题1.KMP算法的特点是在模式匹配时指示主串的指针不会变小。
()【北京邮电大学 2002 一、4 (1分)】2.设模式串的长度为m,目标串的长度为n,当n≈m且处理只匹配一次的模式时,朴素的匹配(即子串定位函数)算法所花的时间代价可能会更为节省。
()【长沙铁道学院 1998 一、1 (1分)】3.串是一种数据对象和操作都特殊的线性表。
()【大连海事大学 2001 1、L (1分)】二、填空题1.空格串是指__(1)__,其长度等于___(2)__。
【西安电子科技大学 2001软件一、4(2分)】2.组成串的数据元素只能是________。
【中山大学 1998 一、5 (1分)】3.一个字符串中________称为该串的子串。
【华中理工大学 2000 一、3(1分)】4.INDEX(‘DATASTRUCTURE’,‘STR’)=________。
【福州大学 1998 二、4 (2分)】5.设正文串长度为n,模式串长度为m,则串匹配的KMP算法的时间复杂度为________。
【重庆大学 2000 一、4】6.模式串P=‘abaabcac’的next函数值序列为________。
【西安电子科技大学 2001软件一、6(2分)】7.字符串’ababaaab’的nextval函数值为________。
【北京邮电大学 2001 二、4 (2分)】8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为__(1)__,又称P为__(2)__。
【西安电子科技大学 1998 二、5 (16/6分)】9.串是一种特殊的线性表,其特殊性表现在__(1)__;串的两种最基本的存储方式是__(2)__、__(3)__;两个串相等的充分必要条件是__(4)__。
【中国矿业大学 2000 一、3 (4分)】10.两个字符串相等的充分必要条件是_______。
【西安电子科技大学 1999软件一、1 (2分)】11.知U=‘xyxyxyxxyxy’;t=‘xxy’;ASSIGN(S,U);ASSIGN(V,SUBSTR(S,INDEX(s,t),LEN(t)+1));ASSIGN(m,‘ww’)求REPLACE(S,V,m)= ________。
【东北大学 1997 一、1 (5分)】12.实现字符串拷贝的函数 strcpy为:void strcpy(char *s , char *t) /*copy t to s*/{ while (________)} 【浙江大学 1999 一、5 (3分)】13.下列程序判断字符串s 是否对称,对称则返回1,否则返回0;如 f("abba")返回1,f("abab")返回0;int f((1)________){int i=0,j=0;while (s[j])(2)________;for(j--; i<j && s[i]==s[j]; i++,j--);return((3)_______)} 【浙江大学 1999 一、6 (3分)】14.下列算法实现求采用顺序结构存储的串s和串t的一个最长公共子串。
程序(a)PROCEDURE maxcomstr(VAR s,t : orderstring; VAR index,length : integer);VAR i,j,k,length1:integer; con:boolean;BEGINindex :=0; length :=0; i :=1;WHILE(i<= DO[j:=1;WHILE (j<= DO[ IF (s[i]=t[j]) THEN[ k:=1; length1:=1; con:=true;WHILE con DOIF (1)__THEN [length1:=length1+1;k:=k+1;] ELSE(2) _;IF (length1>length) THEN [index:=i; length:=length1; ](3)____;]ELSE (4)____;(5) ___;]END;程序(b)void maxcomstr(orderstring *s,*t; int index, length){int i,j,k,length1,con;index=0;length=0;i=1;while (i<={j=1;while(j<={ if (s[i]= =t[j]){ k=1;length1=1;con=1;while(con)if (1) _ { length1=length1+1;k=k+1; } else (2) __; if (length1>length) { index=i; length=length1; }(3)____;else (4) ___;}(5) __} } 【上海大学 2000 一、2 (10分)】15.完善算法:求KMP算法中next数组。
PROC get _next(t:string,VAR next:ARRAY[1..] OF integer);BEGINj:=1; k:=(1)__; next[1]:=0;WHILE j< DOIF k=0 OR [j]=[k] THEN BEGIN j:=j+1; k:=k+1; next[j]:=k;ENDELSE k:=(2)___;END;【中山大学 1998 四、1 (4分)】16.下面函数index用于求t是否为s的子串,若是返回t第一次出现在s中的序号(从1开始计),否则返回0。
例如:s=‘abcdefcdek’,t=‘cde’,则indse(s,t)=3, index(s,’aaa’)=0 。
已知t,s的串长分别是mt,msFUNC index(s,t,ms,mt);i:=1;j:=1;WHILE (i<ms) AND (j<mt) DOIF s[i]=t[j] THEN [ (1)__; (2)__]ELSE [ (3)___; (4)_ ]IF j>mt THEN return (5)____; ELSE return (6)__ENDF;【南京理工大学 1999 三、2 (6分)】17.阅读下列程序说明和pascal程序,把应填入其中的()处的字句写在答题纸上。
程序说明:本程序用于判别输入的字符串是否为如下形式的字符串:W&M$ 其中,子字符串M是子字符串W的字符反向排列,在此假定W不含有字符&和字符$,字符&用作W与M的分隔符,字符$用作字符串的输入结束符。
例如,对输入字符串ab&ba$、11&12$、ab&dd$、&$,程序将分别输出Ok.(是),No.(不是)。
程序PROGRAM accept(input,output);CONST midch=’&’; endch=’$’;VAR an:boolean; ch:char;PROCEDURE match(VAR answer: boolean);VAR ch1,ch2:char; f:boolean;BEGINread(ch1);IF ch1<>endchTHEN IF (1)__THEN BEGIN match(f);IF f THEN BEGIN read(ch2); answer:=(2)_ END ELSE answer:=falseENDELSE (3)___ELSE (4)___END;BEGINwriteln(‘Enter String:’);match(an);IF an THEN BEGIN(5)__ IF (6)_ THEN writeln(‘Ok.’) ELSEwriteln(‘No.’)ENDELSE writeln(‘No.’)END. 【上海海运学院 1998 七(15分)】18.试利用下列栈和串的基本操作完成下述填空题。