阅读 73

指针函数判断回文字符串,判断字符串是否相等

内容:

所谓回文,如“abba”和“abdba”那样,即使进行解密也指相同的字符串,但“good”不是回文。 试着写一写判定给定的文字向量是否是回文的算法。

步骤:

算法分析本算法利用数组和堆栈实现,主要思路是将键盘输入的所有元素放入堆栈中,依次从堆栈开始与数组元素进行比较。 主要步骤是将需要通过键盘输入判断的字符串存储在数组中,并将数组中的元素按顺序放入堆栈中。 堆栈顶级元素的堆栈与数组元素进行比较,如果是回文字符串,则输出“此字符串是回文字符串”,否则输出“此字符串不是回文字符串”。 其中,利用在数据结构中学到的堆栈这一线性表,包含顺序堆栈的定义、初始化、空判定、堆栈是否溢出的判断、如何进入堆栈、退出堆栈等内容。 设计了一个函数IsHuiwen (),用于确定用户从键盘输入的字符串是否为回文字符串。

2 .概要设计

使用c语言设置以下函数

程序的执行流程图如下。

3 .测试(设计测试用例或测试代码的设计与实现并在屏幕上显示测试结果) )

设计示例如下图所示。

测试用例涵盖输入回文序列类型字符串和非回文序列类型字符串等问题,并提供大量测试用例,保证测试效果。

结果截图:

4 .源代码如下

# include stdio.h # include stdlib.h # define maxsize 100//预分配的堆栈空间最多可达100 #define n 100//定义数组长度typedef char elem; //堆栈元素的数据类型为字符typedefstructseqstack { elem data [ maxsize ]; //创建数组堆栈int top; //堆栈顶部指针定义(} SeqStack; //序列堆栈初始化intinit_seqstack(seqstack*s ) s=) seqstack* ) malloc ) sizeof ) seqstack ); //区域if分配(s==null ) {printf ) )空间分配申请失败\n; 返回0; //失败则为0,否则1}S - top=-1; 将//-1代入堆栈指针return 1; //堆栈溢出intfull_seqstack(seqstack*s ) if ) s-top==maxsize-1 ) {return 1; //如果堆栈已满,则返回1;否则返回0(else ); }//确定堆栈是否为空的intempty_seqstack(seqstack*s ) if ) s-top==-1 ) ) {return 1; //堆栈空为1,否则为0} else {return 0; }//元素堆栈voidpush_seqstack(seqstack*s,elem e ) if ) full_seqstack ) s )==1)//元素堆栈是否已满printf ) '堆栈}S - top; //堆栈顶部指针1S - data[S - top]=e; //元素堆栈(//intpop_seqstack(seqstack*s,elem e ) if ) empty_seqstack )==1) /该堆栈是否为空printf ' //为空堆栈返回0,堆栈失败}e=S - data[S - top]; //栈顶元素外栈S - top--; //堆栈顶部指针减少1,返回1; //成功从堆栈中恢复1}//回文intisHuiwen(Elema[] ) {elem e; SeqStack *S; init_seqstack(s ); //初始化序列堆栈for(intI=0; a[i]; I )//数组中的元素依次堆栈push_seqstack(s,a[i] ); for(intI=0; a[i]; I ) /序列栈中的栈顶元素依次由栈pop_seqstack(s,e ); if(a[I]! 判断=e//a[I]是否与堆栈顶部元素相同的返回0; //如果不同则直接返回0 (0) 0}return 1; }int main () {printf ) )请输入要判断的字符串(n ) ); elem a[n]; 如果要通过定义//长度为n的GETS(a )//键盘输入确定的字符串if(ishuiwen(a )/ishuiwen ) )的返回值为1 (“该字符串是回文字符串(printf )”),则返回该字符串} else { //否则,“此字符串不是回文字符串”printf (此字符串不是回文字符串\n ) ); }return 0; }


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