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

第四章习题

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)。

实习题

1.已知串S和T,试以以下两种方式编写算法,求得所有包含在S中而不包含在T中的字符构成的新串R,以及新串R中每个字符在串S中第一次出现的位置。

(1)利用CONCAT、LEN、SUB和EQUAL四种基本运算来实现。

(2)以顺序串作为存储结构来实现。

2.编写一个行编辑程序EDLINE,完成以下功能:

(1)显示若干行:list [[n1]-[n2]]:显示第n1行到第n2行,n1缺省时,从第一行开始,n2缺省时,到最后一行,

(2)删除若干行。del [[n1]-[n2]]: n1、n2说明同(1)。

(3)编辑第n行。edit n:显示第n行的内容,另输入一行替换该行。

(4)插入一行。ins n:在第n行之前插入一行。

(5)字符替换。replace str1,str2, [[n1]-[n2]]:在n1到n2行之间用str2替换str1。

3.设计一个文学研究辅助程序,统计小说中特定单词出现的频率和位置。

第四章答案

4.1 设s=’I AM A STUDENT’,t=’GOOD’,q=’WORKER’。给出下列操作的结果:

【解答】StrLength(s)=14;

SubString(sub1,s,1,7) sub1=’I AM A ’;

SubString(sub2,s,7,1) sub2=’ ’;

StrIndex(s,4,’A’)=6;

StrReplace(s,’STUDENT’,q);s=’I AM A WORKER’;

StrCat(StrCat(sub1,t),StrCat(sub2,q)) sub1=’I AM A GOOD WORKER’。

4.2编写算法,实现串的基本操作StrReplace(S,T,V)。

【解答】算法如下:

int strReplace(SString S,SString T, SString V)

