#include<bits/stdc++.h>
#include"../顺序串算法库/shunxuchuan.h"
using namespace std;
void trans(sqstring *&s,char c1,char c2)///将串s中所有值为c1的字符换成值为c2的字符
{
int i;
if(s->length>0)///这个没啥好说的
{
for(i=0;i<s->length;i++)
if(s->data[i]==c1)
s->data[i]=c2;
}
}
void daoguolai(sqstring &s)///OK
{
int i,k;
char te;
if(s.length>0)
{
k=s.length-1;
for(i=0;i<s.length/2;i++)///就地逆置
{
te=s.data[i];///经典的写法,设置一个中间变量
s.data[i]=s.data[k];
s.data[k]=te;
k--;
}
}
}
void shanqu(sqstring &s,char c)///OK
{
int i,j,k=0;
if(s.length>0)
{
for(i=0;i<s.length;i++)
{
if(s.data[i]==c)
{
k++;///一开始忘了计数,因为字符串的长度变了
for(j=i;j<s.length;j++)
s.data[j]=s.data[j+1];
}
}
}
s.length=s.length-k;
}
sqstring gonggong(sqstring s1,sqstring s2)///感觉老师的叙述比较模糊,容易让人产生误解,不知道到底怎么求子串
{
int i,j,k=0;
sqstring s3;
for(i=0;i<s1.length;i++)
{
for(j=0;j<s2.length;j++)
if(s1.data[i]==s2.data[j])///感觉我这样写更好看呀,当然也有可能是我写错了
{
s3.data[k]=s1.data[i];
k++;
break;
}
}
s3.length=k;
return s3;
}
int main()
{
sqstring s,s1,s2,s3,s4;
sqstring *t;
char a[100],b[100],c[100];
gets(a);
jianchuan(s,a);
display(s);
t=&s;
trans(t,'t','d');
display(s);
daoguolai(s);
display(s);
shanqu(s,'a');
display(s);
gets(b);
gets(c);
jianchuan(s1,b);
jianchuan(s2,c);
s3=gonggong(s1,s2);
display(s3);
return 0;
}
第八周 项目2-顺序表算法
最新推荐文章于 2023-07-09 15:34:17 发布