收藏 分享(赏)

数据结构-顺序串基本操作实验报告.doc

上传人:HR专家 文档编号:11597583 上传时间:2020-07-25 格式:DOC 页数:7 大小:30KB
下载 相关 举报
数据结构-顺序串基本操作实验报告.doc_第1页
第1页 / 共7页
数据结构-顺序串基本操作实验报告.doc_第2页
第2页 / 共7页
数据结构-顺序串基本操作实验报告.doc_第3页
第3页 / 共7页
数据结构-顺序串基本操作实验报告.doc_第4页
第4页 / 共7页
数据结构-顺序串基本操作实验报告.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、 数据结构实验报告课程 数据结构 _ 实验名称 顺序串基本操作 院系 电信学院 专业班级 计科10-4 姓名 学 号 一、实验目的1)熟悉串的定义和串的基本操作。2)掌握顺序串的基本运算。3)加深对串数据结构的理解,逐步培养解决实际问题的编程能力。二、实验环境装有Visual C6.0的计算机。本次实验共计2学时。三、实验内容编写一个程序,实现顺序串的各种基本运算,并在此基础上设计一个主程序。具体如下:编写串的基本操作函数顺序串类型定义如下所示:typedef struct char chMAX; int length; SeqString;(1)串赋值 Assign(s,t) 将一个字符串常

2、量赋给串s,即生成一个其值等于t的串s(2)串复制 StrCopy(s,t) 将串t赋给串s(3) 计算串长度 StrLength(s) 返回串s中字符个数(4)判断串相等StrEqual(s,t) 若两个串s与t相等则返回1;否则返回0。(5)串连接 Concat(s,t) 返回由两个串s和t连接在一起形成的新串。(6)求子串 SubStr(s,i,j) 返回串s中从第i(1iStrLength(s)个字符开始的、由连续j个字符组成的子串。(7)插入InsStr (s,i,t) 将串t插入到串s的第i(1iStrLength(s)+1)个字符中,即将t的第一个字符作为s的 第i个字符,并返回

3、产生的新串 (8)串删除 DelStr (s,i,j) 从串s中删去从第i(1iStrLength(s)个字符开始的长度为j的子串,并返回产生新串。(9)串替换 RepStr (s,s1,s2) 在串s中,将所有出现的子串s1均替换成s2。(10)输出串DispStr(s) 输出串s的所有元素值(11) 判断串是否为空 IsEmpty(s) 为空返回1,不为空返回0编写主函数调用上述函数实现下列操作:(1) 建立串s=“abcdefghijklmn”,串s1=“xyz”,串t“hijk”(2) 复制串t到t1,并输出t1的长度(3) 在串s的第9个字符位置插入串s1而产生串s2,并输出s2(4

4、) 删除s第2个字符开始的5个字符而产生串s3,并输出s3(5) 将串s第2个字符开始的3个字符替换成串s1产生串s4,输出s4 (6) 提取串s的第2个字符开始的10个字符而产生串s5,并输出s5(7) 将串s1和串t连接起来而产生串s4,并输出s4(8) 比较串s1和s5是否相等,输出结果(9) 判断s3是否为空四、源程序代码#include#define MAX 100typedef struct char chMAX; int length; SqString;void StrAssign(SqString &s,char t) /串赋值int i;for(i=0;ti!=0;i+)s

5、.chi=ti;s.length=i;void StrCopy(SqString &s,SqString t) /串复制int i;for(i=0;it.length;i+)s.chi=t.chi;s.length=t.length;int StrEqual(SqString s,SqString t) /判断串相等int same=1,i; if(s.length!=t.length)same=0;elsefor(i=0;is.length;i+)if(s.chi!=t.chi)same=0;break; return(same);int StrLength(SqString s) /计算串

6、长度return(s.length);SqString Concat(SqString s,SqString t) /串连接SqString str;int i;str.length=s.length+t.length;for(i=0;is.length;i+)str.chi=s.chi;for(i=0;it.length;i+)str.chs.length+i=t.chi;return str;SqString SubStr(SqString s,int i,int j)/求子串SqString str;int k;str.length=0;if(is.length|js.length)re

7、turn str;for(k=i-1;ki+j-1;k+)str.chk-i+1=s.chk;str.length=j;return str;SqString InsStr(SqString s1,int i,SqString s2) /插入int j;SqString str;str.length=0;if(is1.length+1)return str;for(j=0;ji-1;j+)str.chj=s1.chj;for(j=0;js2.length;j+)str.chi+j-1=s2.chj;for(j=i-1;js1.length;j+)str.chs2.length+j=s1.chj

8、;str.length=s1.length+s2.length;return str;SqString DelStr(SqString s,int i,int j) /删除int k;SqString str;str.length=0;if(is.length|i+js.length+1)return str;for(k=0;ki-1;k+)str.chk=s.chk;for(k=i+j-1;ks.length;k+)str.chk-j=s.chk;str.length=s.length-j;return str;SqString RepStr(SqString s,int i,int j,S

9、qString t) /替换int k;SqString str;str.length=0;if(is.length|i+j-1s.length)return str;for(k=0;ki-1;k+)str.chk=s.chk;for(k=0;kt.length;k+)str.chi+k-1=t.chk;for(k=i+j-1;k0)for(i=0;i0)return 0; /不为空elsereturn 1; /为空int main(void)void StrAssign(SqString &s,char t);/串赋值void StrCopy(SqString &s,SqString t);

10、/串复制 int StrEqual(SqString s,SqString t);/判断串相等 int StrLength(SqString s);/计算串长度 SqString Concat(SqString s,SqString t);/串连接 SqString SubStr(SqString s,int i,int j);/求子串 SqString InsStr(SqString s1,int i,SqString s2);/插入 SqString DelStr(SqString s,int i,int j);/删除 SqString RepStr(SqString s,int i,in

11、t j,SqString t);/替换 void DispStr(SqString s);/输出串所有元素 int IsEmpty(SqString s);/判断串是否为空 char ch1=abcdefghijklmn,ch2=xyz,ch3=hijk;SqString s,s1,s2,s3,s4,s5,s6,t,t1,t2; int longth,same,kong;StrAssign(s,ch1); /建立串s=abcdefghijklmnStrAssign(s1,ch2); /建立串s1=xyzStrAssign(t,ch3); /建立串thijkStrCopy(t1,t); /将串t

12、复制给t1printf(串t1: ); DispStr(t1);longth=StrLength(t1); /求串t1的长度 printf(串t1的长度为:%dn,longth);printf(串 s: );DispStr(s);s2=InsStr(s,9,s1); /将串s1插入串s的第9个位置,得串s2printf(串s2:); DispStr(s2); /输出串s2s3=DelStr(s,2,5); /删除s第2个字符开始的5个字符而产生串s3,并输出s3printf(串s3:); DispStr(s3); /输出串s3s4=RepStr(s,2,5,s1); /用串s1替换串s中从第2

13、个字符起连续5个字符得到新串s4printf(串s4:); DispStr(s4); /输出串s4 s5=SubStr(s,2,10); /提取串s中第2个字符开始的10个字符而产生串s5 printf(串s5:);DispStr(s5); /输出串s5 s6=Concat(s1,t); /连接串s1和t而产生串s6printf(串s6:);DispStr(s6); /输出串s6same=StrEqual(s1,s5); /判断s1、s5是否相等if(same=1) printf(串s1、s5相等!);else printf(串s1、s5不相等!);kong=IsEmpty(s3); /判断s3是否为空if(kong=1)printf(n串s3为空!);else printf(n串s3不为空!n);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报