数据结构顺序串和链串实验报告

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

《数据结构》课程实验报告

实验名称顺序串和链串实验序号 4 实验日期

姓名院系班级学号

专业指导教师成绩

教师评语

一、实验目的和要求

(1)理解串和一般线形表之间的差异

(2)重点掌握在顺序串上和链串上实现串的基本运算算法

(3)掌握串的简单匹配算法和KMP算法

(4)灵活运用串这种数据结构解决一些综合应用问题

二、实验项目摘要

编写一个程序algo4-1.cpp,实现顺序串的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)建立串s=”abcdefghefghijklmn”和串sl=”xyz”;

(2)输出串s;

(3)输出串s的长度;

(4)在串s的第9个字符位置插入串sl而产生串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。

编写一个程序algo4-2.cpp,实现链串的各种基本运算,并在此基础上设计一个主程序并完成如下功能:(1)建立串s=”abcdefghefghijklmn”和串sl=”xyz”;

(2)输出串s;

(3)输出串s的长度;

(4)在串s的第9个字符位置插入串sl而产生串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。

三、实验预习内容

顺序串的基本运算的算法(StrAssign(s,cstr),StrCopy(s,t),StrEquat(s,t),StrLength(s),Concat(s,t),SubStr (s,i,j),InsStr(s1,i,s2),DelStr(s,i,j),RepStr(s,i,j,t),DispStr(s))

链串的基本运算的算法(StrAssign(s,cstr),StrCopy(s,t),StrEquat(s,t),StrLength(s),Concat(s,t),SubStr (s,i,j),InsStr(s1,i,s2),DelStr(s,i,j),RepStr(s,i,j,t),DispStr(s))

三、实验结果与分析

4-1

#include

#define MaxSize 100

typedef struct

{ char data[MaxSize];

int length;

} SqString;

void StrAssign(SqString &s,char cstr[])

{ int i;

for (i=0;cstr[i]!='\0';i++)

s.data[i]=cstr[i];

s.length=i;

}

void StrCopy(SqString &s,SqString t)

{ int i;

for (i=0;i

s.data[i]=t.data[i];

s.length=t.length;

}

int StrEqual(SqString s,SqString t)

{ int same=1,i;

if (s.length!=t.length)

else

for (i=0;i

if (s.data[i]!=t.data[i])

{ same=0;

break;

}

return same;

}

int StrLength(SqString s)

{

return s.length;

}

SqString Concat(SqString s,SqString t)

{ SqString str;

int i;

str.length=s.length+t.length;

for (i=0;i

str.data[i]=s.data[i];

for (i=0;i

str.data[s.length+i]=t.data[i];

return str;

}

SqString SubStr(SqString s,int i,int j)

{ SqString str;

int k;

str.length=0;

if (i<=0 || i>s.length || j<0 || i+j-1>s.length) return str;

for (k=i-1;k

str.data[k-i+1]=s.data[k];

str.length=j;

return str;

}

SqString InsStr(SqString s1,int i,SqString s2) { int j;

SqString str;

str.length=0;

if (i<=0 || i>s1.length+1)

相关文档
最新文档