{/*用串V替换S中的所有子串T */

int pos,i;

pos=strIndex(S,1,T); /*求S中子串T第一次出现的位置*/

if(pos = = 0) return(0);

while(pos!=0) /*用串V替换S中的所有子串T */

{

switch(T.len-V.len)

{

case 0: /*串T的长度等于串V的长度*/

for(i=0;i<=V.len;i++) /*用V替换T*/

S->ch[pos+i]=V.ch[i];

case >0: /*串T的长度大于串V的长度*/

for(i=pos+t.ien;ilen;i--) /*将S中子串T后的所有字符

S->ch[i-t.len+v.len]=S->ch[i]; 前移T.len-V.len个位置*/

for(i=0;i<=V.len;i++) /*用V替换T*/

S->ch[pos+i]=V.ch[i];

S->len=S->len-T.len+V.len;

case <0: /*串T的长度小于串V的长度*/

if(S->len-T.len+V.len)<= MAXLEN /*插入后串长小于MAXLEN*/

{ /*将S中子串T后的所有字符后移V.len-T.len个位置*/

for(i=S->len-T.len+V.len;i>=pos+T.len;i--)

S->ch[i]=S->ch[i-T.len+V.len];

for(i=0;i<=V.len;i++) /*用V替换T*/

S->ch[pos+i]=V.ch[i];

S->len=S->len-T.len+V.len; }

else

{ /*替换后串长>MAXLEN,但串V可以全部替换*/

if(pos+V.len<=MAXLEN)

{ for(i=MAXLEN-1;i>=pos+T.len; i--)

S->ch[i]=s->ch[i-T.len+V.len]

for(i=0;i<=V.len;i++) /*用V替换T*/

S->ch[pos+i]=V.ch[i];

S->len=MAXLEN;}

else /*串V的部分字符要舍弃*/

{ for(i=0;i

S->ch[i+pos]=V.ch[i];

S->len=MAXLEN;}

}/*switch()*/

pos=StrIndex(S,pos+V.len,T); /*求S中下一个子串T的位置*/ }/*while()*/

return(1);

}/*StrReplace()*/

附加题:用链式结构实现定位函数。

【解答】

typedef struct Node

{ char data;

struct Node *next;

}Node,*Lstring;

int strIndex(Lstring S, int pos, Lstring T)

/*从串S的pos序号起,串T第一次出现的位置*/

{

Node *p, *q, *Ppos;

int i=0,,j=0;

if(T->next= =NULL || S->next = =NULL) return(0);

p=S->next;

q=T->next;

while(p!=NULL && j

{p=p->next; j++;}

if(j!=pos) return(0);

while(p!=NULL && q!=NULL)

{

Ppos=p; /*Ppos指向当前匹配的起始字符*/

if(p->data = = q->data)

{p=p->next; q=q->next;}

else /*从Ppos指向字符的下一个字符起从新匹配*/

{p=Ppos->next;

q=T->head->next;

i++;}

}

if(q= =NULL) return(pos+i); /*匹配成功*/

else return(0); /*失败*/

}

第4章串

习题

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));

[参考答案]

StrLength(s)=14; sub1=’I AM A_’; sub2=’_’; StrIndex(s,’A’,4)=6;

StrReplace(s,’STUDENT’,q)=’I AM A WORKER’;

StrCat(StrCat(sub1,t), StrCat(sub2,q))=’I AM A GOOD WORKER’;

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串替换。

[提示]:(1)用静态顺序串(2)先移位,后复制

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

11.写算法,实现顺序串的基本操作StrReplace(&s,t,v)。

[提示]:

(1)被替换子串定位(相当于第9题中i)

(2)被替换子串后面的字符左移或右移(为替换子串准备房间)(3)替换子串入住(复制)

(4)重复上述,直到……

《数据结构》课后习题答案(第2版)

《数据结构》课后习题答案(第2版)数据结构课后习题答案(第2版) 第一章:基本概念 1. 什么是数据结构?数据结构是指数据元素之间的关系,以及相应的操作。它研究如何组织、存储和管理数据,以及如何进行高效的数据操作。 2. 数据结构的分类有哪些?数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、栈和队列;非线性结构包括树和图。 3. 什么是算法?算法是解决特定问题的一系列有序步骤。它描述了如何输入数据、处理数据,并产生期望的输出结果。 4. 算法的特性有哪些?算法具有确定性、有限性、输入、输出和可行性这五个特性。 5. 数据结构和算法之间的关系是什么?数据结构是算法的基础,算法操作的对象是数据结构。 第二章:线性表 1. 顺序表的两种实现方式是什么?顺序表可以通过静态分配或动态分配的方式实现。静态分配使用数组,动态分配使用指针和动态内存分配。

2. 单链表的特点是什么?单链表由节点组成,每个节点包含数据和 一个指向下一个节点的指针。它的插入和删除操作效率高,但是查找 效率较低。 3. 循环链表和双向链表分别是什么?循环链表是一种特殊的单链表,在尾节点的指针指向头节点。双向链表每个节点都有一个指向前一个 节点和后一个节点的指针。 4. 链表和顺序表的区别是什么?链表的插入和删除操作效率更高, 但是查找操作效率较低;顺序表的插入和删除操作效率较低,但是查 找操作效率较高。 第三章:栈和队列 1. 栈是什么?栈是一种特殊的线性表,只能在表的一端进行插入和 删除操作。后进先出(LIFO)是栈的特点。 2. 队列是什么?队列是一种特殊的线性表,只能在表的一端进行插 入操作,在另一端进行删除操作。先进先出(FIFO)是队列的特点。 3. 栈和队列的应用有哪些?栈和队列在计算机科学中有广泛的应用,例如浏览器的前进后退功能使用了栈,操作系统的进程调度使用了队列。 4. 栈和队列有哪些实现方式?栈和队列可以使用数组或链表来实现,还有更为复杂的如双端队列和优先队列。 第四章:树和二叉树

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

第四章 一、简述下列每对术语的区别: 空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串;目标串和模式串;有效位移和无效位移。 答: ●空串是指不包含任何字符的串,它的长度为零。 空白串是指包含一个或多个空格的串,空格也是字符。 ●串常量是指在程序中只可引用但不可改变其值的串。 串变量是可以在运行中改变其值的。 ●主串和子串是相对的,一个串中任意个连续字符组成的串就是这个串的子串,而包含子串的串就称为主串。 ●静态分配的顺序串是指串的存储空间是确定的,即串值空间的大小是静态的,在编译时刻就被确定。 动态分配的顺序串是在编译时不分配串值空间,在运行过程中用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)的返回值是什么?

