数据结构课程设计-回文判断

数据结构课程设计-回文判断

ID:39199247

大小:136.56 KB

页数:14页

时间:2019-06-27

数据结构课程设计-回文判断_第1页
数据结构课程设计-回文判断_第2页
数据结构课程设计-回文判断_第3页
数据结构课程设计-回文判断_第4页
数据结构课程设计-回文判断_第5页
资源描述:

《数据结构课程设计-回文判断》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、设计题目:3.4.4回文判断专业:****姓名:***学号:***日期:2011.09.11一,问题描述二,需求分析三,概要设计四,详细设计五,测试分析六,源程序清单七,用户使用手册八,心得体会14一、问题描述判断依次读入的一个以@为结束符的字母序列,是否形如“序列1&序列2”模式的字符序列。其中序列1和序列2都不含“&”字符,且序列2是序列1的逆序列。二、需求分析(1)输入测试数据组数,接着分组输入字符串,以@结尾。(2)输入序列总长不超过(MAX_N=10005)/2个。将序列1先入栈,接着处理序列2,同时

2、出栈判断。(3)将序列1全部入栈,接着输入序列2,同时出栈判断。(4)如果序列满足题目要求,则输出“回文序列”;否则,输出“非回文序列”。(5)测试数据:pal.txt12a+b&b+a@a&b@a&a@14&@&@&@&@ab&ba@abc&bc@bc&cba@&ab@ab&@三、概要设计(1)数据结构:typedefstructStack{inttop,size;charstr[MAX_N>>1];};使用结构体,内部定义数组模拟栈。top为栈顶指针,指向当前元素的下一个位置,size表示栈内的元素个数。(

3、2)函数介绍:14voidst_init(Stack*st);//栈的初始化boolst_push(Stack*st,constchar*temp);//入栈boolst_top(Stack*st,char*temp);//出栈(3)程序流程图:str[i]==’@’?开始读入字符,str[i]++iNstrlen(str)==奇数Y14对序列2进行判断,同时出栈处理,标记判断状态。序列1入栈flagYN非回文序列回文序列结束14四、详细设计主要出栈和入栈函数,可以对边界进行处理,防止栈为空情况。boolst_

4、push(Stack*st,constchar*temp){if(st->top>st->size)returnfalse;st->str[st->top++]=*temp;returntrue;}boolst_pop(Stack*st){if(st->top==0)returnfalse;st->top--;returntrue;}另外还有取栈顶函数。boolst_top(Stack*st,char*temp){if(st->top==0)returnfalse;14*temp=st->str[st->top

5、-1];returntrue;}五、测试分析(1)测试环境:CodeBlock10.04(2)输入过程:因为使用getchar()输入,所以有些地方需要谨慎处理。用于getchar()可以读入任意字符,所以回车和空格之类的特殊字符也作为序列参与判断了。(3)测试结果:141414六、源程序清单#include#include#includeconstintMAX_N=10005;typedefstructStack{inttop,size;charstr

6、[MAX_N>>1];};voidst_init(Stack*st){st->size=MAX_N>>1;st->top=0;}boolst_push(Stack*st,constchar*temp){if(st->top>st->size)returnfalse;st->str[st->top++]=*temp;returntrue;}14boolst_pop(Stack*st){if(st->top==0)returnfalse;st->top--;returntrue;}boolst_top(Stack*

7、st,char*temp){if(st->top==0)returnfalse;*temp=st->str[st->top-1];returntrue;}intmain(){charstr[MAX_N],c;inti,j,cas,len;Stackst;boolflag;//freopen("pal.txt","r",stdin);printf("请输入测试组数:");scanf("%d",&cas);getchar();j=0;while(cas--)14{++j;printf("第%d组数据……

8、",j);printf("请输入数据(字符串1&字符串2@):");for(i=0;1;i++){str[i]=getchar();if(str[i]=='@'){str[i]='';break;}}getchar();flag=true;len=strlen(str);st_init(&st);if(!len&1)flag=false;else{for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。