串操作实验报告Word格式文档下载.docx
- 文档编号:16627642
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:6
- 大小:17.02KB
串操作实验报告Word格式文档下载.docx
《串操作实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《串操作实验报告Word格式文档下载.docx(6页珍藏版)》请在冰豆网上搜索。
三、实验内容
编写一个程序,实现顺序串的各种基本运算,并在此基础上设计一个主程序。
具体如下:
编写栈的基本操作函数
顺序串类型定义如下所示:
typedefstruct{
charch[mAxsIZe];
intlen;
}seqstring;
(1)串赋值Assign(s,t)
?
将一个字符串常量赋给串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(1≤i≤strLength((:
串操作实验报告)s))个字符开始的、由连续j个字符组成的子串。
(7)插入Insstr(s,i,t)
将串t插入到串s的第i(1≤i≤strLength(s)+1)个字符中,即将t的第一个字符作
为s的第i个字符,并返回产生的新串
(8)串删除Delstr(s,i,j)
从串s中删去从第i(1≤i≤strLength(s))个字符开始的长度为j的子串,并返回产
生的新串。
(9)串替换Repstr(s,s1,s2)
在串s中,将所有出现的子串s1均替换成s2。
(10)输出串Dispstr(s)
输出串s的所有元素值
(11)判断串是否为空Isempty(s)
编写主函数
调用上述函数实现下列操作:
(1)建立串s=“abcdefghijklmn”,串s1=“xyz”,串t=“hijk”
(2)复制串t到t1,并输出t1的长度
(3)在串s的第9个字符位置插入串s1而产生串s2,并输出s2
(4)删除s第2个字符开始的5个字符而产生串s3,并输出s3
(5)将串s第2个字符开始的3个字符替换成串s1而产生串s4,
s4
(6)提取串s的第8个字符开始的4个字符而产生串s5,并输出s5
(7)将串s1和串t连接起来而产生串s6,并输出s6
(8)比较串s1和s5是否相等,输出结果
程序:
#include
#definemAxsIZe100
}sqstring;
voidstrAssign(sqstring
for(i=0;
t[i]!
=\0;
i++)
s.ch[i]=t[i];
s.len=i;
}
voidstrcopy(sqstring
并输出
i s.ch[i]=t.ch[i];
s.len=t.len;
voidstrequal(sqstrings,sqstringt){//判断串相等intsame=1,i;
if(s.len!
=t.len){
same=0;
else{
i if(s.ch[i]!
=t.ch[i]){
break;
if(same==0)
printf("
s1,s5不相等"
);
else
s1,s5相等"
\n"
voidstrLength(sqstrings){//计算串长度
t1的长度:
"
%d"
s.len);
sqstringconcat(sqstrings,sqstringt){//串连接sqstringstr;
inti;
str.len=s.len+t.len;
i str.ch[i]=s.ch[i];
i str.ch[s.len+i]=t.ch[i];
returnstr;
sqstringsubstr(sqstrings,inti,intj){//求子串sqstringstr;
intk;
str.len=0;
if(is.len||js.len)
for(k=i-1;
k str.ch[k-i+1]=s.ch[k];
str.len=j;
sqstringInsstr(sqstrings1,inti,sqstrings2){//插入intj;
sqstringstr;
if(is1.len+1)
for(j=0;
j str.ch[j]=s1.ch[j];
j str.ch[i+j-1]=s2.ch[j];
for(j=i-1;
j str.ch[s2.len+j]=s1.ch[j];
str.len=s1.len+s2.len;
sqstringDelstr(sqstrings,inti,intj){//删除intk;
if(is.len||i+j>
s.len+1)
for(k=0;
k str.ch[k]=s.ch[k];
for(k=i+j-1;
k str.ch[k-j]=s.ch[k];
str.len=s.len-j;
sqstringRepstr(sqstrings,inti,intj,sqstringt){//替换intk;
if(is.len||i+j-1>
s.len)
k str.ch[i+k-1]=t.ch[k];
k str.ch[t.len+k-j]=s.ch[k];
str.len=s.len-j+t.len;
voidDispstr(sqstrings){//输出串所有元素inti;
if(s.len>
0){
i printf("
%c"
s.ch[i]);
voidIsempty(sqstrings){//判断串是否为空if(s.len>
0)
串不为空"
串为空"
篇二:
串实验报告
篇三:
字符串实验报告
数据结构
字符串实验
班级:
计算机应用技术10-1学号:
10602101048姓名:
姚福刚
一、实验目的及要求:
掌握有关字符串的基本操作和存储结构,并编写相应的基本操作算法。
二、实验内容:
(1)求字符串的长度算法
(2)求字符串的拷贝算法
(3)字符串的连接算法
(4)字符串的比较算法
(5)字符串的逆置算法
(6)用strtok()函数分离单词。
(选做)
三、实验准备:
1)计算机设备;
2)程序调试环境的准备,如Vc6或wIn-Tc环境;
3)实验内容的算法分析与代码设计准备。
四、函数实现
1、长度函数
intstrlen(char*p)
{intcount=0;
while(*p!
=\0)
{count++;
p++;
returncount;
2、拷贝函数
voidscopy(char*s1,char*s2)
{intlen,i;
len=strlen(s2);
i s1[i]=s2[i];
s1[i]=\0;
return;
3、连接函数
voidstrcat(char*s1,char*s2)
{intlen1,len2;
len1=strlen(s1);
scopy(s1+len1,s2);
4、比较函数
inttrcmp(char*s1,char*s2)
{inti=0;
/*s1 while(s1[i]==s2[i])
{if(s1[i]==\0)return0;
i++;
return(s1[i]-s2[i]);
5、逆置函数
voidReversestr(char*s)
{inti,j;
chart;
for(i=0,j=strlen(s)-1;
i {t=s[i];
s[i]=s[j];
s[j]=t;
五、测试(在主函数中调用函数测试功能)
#definemAxsIZe80
intmain(void)
{charp1[]="
p2[]="
;
\n\t
(1)p1->
length=%dp2->
length=%d\n"
strLen(p1),strLen(p2));
strcat(p1,p2);
\n\t
(2)p1=%s\n"
p1);
\n\t(3)theresultis%d\n"
strcmp(p1,p2));
Reversestr(p1);
\n\t(4)p1=%s\n"
getch();
return0;
实验截图:
六、心得体会
通过这次实验让我了解了什么是字符串,他是一种特殊的线性表,并了解有关字符串的基本操作和存储结构,并编写相应的基本操作算法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作 实验 报告