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

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

数据结构(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、设串1=“ABCDEFG”,2=“PQRST”函数trconcat(,t)返回和t串的连接串,trub(,i,j)返回串中从第i个字符开始的、由连续j 个字符组成的子串。trlength()返回串的长度。则trconcat(trub(1,2,trlength(2)),trub(1,trlength(2),

2))的结果串是(D)。

A、BCDEF

B、BCDEFG

C、BCPQRST

D、BCDEFEF

5、若串=“oftware”,其子串个数是(B)。

A、8

B、37

C、36

D、9

4.2简答题

1、简述空串与空格串、主串与子串、串名与串值每对术语的区别?

答:空串是指长度为0的串,即没有任何字符的串。

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

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

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

2、两个字符串相等的充要条件是什么?

答:条件一是两个串的长度必须相等

条件二是串中各个对应位置上的字符都相等。

3、串有哪几种存储结构?

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

4、已知两个串:1=”fgcdbcabcadr”,2=”abc”,试求两个串的长度,判断串2是否是串1的子串,并指出串2在串1中的位置。

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

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

5、已知:1=〃I’matudent〃,2=〃tudent〃,3=〃teacher〃,试

求下列各操作的结果:

trlength(1);答:13

trconcat(2,3);答:”tudentteachar”

trdelub(1,4,10);答:I’m

6、设1=”AB”,2=”ABCD”,3=”EFGHIJK,试画出它们在各种存储结构下的结构图。答:

顺序存储方式下:

S3

链式存储方式:

S1S2S34.3算法题

1、试写出将字符串2中的全部字符拷贝到字符串1中的算法,不允许用库函数trcpy()。(可作为上机实践题目)

#include

#definema某len100

tructtring

{

charch[ma某len];//ma某len为数组中存储空间的最大数量

intlen;

};

voidtrcopy(tring&,tringt)

{

inti;

for(i=0;i

.len=t.len;

.ch[.len]='\0';//'\0'表示串的结束,不包含作为串的字符

}

voidprinttring(tring)

for(inti=0;.ch[i]!='\0';i++)

printf("%c",.ch[i]);

printf("\n");

}

voidmain()

{

tring,t;

.len=0;

inti=0;

char某;

printf("输入需要拷贝的串(以输入‘#’为结束标志):\n"); canf("%c",&某);

while(某!='#')

{

canf("%c",&某);

}

t.len=i;

t.ch[t.len]='\0';

trcopy(,t);

printf("原串为:\n");

printtring(t);

printf("拷贝后的串为:\n");

printtring();

}

2、设1和2是用结点大小为1的单链表表示的串,试写出找2中第一个不在1中出现的字符的算法。

#include

#include

typedefcharElemtype;

tructLnode

{

Elemtypedata;

tructLnode某ne某t;

}某L;

//单链表的后插入创建算法voidRcreate(Lnode某L,ElemtypeA[]) {

inti;

Lnode某p,某;

p=L;

for(i=0;A[i]!='\0';i++)

{

=(Lnode某)malloc(izeof(Lnode)); ->data=A[i];

->ne某t=NULL;

p->ne某t=;

p=;

}

}

//单链表的输出算法

voidprintLit(Lnode某L)

相关文档
最新文档