实验总结报告-串和数组

更新时间:2023-10-15 01:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验总结报告—栈和队列

学号: 姓名: 时间:

一、目的 1.做实验的目的 2.2.撰写实验报告的目的 二、内容

1.说明实验次数及实验内容 本次实验用一个实验课时完成。 实验内容:

1. 编写函数StrAssign(), StrCopy() , StrLenth() , StrCompare() , StrConcat() ,

Substring(), Replace(),完成串赋值,串复制,求串长度,串比较,串连接,求字

串,子串替代等相应功能。 注:Replace() 依赖Find_KMP()

2. 使用KMP 算法,编写函数Find_KMP(char *S,char *P,int start)实现字符串匹配。 测试数据: 2.1

char S[] = “abcabcabcd”; char P[] = “abcabcd”;

2.2char S[] = “abcdababcabcdabcabcabcd”; char P[] = “abcabcd”; 2.3

char S[] = “cocaocoaoc”; char P[] = “coaoc”;

要求: 1.打印出模式串P 的next[]模式数组;

2.完成Find_KMP()后在Repalce()中调用,将P 替换成“AAA”。 注意2.2 有2 个地方要替换。

3. 创建三元组实现以下稀疏矩阵的存储,并利用三元组实现稀疏矩阵的转置,比

较“按需查找”方法与“按位就座”方法的区别。 0 12 9 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 14 0 0 0 24 0 0 0 0 0 18 0 0 0 0 0 15 0 0 7 0 0 0

建议实现流程为1.矩阵2.三元组3.转置的三元组4.转置的矩阵,将3 或4 打印出来。 2.做实验完成情况

实验内容在实验课时时间内完成(提前编写了大概1/2部分的代码),

选做内容也完成。

本次实验内容较多,为使代码看着简洁有条理,采用了建工程的方式。 串部分:

自定义了头文件 String.h: /*自定义头文件*/ #include

#define MAX_LEN 255

typedef unsigned char SString[MAX_LEN + 1];

/*自定义函数*/

void StrAssign(SString &T, char s[]);//将字符串常量s赋给T void StrPrint(SString T);//打印串

void StrCopy(SString &T, SString S);//串复制 void test();//检验串操作 int StrLength(SString T);//求串长

int StrCompare(SString T, SString S);//比较串,T>S返回正值,T

void StrConcat(SString &T, SString S1, SString S2);//用T返回SString类型串S1、S2连接成的新串

void SubString(SString &S, SString T, int pos, int len);//用S返回串T中起始位置为pos,长度为len的字串

void Index(SString S, SString T, int pos[]);//若S串中存在不重叠的子串T,则用pos[]返回所有T串的起始位置

void StrReplace(SString &S, SString T, SString V);//若串S中存在字串T,则用V替代所有不重叠的T

void StrInsert(SString &S, int pos, SString T);//在串S中pos位置插入子串T

void StrDelete(SString &S, int pos, int len);//在串S中pos位置删除长度为len的子串

void GetNext(SString S, int next[]);//求模式串中的next函数修正值并写入数组next[]

int FindKMP(SString S, SString T, int start);//在串S中从start位置开始,查找第一次出现模式T的位置返回,没找到返回-1

void StrReplace2(SString &S, SString T, SString V);//若串S中存在字串T,则用V替代所有不重叠的T void KMP();//KMP算法及其应用

在头文件中对所有要用到的自定义函数进行了声明,各函数的功能可见代码注释部分。

串赋值:

#include\

void StrAssign(SString &T, char s[]){

}

该操作将字符串常量s中的元素赋值给SString类型T; if (!s){ } int i = 0; while (s[i]!='\\0'){ } T[i] = '\\0'; T[i] = s[i]; i++;

printf(\return;

串复制:

#include\

void StrCopy(SString &T, SString S){

if (!S){ }

printf(\原串为空串\\n\return;

本文来源:https://www.bwwdw.com/article/53jf.html

Top