数据结构习题和答案及解析

第 1 章绪论 课后习题讲解 1. 填空 ⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑与处理。 【解答】数据元素 ⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为()、()、()与()。【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有()与()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()与()。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别是()、()、()、()、()。【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性

⑹算法的描述方法通常有()、()、()与()四种,其中,()被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度是()的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

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

第3章栈和队列 习题 1.选择题 (1)若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在()种情况。 A.5,4,3,2,1 B.2,1,5,4,3 C.4,3,1,2,5 D.2,3,5,4,1 (2)若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为()。 A.i B.n-i C.n-i+1 D.不确定(3)数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为()。 A.r-f B.(n+f-r)%n C.n+r-f D.(n+r-f)%n (4)链式栈结点为:(data,link),top指向栈顶.若想摘除栈顶结点,并将删除结点的值保存到x中,则应执行操作()。 A.x=top->data;top=top->link; B.top=top->link;x=top->link; C.x=top;top=top->link; D.x=top->link; (5)设有一个递归算法如下 int fact(int n) { 线性表的链式存储结构 D. 栈(11)用链接方式存储的队列,在进行删除运算时()。 A. 仅修改头指针 B. 仅修改尾指针 C. 头、尾指针都要修改 D. 头、尾指针可能都要修改 (12)循环队列存储在数组A[0..m]中,则入队时的操作为()。 A. rear=rear+1 B. rear=(rear+1)%(m-1) C. rear=(rear+1)%m D. rear=(rear+1)%(m+1) (13)最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。 A. (rear+1)%n==front B. rear==front C.rear+1==front D. (rear-l)%n==front (14)栈和队列的共同点是()。 A. 都是先进先出 B. 都是先进后出 C. 只允许在端点处插入和删除元素 D. 没有共同点 (15)一个递归算法必须包括()。 A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D. 终止条件和迭代部分 (2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈) 根据提示,算法可设计为: IOIIOIOO B. IOOIOIIO C. IIIOIOIO D. IIIOOIOO ②通过对①的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回true,

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

第四章习题 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)。 实习题 1.已知串S和T,试以以下两种方式编写算法,求得所有包含在S中而不包含在T中的字符构成的新串R,以及新串R中每个字符在串S中第一次出现的位置。 (1)利用CONCAT、LEN、SUB和EQUAL四种基本运算来实现。 (2)以顺序串作为存储结构来实现。 2.编写一个行编辑程序EDLINE,完成以下功能: (1)显示若干行:list [[n1]-[n2]]:显示第n1行到第n2行,n1缺省时,从第一行开始,n2缺省时,到最后一行, (2)删除若干行。del [[n1]-[n2]]: n1、n2说明同(1)。 (3)编辑第n行。edit n:显示第n行的内容,另输入一行替换该行。 (4)插入一行。ins n:在第n行之前插入一行。

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

《数据结构》第四章习题参考答案

