数据结构实验4顺序串和链串的实现Word文件下载.docx
- 文档编号:22876480
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:20
- 大小:61.76KB
数据结构实验4顺序串和链串的实现Word文件下载.docx
《数据结构实验4顺序串和链串的实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验4顺序串和链串的实现Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
实验1:
编写一个程序,实现顺序串的各种基本算法,并在此基础上设计一个主程序完成如下功能:
1.建立串s=“abcdefghefghijklmn”和串s1=“xyz”
2输出串s
3输出串s的长度
4在串s的第9个字符位置插入串s1而产生c串s2
5输出串s2
6删除串s第2个字符开始的5个字符替换成串s2
7输出串s2
8将串s的第2个字符开始的5个字符替换成串s1而产生串s2
9输出串s2
10提取串s的第2个字符开始的10个字符而产生串s3
11输出串s3
12将串s1和串s2连接起来而产生串s4
13输出串s4
实验2:
编写一个程序,实现链串的各种基本算法,并在此基础上设计一个主程序完成如下功能:
三、实验预习内容
1.首先掌握串的基本概念:
串是由零个或多个字符组成的有限序列;
2.灵活掌握串的存储结构
3.掌握串的顺序存储结构和链式存储结构
●串赋值运算算法
●串复制运算算法
●求串长运算算法
●判断串相等运算算法
●串连接运算算法
●求子串运算算法
●查找子串位置运算算法
●子串插入运算算法
●子串删除运算算法
●子串替换运算算法
●输出串运算算法
4.理解串的模式匹配
三、实验结果与分析
实验结果:
实验分析:
通过本次试验,我了解并掌握了串的基础知识,并利用串的顺序存储结构和链式存储结构,编写了两个程序,串是一种线性结构,是由零个或多个字符组成的优先序列,串的处理在计算机非数值处理中占有重要的地位,如信息检索系统、文字编辑等都以串作为处理对象。
所以串很重要。
在今后的学习中我会多加练习,更熟练的掌握串的应用。
源代码:
#include<
stdio.h>
malloc.h>
#defineMaxSize1024
typedefcharElemType;
typedefstruct
{
chardata[MaxSize];
intlength;
}SqString;
//建立串s
voidStrAssign(SqString&
s,charcstr[])//串的赋值(s为引用型参数)
{
inti;
for(i=0;
cstr[i]!
='
\0'
;
i++)
s.data[i]=cstr[i];
s.length=i;
}
//串长运算
intStrLength(SqStrings)
{
return(s.length);
}
//子串插入
SqStringInsStr(SqStrings1,inti,SqStrings2)
intj;
SqStringstr;
str.length=0;
if(i<
=0||i>
s1.length+1)//参数不正常时返回空串
returnstr;
for(j=0;
j<
i-1;
j++)//将s1.data【0.。
i-2】复制到str
str.data[j]=s1.data[j];
s2.length;
j++)//将s2.data【0.。
s2.length-1】复制到str
str.data[i+j-1]=s2.data[j];
for(j=i-1;
s1.length;
j++)//将s1.data【i-1..s1.length-1】复制到str
str.data[s2.length+j]=s1.data[j];
str.length=s1.length+s2.length;
//删除串
SqStringDelStr(SqStrings,inti,intj)
intk;
str.length=0;
s.length||i+j>
s.length+1)//参数不正常时返回空串
for(k=0;
k<
k++)//将s.data【0.。
str.data[k]=s.data[k];
for(k=i+j-1;
s.length;
k++)//将s.data【i+j-1..s.length-1】复制到str
str.data[k-j]=s.data[k];
str.length=s.length-j;
//子串替换
SqStringRepStr(SqStrings,inti,intj,SqStringt)
s.length)//参数不正常时返回空串
for(k=0;
str.data[k]=s.data[k];
t.length;
k++)//将t.data【0.。
t.length】复制到str
str.data[i+k-1]=t.data[k];
for(k=i+j-1;
str.length=s.length-j+t.length;
//提取串--求子串
SqStringSuStr(SqStrings,inti,intj)
s.length||j<
0||i+j-1>
s.length)
//参数不正常时返回空串
for(k=i-1;
i+j-1;
k++)//将s.data【i..i+j】复制到str
str.data[k-i+1]=s.data[k];
str.length=j;
//串连接
SqStringConcat(SqStrings,SqStringt)
inti;
str.length=s.length+t.length;
for(i=0;
i<
str.data[i]=s.data[i];
str.data[s.length+1]=t.data[i];
returnstr;
//输出串
intDisStr(SqStrings)
if(s.length>
0)
{
for(i=0;
printf("
%c"
s.data[i]);
\n"
);
}
//主函数
voidmain()
SqStrings,s1,s2,s3,s4;
printf("
1.建立串s=abcdefghefghijklmn和串s1=xyz"
StrAssign(s,"
abcdefghijklmn"
StrAssign(s1,"
xyz"
2.输出串s"
DisStr(s);
3.输出串s的长度:
%d\n"
StrLength(s));
4.在串s的第9个字符位置插入串s1而产生c串s2\n"
s2=InsStr(s,9,s1);
5.输出s2:
"
DisStr(s2);
\n\n"
6.删除串s第2个字符开始的5个字符替换成串s2\n"
s2=DelStr(s,2,5);
printf("
7.输出串s2:
DisStr(s2);
8.将串s的第2个字符开始的5个字符替换成串s1而产生串s2\n"
s2=RepStr(s,2,5,s1);
9.输出串s2:
10.提取串s的第2个字符开始的10个字符而产生串s3\n"
s3=SuStr(s,2,10);
11.输出串s3:
12.将串s1和串s2连接起来而产生串s4\n"
s4=Concat(s1,s2);
13.输出串s4:
typedefstructsnode
chardata;
structsnode*next;
}LiString;
//建立串--赋值
voidStrAssign(LiString*&
s,charcstr[])
LiString*r,*p;
s=(LiString*)malloc(sizeof(LiString));
r=s;
p=(LiString*)malloc(sizeof(LiString));
p->
data=cstr[i];
r->
next=p;
r=p;
r->
next=NULL;
}
////串长运算
intStrLength(LiString*s)
inti=0;
LiString*p=s->
next;
while(p!
=NULL)
i++;
p=p->
returni;
LiString*InsStr(LiString*s,inti,LiString*t)
LiString*str,*p=s->
next,*p1=t->
next,*q,*r;
str=(LiString*)malloc(sizeof(LiString));
str->
r=str;
StrLength(s)+1)
for(k=1;
i;
k++)
q=(LiString*)malloc(sizeof(LiString));
q->
data=p->
data;
next=q;
r=q;
p=p->
while(p1!
q=(LiString*)malloc(sizeof(LiString));
data=p1->
p1=p1->
while(p!
LiString*DelStr(LiString*s,inti,intj)
intk=0;
LiString*str,*p=s->
StrLength(s)||j<
j;
p=p->
////子串替换
LiString*RepStr(LiString*s,inti,intj,LiString*t)
StrLength(s))
k++);
q->
LiString*SuStr(LiString*s,inti,intj)
LiString*Concat(LiString*s,LiString*t)
p=t->
intDisStr(LiString*s)
p->
data);
LiString*s,*s1,*s2,*s3,*s4;
注:
空间不够,可以增加页码。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 顺序 实现