第四章 串 - 数据结构基本实验算法

发布时间 : 星期五 文章第四章 串 - 数据结构基本实验算法更新完毕开始阅读

实验 1 实现顺序串各种基本运算的算法

#include

#define MaxSize 100 //最多的字符个数 typedef struct {

char data[MaxSize];//定义可以容纳MaxSize个字符的空间 int length; //标记当前实际串长 }SqString;

void StrAssign(SqString &str,char cstr[])//由串常量cstr创建str {

int i;

for(i=0;cstr[i]!='\\0';i++) str.data[i]=cstr[i]; str.length=i; }

void StrCopy(SqString &s,SqString t)//将串t复制到串s {

int i;

for(i=0;i

int StrEqual(SqString s,SqString t)//判断两个串s和t是否相同 {

int same=1,i;

if(s.length!=t.length) //长度不相等时返回 same=0; else {

for(i=0;i

if(s.data[i]!=t.data[i])//有一个对应字符不相同时返回 same=0; }

return same; }

int StrLength(SqString s) //求串s的长度 {

return s.length; }

SqString Concat(SqString s,SqString t)//将串t连接到串s之后产生新串 {

SqString str; int i;

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

for(i=0;i

for(i=0;i

SqString SubStr(SqString s,int i,int j) //由串s的第i个字符开始的的j个字符产生新串 {

SqString str; int k;

str.length=0;

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

printf(\参数不正确\\n\);

return str; //参数不正确,返回空串 }

for(k=i-1;k

SqString InsStr(SqString s1,int i,SqString s2) //将串s2插入到串s1的第i个位置处 {

int j;

SqString str; str.length=0;

if(i<=0||i>s1.length+1)//参数不正确时返回空串 {

printf(\参数不正确\\n\); return s1; }

for(j=0;j

for(j=0;j

for(j=i-1;j

SqString DelStr(SqString s,int i,int j) //删除串s的第i个字符开始的j个字符产生新串

{

int k;

SqString str; str.length=0;

if(i<=0||i>s.length||i+j>s.length+1)//参数不正确时返回空串 {

printf(\参数不正确\\n\); return str; }

for(k=0;k

for(k=i+j-1;k

SqString RepStr(SqString s,int i,int j, SqString t) //将串s的第i个字符开始的j个字符替换成串t产生新串 {

int k;

SqString str; str.length=0;

if(i<=0||i>s.length||i+j-1>s.length)//参数不正确时返回空串 {

printf(\参数不正确\\n\); return str; }

for(k=0;k

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

for(k=i+j-1;k

str.data[t.length+k-j]=s.data[k]; str.length=s.length-j+t.length; return str; }

void DispStr(SqString s) //输出串s的所有元素 {

int i;

if(s.length>0) {

for(i=0;i

printf(\); } }

//主程序 void main() {

SqString s,s1,s2,s3,s4;

printf(\建立串s和串s1\\n\); StrAssign(s,\); StrAssign(s1,\); printf(\输出串s:\); DispStr(s);

printf(\串s的长度:%d\\n\,StrLength(s));

printf(\在串的第九个字符位置插入串s1而产生串s2\\n\); s2=InsStr(s,9,s1);

printf(\输出串s2:\); DispStr(s2);

printf(\删除串s第二个字符开始的个字符而产生串s2\\n\); s2=DelStr(s,2,3);

printf(\输出串s2:\);DispStr(s2);

printf(\将串s第二个字符开始的个字符替换成串s1而产生串s2\\n\); s2=RepStr(s,2,5,s1); printf(\输出串s2:\); DispStr(s2);

printf(\提取串s的第二个字符开始的个字符而产生串s3\\n\); s3=SubStr(s,2,10);

printf(\输出串s3:\); DispStr(s3);

printf(\将串s1和串s2连接起来而产生串s4\\n\); s4=Concat(s1,s2);

printf(\输出串s4:\); DispStr(s4); }

///////////////////////////////////////////////////////////////////// 实验 2 实现链串各种基本运算的算法 #include #include typedef struct snode {

char data;

struct snode *next; }LiString;

void StrAssign(LiString *&s,char t[]) {

联系合同范文客服:xxxxx#qq.com(#替换为@)