第四章 串
- 格式:doc
- 大小:31.00 KB
- 文档页数:2
《数据结构与算法》第四章串知识点及例题精选串(即字符串)是一种特殊的线性表,它的数据元素仅由一个字符组成。
4.1 串及其基本运算4.1.1 串的基本概念1.串的定义串是由零个或多个任意字符组成的字符序列。
一般记作:s="s1 s2 … s n""其中s 是串名;在本书中,用双引号作为串的定界符,引号引起来的字符序列为串值,引号本身不属于串的内容;a i(1<=i<=n)是一个任意字符,它称为串的元素,是构成串的基本单位,i是它在整个串中的序号; n为串的长度,表示串中所包含的字符个数,当n=0时,称为空串,通常记为Ф。
2.几个术语子串与主串:串中任意连续的字符组成的子序列称为该串的子串。
包含子串的串相应地称为主串。
子串的位置:子串的第一个字符在主串中的序号称为子串的位置。
串相等:称两个串是相等的,是指两个串的长度相等且对应字符都相等。
4.2 串的定长顺序存储及基本运算因为串是数据元素类型为字符型的线性表,所以线性表的存储方式仍适用于串,也因为字符的特殊性和字符串经常作为一个整体来处理的特点,串在存储时还有一些与一般线性表不同之处。
4.2.1 串的定长顺序存储类似于顺序表,用一组地址连续的存储单元存储串值中的字符序列,所谓定长是指按预定义的大小,为每一个串变量分配一个固定长度的存储区,如:#define MAXSIZE 256char s[MAXSIZE];则串的最大长度不能超过256。
如何标识实际长度?1. 类似顺序表,用一个指针来指向最后一个字符,这样表示的串描述如下:typedef struct{ char data[MAXSIZE];int curlen;} SeqString;定义一个串变量:SeqString s;这种存储方式可以直接得到串的长度:s.curlen+1。
如图4.1所示。
s.dataMAXSIZE-1图4.1 串的顺序存储方式12. 在串尾存储一个不会在串中出现的特殊字符作为串的终结符,以此表示串的结尾。
第四章串
一.选择题
1.如下陈述中正确的是________。
A.串是一种特殊的线性表 B.串的长度必须大于零
C.串中元素只能是字母 D.空串就是空白串
2.字符串的长度是指________。
A.串中不同字符的个数 B.串中不同字母的个数
C.串中所含字符的个数 D.串中不同数字的个数
3.两个字符串相等的充要条件是________。
A.两个字符串的长度相等 B.两个字符串中对应位置上的字符相等
C.同时具备A和B两个条件 D.以上答案都不对
4.串是________。
A.不少于一个字母的序列 B.任意个字母的序列
C.不少于一个字符的序列 D.有限个字符的序列
5.下列关于串的叙述中,正确的是________。
A.串长度是指串中不同字符的个数
B.串是n个字母的有限序列
C.如果两个串含有相同的字符,则它们相等
D.只有当两个串的长度相等,并且各个对应位置的字符都相符时才相等
6.串是一种特殊的线性表,其特殊性体现在________。
A.可以顺序存储 B.数据元素是一个字符
C.可以链接存储 D.数据元素可以是多个字符
7.设有两个串p和q,求q在p中首次出现的位置的运算称作________。
A.连接 B.模式匹配 C.求子串 D.求串长
8.设串s1="ABCDEFG",s2="PQRST",函数con(x,y)返回x 和y串的连接串。
subs(s,i,j)返回串s 的从序号 i 的字符开始的j个字符组成的子串,len(s) 返回串s的长度,则con(subs(s1,2,1en(s2)),subs(sl,len(s2),2)) 的结果串是________。
A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF
9.函数substr("DATASTRUCTURE",5,9)的返回值为________。
A."STRUCTURE" B."DATA"
C."ASTRUCTUR" D. "DATASTRUCTURE"
10.设串S="I AM A TEACHER",其长度是________。
A. 16
B. 11
C.14
D. 15
11.设字符串s1="abcdefg",s2="pqrst",则运算
s=concat(sub(s1,2,len(s2)),sub(s1,len(s2),2))后串值为________。
A. "bcdef"
B. "bcdefg"
C."bcpqrst"
D."bcdefef"13
12.设有一个字符串S= "windows",求子串的数目是________。
A.25 B.26 C.27 D. 28
二. 填空题
1. _______________称为空串;_______________________称为空白串。
2. 一个串的任意个连续的字符组成的子序列称为该串的______,包含该子串的串称为____。
三.简答题
1.空串与空格串有什么区别?字符串中的空格有什么意思?空串在串的处理中有什么作用?
2.串是由字符组成的,长度为1的串和字符是否相同?为什么?
3.简述串的静态顺序存储结构与动态顺序存储结构有什么区别,分别写出它们的结构体定义。
4.字符串采用静态顺序存储结构。
编写一个算法删除S中第i个字符到第j个字符。
5.编写一个算法判断s2是否是s1的子串。
6.下列程序段的功能实现子串t 在主串s 中位置的算法,要求在下划线处填上正确语句。
int index(char s[], char t[])
{
int i=0,j=0;
while(i<strlen(s)&& j<strlen(t))
if(s[i]==t[j])
{
i=i+l;
j=j+l;
}
else
{
i=_______;
j=______;
}
if (j==strlen(t))
return(i-strlen(t));
else
return (-1);
}。