- /*
- Copyright (c)2016,烟台大学计算机与控制工程学院
- All rights reserved.
- 文件名称:项目4.cbp
- 作 者:陈鹏鹏
- 完成日期:2016年10月21日
- 版 本 号:v1.0
- 问题描述:采用顺序存储方式存储串,实现下列算法并测试。
- 输入描述:无
- 程序输出:测试数据
- */
-
- 代码如下:
-
- #include <iostream>
using namespace std;
#include <malloc.h>
#define MaxSize 100 //最多的字符个数
typedef struct
{ char data[MaxSize]; //定义可容纳MaxSize个字符的空间
int length; //标记当前实际串长
} SqString;
void Trans(SqString &s, char c1, char c2)
{
int i;
char d[100];
cin>>d;
for (i=0;d[i]!='\0';i++)
s.data[i]=d[i];
s.length=i;
for (i=0; i<s.length; i++)
if (s.data[i]==c1)
s.data[i]=c2;
}
void Invert(SqString &s)
{
int i;
SqString q;
for (i=0; i<s.length; i++)
{
q.data[i] =s.data[s.length-i-1];
}
for (i=0; i<s.length; i++)
{
s.data[i]=q.data[i];
}
}
void DellChar(SqString &s, char c)
{
int k=0, i=0; //k记录值等于c的字符个数
while(i<s.length)
{
if(s.data[i]==c)
k++;
else
s.data[i-k]=s.data[i];
i++;
}
s.length -= k;
}
void DispStr(SqString s) //输出串
{ int i;
if (s.length>0)
{ for (i=0;i<s.length;i++)
printf("%c",s.data[i]);
printf("\n");
}
}
void StrAssign(SqString &s,char cstr[]) 字符串常量cstr赋给串s
{ int i;
for (i=0;cstr[i]!='\0';i++)
s.data[i]=cstr[i];
s.length=i;
}
SqString CommChar(SqString s1,SqString s2)
{
SqString s3;
int i,j,k=0;
for (i=0; i<s1.length; i++)
{
for (j=0; j<s2.length; j++)
if (s2.data[j]==s1.data[i])
break;
if (j<s2.length) //s1.data[i]是公共字符
{
s3.data[k]=s1.data[i];
k++;
}
}
s3.length=k;
return s3;
}
int main()
{
SqString s;
Trans(s,'a','c');
DispStr(s);
Invert(s);
DispStr(s);
DellChar(s,'d');
DispStr(s);
SqString s1, s2, s3;
StrAssign(s1, "message");
StrAssign(s2, "agent");
s3 = CommChar(s1, s2);
DispStr(s3);
return 0;
}
- 运行结果:
-