这几个算法的实现用到了之前写的顺序串算法库!
#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;
}
最近在读唐诗;今天看到了一首李白的侠客行,感觉特别好,不知道金庸先生的小说侠客行是否也受这首诗的启发呢?以一首诗结尾吧。
侠客行
赵客缦胡缨,吴钩霜雪明。银鞍照白马,飒沓如流星。
十步杀一人,千里不留行。事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。眼花耳热后,意气素霓生。
救赵挥金锤,邯郸先震惊。千秋二壮士,烜赫大梁城。
纵死侠骨香,不惭世上英。谁能书阁下,白首太玄经。
十步杀一人,千里不留行。千古名句,但之前还不知道这是出自于李白的诗篇!这首诗让我想起了小时候读金庸小说的快乐时光;最喜欢飞狐外传,最爱胡斐这个侠客!他没有射神倚和笑天鹿那么出名;但感觉胡斐这个人物更像诗中所描述的侠客。十步杀一人,千里不留行!