关于数据结构教程P67例3.4的算法的一点优化
2016-09-29 15:05
281 查看
例题要求是判断字符串是否对称。教材《数据结构教材 李春葆第四版P67》
以下是优化后的代码:(数据结构是栈,然后Push是进栈,Pop是出栈,InitStack是初始化,Deastroy是销毁)
bool Symmetry()
{
ElemType a[20];
ElemType t;
int char_length,i;
sqStack *s;
InitStack(s);
printf("请输入字符串");
scanf("%s",a);
for(i=0;a[i]!='\0';i++)
{
Push(s,a[i]);
}
for(i=0;i<=(s->top+1)/2;i++) //课本上的是结束条件是 s->data[s->top]!='\0'
{
Pop(s,t);
if(a[i]!=t)
{ printf("字符串是不对称的");
DestroyStack(s);
return false;
}
}
printf("字符串是对称的");
DestroyStack(s);
return true;
}
/课本上的是结束条件是 s->data[s->top]!='\0'
这就相当于把整个字符串倒过来和原来的字符串进行比较,而我的改动是i<=(s->top+1)/2
即是说,如果字符串位数是偶数,只要把后面的一半倒过来后和前面的一半比较即可。(如果是对称的,后面的一半必等于前面的)
如果是级数,则是中位数后面的字符倒过来后和中位数前面的比较。
这样就省下了一半的时间,虽说在这种小程序中作用不明显,但是不断优化算法是我们程序员的自我修养哈哈哈哈。。。
以下是优化后的代码:(数据结构是栈,然后Push是进栈,Pop是出栈,InitStack是初始化,Deastroy是销毁)
bool Symmetry()
{
ElemType a[20];
ElemType t;
int char_length,i;
sqStack *s;
InitStack(s);
printf("请输入字符串");
scanf("%s",a);
for(i=0;a[i]!='\0';i++)
{
Push(s,a[i]);
}
for(i=0;i<=(s->top+1)/2;i++) //课本上的是结束条件是 s->data[s->top]!='\0'
{
Pop(s,t);
if(a[i]!=t)
{ printf("字符串是不对称的");
DestroyStack(s);
return false;
}
}
printf("字符串是对称的");
DestroyStack(s);
return true;
}
/课本上的是结束条件是 s->data[s->top]!='\0'
这就相当于把整个字符串倒过来和原来的字符串进行比较,而我的改动是i<=(s->top+1)/2
即是说,如果字符串位数是偶数,只要把后面的一半倒过来后和前面的一半比较即可。(如果是对称的,后面的一半必等于前面的)
如果是级数,则是中位数后面的字符倒过来后和中位数前面的比较。
这样就省下了一半的时间,虽说在这种小程序中作用不明显,但是不断优化算法是我们程序员的自我修养哈哈哈哈。。。
相关文章推荐
- 借ACM一道题 关于算法优化的一点感想
- 推荐一个关于.NET平台数据结构和算法的好项目
- (同事的原创)关于效率优化的一点工作心得
- 关于遥感图像的控制点片匹配算法的一点想法(二)
- 严蔚敏《数据结构》C语言版 第三章 算法3.4 表达式求值
- 最新关于算法和数据结构的面试十六题 .
- 关于R-D 优化算法
- 老鼠走迷宫算法中的一点优化
- 关于遥感图像的控制点片匹配算法的一点想法(一)
- 关于遥感图像的控制点片匹配算法的一点想法(一)
- 关于数据结构以及学习的一点建议
- 关于在linux下的硬盘优化的一点试验
- 关于SQL优化的一点心得
- 关于数据库的一个统计算法的优化,欢迎大家来讨论(一定要赖心看的)
- 关于遥感图像的控制点片匹配算法的一点想法(二)
- 《Delphi 算法与数据结构》学习与感悟[4]: 关于 const
- 关于图像离散区域剔除算法的 优化问题-待发送的回复和图片
- 一片关于算法优化的小品文,极具启发性!
- [collection tip]关于算法 数据结构 x64 电子书
- 《Delphi 算法与数据结构》学习与感悟[4]: 关于 const