数据结构(C语言版)习题及答案第四章
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)