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

教学目的: 掌握串的定义及作用

教学重点: 串的类型定义

教学难点: 串的类型定义

授课内容:

一、串定义

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

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>|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<T,则返回值<0

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-11-03 22:03:42

数据结构教程 第十四课 串的定义的相关文章

数据结构教程 第十五课 串的表示和实现

教学目的: 掌握串的几种实现方法 教学重点: 定长顺序存储表示法 堆分配存储表示法 教学难点: 堆分配存储表示法 授课内容: 一.复习串的定义 串的定义 二.定长顺序存储表示 类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列. #define MAXSTRLEN 255 typedef unsigned char SString[MAXSTRLEN+1] //0号单元存放串长 串的实际长度可在这予定义长度的范围内随意,超过予定义长度的串值则被舍去 串长可用下标为0的数组元素

数据结构教程 第二十四课 遍历二叉树

教学目的: 掌握二叉树遍历的三种方法 教学重点: 二叉树的遍历算法 教学难点: 中序与后序遍历的非递归算法 授课内容: 一.复习二叉树的定义 二叉树由三个基本单元组成:根结点.左子树.右子树 问题:如何不重复地访问二叉树中每一个结点? 二.遍历二叉树的三种方法: 先序 1 访问根结点 2 先序访问左子树 3 先序访问右子树 中序 1 中序访问左子树 2 中序访问根结点 3 中序访问右子树 后序 1 后序访问左子树 2 后序访问右子树 3 访问根结点 三.递归法遍历二叉树 先序: Status(P

数据结构教程 第十六课 串操作应用举例

教学目的: 掌握文本编辑的基本原理及方法 教学重点: 简单文本编辑 教学难点: 串的存储管理 授课内容: 一.复习串的堆分配存储表示 堆分配存储表示 二.文本编辑基本原理 图一 文本编辑可以用于源程序的输入和修改(如图一),也可用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色(如图二). 图二 可用于文本编辑的程序很多,功能强弱差别很大,但基本操作是一致的:都包括串的查找,插入和删除等基本操作. 对用户来讲,一个文本(文件)可以包括若干页,每页包括若干行,每行包括若干文字. 对文本编辑程

数据结构教程 第二十六课 图的定义与术语

教学目的: 掌握图的定义及常用术语 教学重点: 图的常用术语 教学难点: 图的常用术语 授课内容: 一.图的定义 图是一种数据元素间为多对多关系的数据结构,加上一组基本操作构成的抽象数据类型. ADT Graph{ 数据对象V :V是具有相同特性的数据元素的集合,称为顶点集. 数据关系R: R={VR} VR={<v,w>|v,w(-V且P(v,w),<v,w>表示从v到w的弧,谓词P(v,w)定义了弧<v,w>的意义或信息} 基本操作P: CreateGraph(&a

数据结构教程 第十九课 实验四 串的实现实验

教学目的: 掌握PASCAL串类型的实现方法 教学重点: 串的操作 教学难点: 串的联接操作 授课内容: 一.PASCAL串类型的存储表示: #define MAXSTRLEN 255 typedef char SString[MAXSTRLEN+1]; 二.串的操作: 1.串的联接 mystrcat(SString s1,SString s2,SString t); 2.求子串 mysubstr(SString t,int pos,int len,SString sub); 3.子串定位 my

数据结构教程 第二十五课 单元测验

教学目的: 复习前面所学的内容,检验学习效果,拾遗补缺 教学重点: 教学难点: 授课内容: 测验题: 一,填空: 基本数据结构有____,____,____,____四种. 存储结构可根据数据元素在机器中的位置是否连续分为____,____. 算法的基本要求有_____,_____,____,____. 度量算法效率可通过_______,_______两方面进行. 栈的定义:_______________________. 二,简答: 举例说明数据对象.数据元素.数据项的定义. 类C语言和C语言

数据结构教程 第二十九课 静态查找表(一)顺序表的查找

教学目的: 掌握查找的基本概念,顺序表查找的性能分析 教学重点: 查找的基本概念 教学难点: 顺序表查找的性能分析 授课内容: 一.查找的基本概念 查找表: 是由同一类型的数据元素(或记录)构成的集合. 查找表的操作: 1.查询某个"特定的"数据元素是否在查找表中.2.检索某个"特定的"数据元素的各种属性.3.在查找表中插入一个数据元素:4.从查找表中刪去某个数据元素. 静态查找表 对查找表只作前两种操作 动态查找表 在查找过程中查找表元素集合动态改变 关键字 是数

数据结构教程 第十二课 实验二 循环链表实验

本课主题: 实验二 循环链表实验 教学目的: 掌握单向链表的实现方法 教学重点: 单向链表的存储表示及操作 教学难点: 单向链表的操作实现 授课内容: 一.单向链表的存储表示 C源程序 #include<stdio.h> #include<malloc.h> #include<conio.h> #define ERROR 0 #define OK 1 #define EQUAL 1 #define OVERFLOW -1 #define LIST_INIT_SIZE 1

数据结构教程 第二十八课 图的存储结构

教学目的: 掌握图的二种存储表示方法 教学重点: 图的数组表示及邻接表表示法 教学难点: 邻接表表示法 授课内容: 一.数组表示法 用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息. // 图的数组(邻接矩阵)存储表示 #define INFINITY INT_MAX //最大值无穷大 #define MAX_VERTEX_NUM 20 //最大顶点个数 typedef enum{DG,DN,AG,AN} GraphKind;//有向图,有向网,无向图,无向网 typ