《数据结构》第四章习题 一、判断题(在正确说法的题后括号中打“√”,错误说法的题后括号中打“×”) 1、KMP算法的特点是在模式匹配时指示主串的指针不会变小。( √) 2、串是一种数据对象和操作都特殊的线性表。( √) 3、只包含空白字符的串称为空串(空白串)。( ×) 4、稀疏矩阵压缩存储后,必会(不会)失去随机存取功能。( ×) 5、使用三元组表示稀疏矩阵的非零元素能节省存储空间。( √) 6、插入与删除操作是数据结构中最基本的两种操作,因此这两种操作在数组中也经常使用。(×) 7、若采用三元组表存储稀疏矩阵,只要把每个元素的行下标和列下标互换(错的),就完成了对该矩阵的转置运算。(×) 二、单项选择题 1.下面关于串的的叙述中,哪一个是不正确的?( B ) A.串是字符的有限序列B.空串是由空格构成的串(空串是长度为零的串)C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2.有串S1=’ABCDEFG’,S2 = ’PQRST’,假设函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,len(s)返回中s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是( D )。 A.BCDEF B.BCDEFG C.BCPQRST D.CDEFGFG 3、串的长度是指( B ) A.串中所含不同字母的个数B.串中所含字符的个数 C.串中所含不同字符的个数D.串中所含非空格字符的个数 三、填空题 1、串是一种特殊的线性表,其特殊性表现在_数据元素为字符,操作集也不同__;串的两种最基本的存储方式是_顺序存储_、__ 链式存储_;两个串相等的充分必要条件是__两串的长度相等且两串中对应位置的字符也相等__。 2、设正文串长度为n,模式串长度为m,则串匹配的KMP算法的时间复杂度为_O(m+n)__。 3、模式串P=‘abaabcac’的next函数值序列为_{-1,0,0,1,1,2,0,1}___。 4、已知数组A[0..9,0..9]的每个元素占5个存储单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[6,8]的地址为__1340___。 四、综合题 1、KMP算法较Brute-Force算法有哪些改进? 【解答】 朴素的模式匹配(Brute-Force)时间复杂度是O(m*n),KMP算法有一定改进,时间复杂度达到O(m+n)。KMP算法主要优点是主串指针不回溯。当主串很大不能一次读入内存且经常发生部分匹配时,KMP算法的优点更为突出。 2、课本P183 4.1题 【解答】 A[2][2] = 644+2*n+2 = 676 A[3][3] = 644+3*n+3 = 692 3、课本P184 4.7题

数据结构(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、BCDEF B、BCDEFG C、BCPQRST D、BCDEFEF 5、若串s=“software”,其子串个数是(B)。 A、8 B、37 C、36 D、9 4.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);答:13 strconcat(s2,s3);答:”studentteachar” strdelsub(s1,4,10);答:I’m 6、设s1=”AB”,s2=”ABCD”,s3=”EFGHIJK,试画出它们在各种存储结构下的结构图。答: 顺序存储方式下:

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

