数据结构 栈、队列、串.pptVIP

  • 11
  • 0
  • 约 82页
  • 2016-11-14 发布于河南
  • 举报
《数据结构与STL》 * 第三章 栈、队列和串 学习内容: 3.1 栈 3.2 队列 3.3 串 3.4 实例分析 3.5 STL中的相关模板类 《数据结构与STL》 * 3.3 串 3.2.1 串的逻辑结构 串的长度:串中所包含的字符个数称为。 空串:长度为零的串,记作S=“”。 空格串:只包含空格的串,记作S=“?”,空格使用符号?表示。 子串:串中任意个连续字符构成的串。相对于子串,原串称为主串。通常,子串在主串中第一次出现时,将字串的第一个字符在主串中的序号定义为子串在主串中的序号或位置。 串(string)也称为字符串,是零个或多个字符组成的有限序列 串可看作结点元素仅由一个字符构成的特殊线性表。 串一般记作S=”s1s2…sn”, 串名 串值 空串是任意串的子串,任意串都是其自身的子串。 《数据结构与STL》 * 例: A=“Hello?World!” 长度为12的串 B=“World” 长度为5的串 C=“” 长度为0的空串 D=“?” 长度为1的空格串 《数据结构与STL》 * 串的基本运算 (1)赋值(=) S1=“abc” 将串“abc”赋值给S1 S2=S1 将S1的串值赋值给S2 (2)求串长度(GetLength) S1=“abc” 则GetLength(S1)=3 (3)串连接(Strcat) S1=“abc” Strcat(S1, “1234”) 则S1的串值变为“abc1234”。 《数据结构与STL》 * 串的基本运算 (4)求子串(Substr) Substr(S,i,j)返回从S的第i个字符开始连续j个字符构成的字符串。 S1=“abcdefg” 则Substr(S1,3,3)=“cde”,Substr(S1,5,5)=“efg”。 (5)比较串大小(Strcmp) Strcmp(S1,S2)是比较串S1和S2大小的函数,若返回值为0,表示S1与S2相等;若返回值小于0,表示S1S2;若返回值大于0,表示S1S2。 串中的各个字符在比较时,一般比较的是字符的相应编码。例如对于英文字符和其他常用符号,一般采用ASCII码作为字符编码. “abcd”=“abcd” “abcd””ABCD” “abcd””abcd1234” “abcd”“aba” 《数据结构与STL》 * 串的基本运算 (6)插入(Insert) Insert(S1,i,S2)表示将串S2插入到串S1的第i个位置。 S1=“abcdefg” Insert(S1,3, “1234”) 则,S1=“ab1234cdefg”。 (7)删除(Delete) Delete(S,i,j)表示将串S中从第i个字符开始连续j个字符构成的子串删除。 S=“abcdefg” 若执行Delete(S,3,2), 则S=“abefg”; 若执行Delete(S,3,12),则S=“ab”。 《数据结构与STL》 * 串的基本运算 (8)替换(Replace) Replace(S,T,R)表示用串R替换串S中所有的子串T。 S=“abcdabg” 执行Replace(S,”ab”,”123”)后,S变为”123cd123g” (9)定位(Index) Index(S1,S2)函数完成在串S1中查找S2的功能,若找到,则返回S2在S1中首次出现的位置;否则返回零。Index(“abcdefgcdef”,”cde”)=3 Index(“abcdefgcdef”,”cdf”)=0 C/C++语言提供了很多关于字符串操作的库函数,如strcpy函数、strncpy函数、strlen函数、strcmp函数、strcat函数等。除此之外,C++语言也有STL模板类string来操作字符串。 《数据结构与STL》 * 3.2.2 串的存储结构 顺序串:串的顺序存储结构 链串:串的链式存储结构 顺序串采用数组存储串中的字符序列 一种存储方法是完全与顺序表的结构相同 class SeqString: public SeqList char 《数据结构与STL》 * 另一种存储方式是采用特殊字符作为串的结束标记 C和C++语言,采用ASCII码值为0的特殊字符‘\0’来作为串的结束标记 《数据结构与STL》 * 链串 :直接使用链表的C++模板类LinkList来派生链串 class LinkString: public LinkList char 存储密度为20% 链串的压缩存储: 存储密度为50% 《数据结构与STL》 * 在串”ABCDEFG”的第4个位置上插入串“123” 插入方式1

文档评论(0)

1亿VIP精品文档

相关文档