数据结构基础之串的定义与作用

   一、串定义

  串(或字符串),是由零个或多个字符组成的有限序列。一般记为:

  s='a1a2...an'(n>=0)

  其中s是串的名,用单引号括起来的字符序列是串的值;串中字符的数目n称为串的长度。零个字符的串称为空串,它的长度为零。

  串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。通常称字符在序列中的称为该字符在串中的位置。子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。

  例:a='BEI',b='JING',c='BEIJING',d='BEI JING'

  串长分别为3,4,7,8,且a,b都是c,d的子串。

  称两个串是相等的,当且仅当这两个串的值相等。

  二、串的抽象数据类型的定义:

  ADT String{

  数据对象:D={ai|ai(-CharacterSet,i=1,2,...,n,n>=0}

  数据关系:R1={|ai-1,ai(-D,i=2,...,n}

  基本操作:

  StrAssign(&T,chars)

  chars是字符常量。生成一个其值等于chars的串T。

  StrCopy(&T,S)

  串S存在则由串S复制得串T

  StrEmpty(S)

  串S存在则若S为空串,返回真否则返回假

  StrCompare(S,T)

  串S和T存在,若S>T,则返回值大于0,若S=T,则返回值=0,若S

  StrLength(S)

  串S存在返回S的元素个数称为串的长度.

  ClearString(&S)

  串S存在将S清为空串

  Concat(&T,S1,S2)

  串S1和S2存在用T返回由S1和S2联接而成的新串

  SubString(&Sub,S,pos,len)

  串S存在,1<=pos<=StrLength(S)且0<=len<=StrLength(S)-pos+1

  Index(S,T,pos)

  串S和T存在,T是非空,1<=pos<=StrLength(S),若主串S中存在和串T值相同的子串,则返回它在主串S中第pos个字符之后第一次出现的位置,否则函数值为0

  Replace(&S,T,V)

  串S,T和V存在,T是非空串,用V替换主串S中出现的所有与T相等的不重叠的子串

  StrInsert(&S,pos,T)

  串S和T存在,1<=pos<=StrLength(S)+1,在串S的第pos个字符之前插入串T

  StrDelete(&S,pos,len)

  串S存在,1<=pos<=StrLength(S)-len+1从串中删除第pos个字符起长度为len的子串

  DestroyString(&S)

  串S存在,则串S被销毁

  }ADT String

  三、串操作应用举例:

  1文字处理中常用的:串的查找(比较,定位)与替换

  在TC集成环境中可用^QF快速查找变量 在WORD中可用搜索与替换批量改变文本

  2串的截断与连接

  可用求子串及串连接的方法进行文字处理

  四、总结

  找出几个自己亲自做过的串操作例子。

时间: 2024-10-01 05:39:18

数据结构基础之串的定义与作用的相关文章

数据结构教程 第十四课 串的定义

教学目的: 掌握串的定义及作用 教学重点: 串的类型定义 教学难点: 串的类型定义 授课内容: 一.串定义 串(或字符串),是由零个或多个字符组成的有限序列.一般记为: s='a1a2...an'(n>=0) 其中s是串的名,用单引号括起来的字符序列是串的值:串中字符的数目n称为串的长度.零个字符的串称为空串,它的长度为零. 串中任意个连续的字符组成的子序列称为该串的子串.包含子串的串相应地称为主串.通常称字符在序列中的称为该字符在串中的位置.子串在主串中的位置则以子串的第一个字符在主串中的位置

“数据结构基础”系列网络课程主页

前言 自从下决心要解决学生动手能力差的问题,开始了课程实践资源的建设之旅:自迷上了翻转课堂,所教课程的视频,也就逐渐形成了体系.在为我自己的校内学生服务的同时,也希望能够让更多人有机会用到. 自全身心投入教学,收入.奖金的渠道也便收缩到了极致.接受CSDN学院商业运作的规则,将课程投放此处,一则创收一些,弥补付出数倍精力建设资源而只能喝大锅饭中稀粥中的不平衡,二则因免费带来的不珍惜也让自己有些不快.课程定价大概等值于一张景区门票,或者一块生日蛋糕,愿者自行决定. 为天下IT学子服务的诺言不变,为

数据结构实践项目——串

本文针对数据结构基础系列网络课程(4):串. 1. 串的基本概念及导学 2. 串的顺序存储及其基本操作实现 3. 串的顺序存储应用 4. 串的链式存储及其基本操作实现 5. 串的模式匹配(Brute-Force算法) 6. 串的模式匹配(KMP算法) [项目1 - 建立顺序串的算法库] 定义顺序串的存储结构,实现其基本运算,并完成测试. 要求: 1.头文件sqString.h中定义数据结构并声明用于完成基本运算的函数.对应基本运算的函数包括: void StrAssign(SqString &s

c++-C++ PAT数据结构基础02-1题 反转单链表

问题描述 C++ PAT数据结构基础02-1题 反转单链表 题目大意:反转单链表,给定常数K和单链表L,要求按每K个节点反转单链表,如:L: 1->2->3->4->5->6 K=3,输出:3->2->1->6->5->4,如果K=4,输出:4->3->2->1->5->6. 输入说明:每次输入一个案例,对每个案例,第一行内容是链表第一个节点的地址,节点数N(N<=100,000)(不一定是最终形成的单链表的节

数据结构基础 伸展树

问题描述 数据结构基础 伸展树 为什么我自己画出来的展开的树和书上的不一样呢,是哪步旋转错了么? 解决方案 数据结构 - 树(基础)数据结构基础(3)-------------树第六章数据结构基础之树部分 解决方案二: 图看不清,谁知道你问的啥.

数据结构实验之串一:KMP简单应用

数据结构实验之串一:KMP简单应用 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 给定两个字符串string1和string2,判断string2是否为string1的子串. Input  输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格. Output  对于每组输入数据,若st

数据结构实验之串二:字符串匹配

数据结构实验之串二:字符串匹配 Time Limit: 1000MS Memory Limit: 65536KB Problem Description   给定两个字符串string1和string2,判断string2是否为string1的子串.   Input  输入包含多组数据,每组测试数据包含两行,第一行代表string1,第二行代表string2,string1和string2中保证不出现空格.(string1和string2大小不超过100字符)   Output  对于每组输入数

C++语言基础-字串操作函数

如果你用过具有string数据类型的编程语言,你可能很不习惯,别人也有同感,所以标准C语言库中提供了几个字串操作函数.表1.3列出了最常用的字串操作函数及其用法说明.关于每个函数的详细说明和实例,见C++ Builder联机帮助. 表1.3字串操作函数 函数 说明 strcat() 将字串接合到目标字串的末尾 strcmp() 比较两个字串是否相等 strcmpi() 比较两个字串是否相等,不考虑大小写 strcpy() 将字串内容复制到目标字串中 strstr() 扫描字串中第一个出现的字串

c++基础问题,关于定义数组。

问题描述 由于长期没有接触C++,以前的基础知识都忘了,问题是这样的:首先,我有一个结构体:struct MyConn{int a;char b;}int device_size=sizeof(MyConn);为什么在我定义数组长度的时候char rece[sizeof(MyConn)] 这样定义是正确的:但是,char rece[device_size]却是错误的?求解!! 问题补充:kidding87 写道 解决方案 编译器,觉得你那个不是静态的量,所以编译不通过解决方案二:int devi