串的基本操作及其应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

广西工学院计算机学院《数据结构》课程实验报告书

实验五串的基本操作及其应用

学生姓名:1

学号:2

班级:3

指导老师:4

专业:计算机学院软件学院

提交日期:2013年6月21日

1.实验目的

1)掌握串的定义、存储结构及基本操作。

2.实验内容

(1)建立一个串,实现串的基本操作。包括:

//1.判串长: 返回串s的元素个数。

int StrLength(HString S)

//2.判空串: 若串s为空串,则返回true

Status StrEmpty(HString S)

//3.串赋值:现有串s,空串 t,实现将s赋值给t的操作

Status StrAssign(HString &T,HString S)

//4.串连接:现有串s和 t,实现将t链接到串s之后的操作。(流程图)

Status StrConcat(HString &S,HString T)

//5.串比较: 依次比较2个串s和t,若长度相同且字符相同,则串相同,返回0,若s>t,则返回值>0, 若s

Status StrCompare(HString S,HString T)

//6.串替换:在主串s中用子串v替换所有的子串t

Status StrReplace(HString &S,HString V,HString T)

//7.串插入:在主串s中的给定位置pos插入子串t

Status StrInsert(HString &S,int pos,HString T)

//8.取子串: 将串s中从起始位置pos开始长度len的字符串放入另一个串t

Status SubString(HString &S,int pos,int len,HString &T)

//9.串删除: 删除串s中的子串t。

Status StrDelete(HString &S,HString T)

//10.求子串位置:从主串s中取出从第i个位置开始、长度和串t相同的子串,和t 进行比较,若相等,则t在s中的位置值为i

Status StrIndex(HString &S,int i,HString T)

//(2)串应用:设有串s,求出它的所有子串,并输出。

Status SubString_All(HString S)

3.实验要求

(1)上机前交实验源程序(纸质版),由学习委员统一收好交老师(附上不交同学名单)。

(2)用一切你能想到的办法解决遇到的问题,培养解决问题的能力。

(3)实验课上进行答辩。

(4)实验报告当场交。报告内容包括:实验目的、实验内容、实验代码、实验运行结果以及实验体会供五部分。

串的堆分配存储

typedef struct

{

char *ch; //若是非空串,则按串长分配储存区,否则ch为NULL

int length; //串长度

}HString;

2.

3.主要算法

3.1 顺序存储结构

(1)结构定义:

#include

#include

#include

#define MAX 255

typedef char sstring[MAX+1];

int strlength(sstring s);//判断串长

int strempty(sstring s); //判断空串

int strassign(sstring &t,char* s);//串赋值

int concat(sstring &t,sstring s1,sstring s2); //串连接

int strcompare(sstring s,sstring t);//串的比较

void strprint(sstring s);//输出

int strinsert(sstring s,int pos,sstring t);//串插入

int strdelete(sstring s,int pos,int len);//删除字串

int replace(sstring s,sstring t,sstring v);//串的替换

int substring(sstring &sub,sstring s,int pos,int len);//取子串int index(sstring s,sstring t,int pos);//字串定位

//串赋值

int strassign(sstring &t,char* s)

{//初始条件:字符串chars已经存在

//操作结果:生成一个其值等于chars的串t

int i,n;

n=strlen(s);

if(n>=MAX)

return 0;

else

{

t[0]=n;

for(i=1;i<=t[0];i++)//依次给串赋值

t[i]=s[i-1];

return 1;

}

}

//求串长度

int strlength(sstring s)

{//操作结果:返回串s的元素

return s[0];

}

//判断串是否空

int strempty(sstring s)

{

return (s[0]==0);//返回值

}

//串连接

int concat(sstring &t,sstring s1,sstring s2)

{//初始条件:字符串s1和s2已经存在

//操作结果:用T返回s1和s2连接成的新串。

int i;

if(s1[0]+s2[0]<=MAX)

{

for(i=1;i<=s1[0];i++)//依次把串s1中的元素赋值给串t t[i]=s1[i];

for(i=1;i<=s2[0];i++)

t[i+s1[0]]=s2[i];

t[0]=s1[0]+s2[0];//计算串t的长度

return 1;

}

else

{

for(i=1;i<=s1[0];i++)

t[i]=s1[i];

for(i=1;i<=MAX-s1[0];i++)

t[i+s1[0]]=s2[i];

t[0]=MAX;

return 1;

}

}

相关文档
最新文档