第四章 串 (答案版)

2023-08-30
| 5页
| 174人阅读
| 0人下载

内容正文:

第四章 串 1、 简述下列每个术语的区别: 空串和空格串; 串变量和串常量; 主串和子串; 串名和串值; 答:空串和空格串:空串是长度为0的串,它不包含任何字符,空格串是由空格字符组成的串,长度大于0。 串变量和串常量:编程中经常使用串变量和串常量,其中,串变量可以依需要进行多次数值变换,但必须是字符串型,而串常量一经赋值,即不能改变。 主串和子串:一个字符串中任意个连续的字符组成的子序列称为该串的子串。该串相应地称为主串。 串名和串值:一个串在程序中被定义成一个变量或常量的名称,称为该串的串名,串名实际保存的串值,称为串值,因为一般编程中,采用字符来表达变量或常量名称,所以,要注意不要搞混。 2、 用串的其他基本运算构造串的子串定位运算index。 int index(s,t){ l1=length(s); l2=length(t); for(i=1;i<=l1-l2){ x=sunstr(s,l1,l2); if x==t return I; } return 0 } 3、设有A=””,B=”mule”,C=”old”,D=”my”,请计算下面运算的结果: (1)strcat(A,B) (2)substr(B,3,2) (3)strlen(A) (4)index(B,D) (5)insert(B,1,A) (6)replace(C,2,2,”k”) 答:(1)strcat(A,B)=”mule” (2) substr(B,3,2)=”le” (3) strlen(A)=0 (4) index(B,D)=0 (5) insert(B,1,A)= “mule” (6) replace(C,2,2,”k”)=”ok” 4、 已知:S=”(xyz)”,T=”(x+z)*y”,利用联接、求子串和置换等基本运算,将S转换为T。 答:T1=sunstr(s,2,1) T2=substr(s,3,1) T3=substr(s,4,1) T=strcat(“(”,t1) T=strcat(T,”+”) T=strcat(T,t3) T=strcat(T,”)”) T=strcat(T,”*”) T=strcat(T,T2) 5、 若X和Y是用结点大小为1的单链表表示的串,试设计一个算法找出X中第一个不在Y中出现的字符。 linklist* temp = y; while (x != NULL) { while (temp != NULL && x->data != temp->data) temp = temp->next; if (temp == NULL) return x->data; else { x = x->next; temp = y; } } 6、 试设计一个算法,在顺序串上实现串的比较运算strcmp(S,T)。 while(*s == *t) {          if(*s == '\0') return0;          s++;          t++; }     return *s - *t; 7、 若S和T是用结点大小为1的单链表存储的两个串,试设计一个算法将S中首次与串T匹配的子串逆置。 linklist *s = CREATLIST(); linklist *t = CREATLIST(); linklist *head_t = t; linklist *temps = s; linklist *tempt = t; linklist *p, *m, *n; for (;;) { while (temps != NULL && temps->data == tempt->data) { temps = temps->next; tempt = tempt->next; } if (temps == NULL) break; else { t = t->next; temps = s; tempt = t; } } p = head_t; while (p->next != t) p = p->next; m = t->next; n = m->next; t->next = tempt; while (n != tempt) { m->next = t; t = m; m = n; n = n->next; } m->next = t; p->next = m; 8、设有两个字符串,目标 S=“abcabeacadaadadasfsf”,模式

资源预览图

第四章 串 (答案版)
1
第四章 串 (答案版)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。