第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.0123012322345 4、串“ababaabab”的nextval为(A)。 A.010104101B.010102101 C.010100011 D.010101011 5、串的长度是指(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。 7、设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为(B)。A.BA+141 B.BA+180 C.BA+222 D.BA+225 解释:以列序为主,则LOC[5,8]=[(8-1)*8+(5-1)]*3+BA=BA+180。 8、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为(C)。 A.13 B.32 C.33 D.40 9、若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定a ij(i

严蔚敏-数据结构课后习题及复习资料解析

第一章绪论 一、选择题 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.在图形结构中,每个结点的前驱结点数和后续结点数可以。 5.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。 6.算法的五个重要特性是、、、、。 7.数据结构的三要素是指、和。 8.链式存储结构与顺序存储结构相比较,主要优点是。

数据结构课后习题第四章

第四章串 习题4 一、选择题 1.串是一种特殊的线性表,其特殊性体现在()。 A.可以顺序存储 B.数据元素是一个字符 C.可以连接存储 D.数据元素可以是多个字符 2.有两个串P和Q,求P在Q中首次出现的位置的运算称为()。 A.模式匹配 B.联接 C.求子串 D.求串长 3.设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为()。 A.n2 B.(n2/2)+(n/2) C.(n2/2)+(n/2)-1 D.(n2/2)-(n/2)-1 4.设串s1=“ABCDEFG”,s2=“PQRST”,函数concat(x,y)返回x和y串的连接串,subString(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,Strlength(s)返回串s的长度,则concat(subString(s1,2,Strlength (s2)),subString(s1,Strlength(s2),2)))的结果串是()。 A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF 5.顺序串中,根据空间分配方式的不同,可分为()。 A.直接分配和间接分配 B.静态分配和动态分配 C.顺序分配和链式分配 D.随机分配和固定分配 6.设串S=“abcdefgh”,则S的所有非平凡子串(除空串和S自身的串)的个数是()。

A.8 B.37 C.36 D.35 7.设主串的长度为n,模式串的长度为m,则串匹配的KMP算法时间复杂度是()。 A.O(m) B.O(n) C.O(m+n) D.O(n*m) 8.已知串S=“aaab”,其next数组值为()。 A.0123 B.1123 C.1231 D.1211 二丶填空题 1.在空串和空格串中,长度不为0的是()。 2.空格串是指(),其长度等于()。 3.按存储结构的不同,串可分为()、()和()。 4.C语言中,以字符()表示串值的终结。 5.在块链串中,为了提高存储密度,应该增大()。 6.假设每个字符占1个字节,若结点大小为4个字节的链串的存储密度为50%,则其每个指针占()个字节。 7.串操作虽然较多,但都可以通过五中基本操作()、()、()、()和()构成的最小子集中的操作来实现。 8.设串S=“Ilikecomputer.”,T=“com”,则Length(S)=(),Index(S,T,1)=()。 9.在KMP算法中,next[j]只与()串有关,而与()串无关。 10.字符串“ababaaab”的nextval函数值为()。 11.两个字符串相等的充分必要条件是()。 12.实现字符串复制的函数strcpy为:

严蔚敏《数据结构(c语言版)习题集》答案第四章 串

《一定能摸到红球吗?》说课稿 林银花 一、教材说明: 1、课题:《一定能摸到红球吗?》 2、本节内容的地位和作用 在现代社会中,人们面临着更多的机会和选择,常常需要在不确定情境中作出合理的决策,概率正是通过对不确定现象和事件发生的可能性的刻画,来为人们更好的制定决策提供依据和建议.本节内容又是义务教育阶段,唯一培养学生从不确定的角度来观察世界的数学内容,让学生了解可能性是普遍的,有助于他们理解社会,适应生活. 3、教学目标设计: (1)认知目标: (A)经历猜测.实验.收集与分析试验结果等过程 (B)体会事件的发生的不确定性知道事情发生的可能性有多大。 (2)、能力目标: (A)经历游戏等的活动过程,初步认识确定事件和不确定事件 (B)在与其它人交流的过程中,能合理清晰地表达自己的思维过程; (3)、情感目标: (A)通过创设游戏情境,让学生主动参与,做“数学实验”,激发学生学习的热情和兴趣,激活学生思维。 (B)在与他人的合作过程中,增强互相帮助、团结协作的精神。 (C)体会到在生活中我们可以从确定和不确定两方面分析一件事情. 4、本课重点、难点分析: 学习的重点是初步体验事情发生的确定性和不确定性. 学习的难点是确定事件发生的可能性大小. 学习本节知识应注意猜测,试验,收集与分析实验结果,从中体会事件发生的可能性及大小. 二、教学对象分析: 1、初一学生性格开朗活泼,对新鲜事物特别敏感,且较易接受,因此,教学过程中创设的问题情境应较生动活泼,直观形象,且贴近学生的生活,从而引起学生的有意注意。 2、初一学生的概括能力较弱,推理能力还有待不断发展,所以在教学时,可让学生充分试验,收集,分析,帮助他们直观形象地感知。 3、初一学生已经具备了一定的学习能力,所以本节课中,应多为学生创造自主学习、

数据结构第04章 串习题

第四章串 一、选择题 1、设有两个串S1和S2,求串S2在S1中首次出现位置的运算称作()。 A. 连接 B. 求子串 C. 模式匹配 D. 判断子串 2、已知串S=’aaab’,则next数组值为()。 A. 0123 B. 1123 C. 1231 D. 1211 3、串与普通的线性表相比较,它的特殊性体现在()。 A. 顺序的存储结构 B. 链式存储结构 C. 数据元素是一个字符 D. 数据元素任意 4、设串长为n,模式串长为m,则KMP算法所需的附加空间为()。 A. O(m) B. O(n) C. O(m*n) D. O(nlog2m) 5、空串和空格串()。 A. 相同 B. 不相同 C. 可能相同 D. 无法确定 6、与线性表相比,串的插入和删除操作的特点是()。 A. 通常以串整体作为操作对象 B. 需要更多的辅助空间 C. 算法的时间复杂度较高 D. 涉及移动的元素更多 7、设SUBSTR(S,i,k)是求S中从第i个字符开始的连续k个字符组成的子串的操作,则对于S=’Beijing&Nanjing’,SUBSTR(S,4,5)=()。 A. ‘ijing’ B. ‘jing&’ C.‘ingNa’ D. ‘ing&N’ 8、串是一种特殊的线性表,其特殊性体现在:() A.可以顺序存储B.数据元素是一个字符 C.可以链式存储D.数据元素可以是多个字符 9、设有两个串p和q,求q在p中首次出现的位置的运算称作:() A.连接B.模式匹配C.求子串D.求串长 10、设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是:() A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF 二、填空题 1、求子串在主串中首次出现的位置的运算称为________。 2、设s=’I_AM_A_TEACHER’,其长度是________。 3、两个串相等的充分必要条件是两个串的长度相等且________。 4、________________称为空串;________________________________称为空白串。 5、设S=“A;/document/Mary.doc”,则strlen(s)= _____,“/”的字符定位的位置为____。

数据结构第四章考试题库(含答案)

第四章串 一、选择题 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###2345 E.ABC###G1234 F.ABCD###1234 G.ABC###01234 3.设有两个串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.1211 5.串‘ababaaababaa’的next数组为()。【中山大学 1999 一、7】 A.9 B.2 C.6 D.45 6.字符串‘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 2 C.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 2 E.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.9 9.设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分)】

数据结构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、什么是数据的逻辑结构?什么是数据的存储结构? 【答】数据元素之间的逻辑关系,也称为数据的逻辑结构。数据元素以及它们之间的相互关系在计算机存储器内的表示(又称映象),称为数据的存储结构,也称数据的物理结构。

数据结构第四章参考答案

习题4 1. 填空题 (1)一般来说,数组不执行(___________)和(___________)操作,所以通常采用(___________)方法来存储数组。通常有两种存储方式:(___________)和(___________)。 答案:删除 插入 顺序存储 行优先存储 列优先存储 (2)设8行8列的二维数组起始元素为A[0][0],按行优先存储到起始元素下标为0的一维数组B 中,则元素B[23]在原二维数组中为(___________)。若该二维数组为上三角矩阵,按行优先压缩存储上三角元素到起始元素下标为0的一维数组C 中,则元素C[23]即为原矩阵中的(___________)元素。 答案:A[2][7] A[3][5] (3)设二维数组A 为6行8列,按行优先存储,每个元素占6字节,存储器按字节编址。已知A 的起始存储地址为1000H ,数组A 占用的存储空间大小为(___________)字节,数组A 的最后一个元素的下标为(___________),该元素的第一个字节地址为(___________)H ,元素A[1][4]的第一个字节的地址为(___________)H 。(提示:下标从0开始计) 答案:288 A[5][7] 111AH 1048H (4)设C++中存储三维数组A mnp ,则第一个元素为a 000,若按行优先存储,则a ijk 前面共有(___________)个元素;若按列优先存储,则a ijk 前面共有(___________)个元素。 答案:inp+jp+k i+mj+mnk (5)常见的稀疏矩阵压缩方法有:(___________)和(___________)。 答案:三元组表 十字链表 (6)广义表((a ),((b ,c ),d ),(e ))的长度为(___________),表头为(___________),表尾为(___________)。 答案:3 (a ) (((b ,c ),d ),(e )) (7)设广义表LS =((a ),((b ,c ),d ),(e )),若用取表头操作GetHead ()和取表尾操作GetTail ()进行组合操作,则取出元素b 的运算为(___________)。 答案:GetHead(GetHead(GetHead(GetTail(LS)))) (8)若广义表A 满足GetHead (A )=GetTail (A ),则A =(___________)。 答案:(()) 2. 问答题 (1)根据下面的矩阵,写出矩阵转置后的三元组表,起始行列值为1。 ⎪⎪⎪⎪⎪⎪⎪⎪⎭ ⎫ ⎝⎛-00000015000001800000130001400003005000000009120

相关主题
相关文档
最新文档