数据结构-回文序列判断_第1页
数据结构-回文序列判断_第2页
数据结构-回文序列判断_第3页
数据结构-回文序列判断_第4页
数据结构-回文序列判断_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西安邮电学院数据结构实验报告回文序列判断班级:班内序号:学生姓名:指导教师:时间:2011/10/13一、实验目的2二、实验内容2三、数据结构及算法思想2四、模块划分21、对各个模块进行功能的描述22、模块之间关系及其相互调用的图示3五、详细设计及运行结果31、设计源代码:32、运行结果:7六、调试情况,设计技巧及体会71、熟悉并掌握栈的的创建、入栈和出栈等基本用法并能运用栈完成一些特定的任务。2、熟悉并掌握队列的的创建、入队和出队等基本用法并能运用队列完成一些特定的任务。3、运用栈和队列实现对“回文”序列的判断。二、实验内容编写一个算法,判断一次读入一个以劭束符的字母序列,是否为形如序列18

2、序列2'模式的字符序列。其中序列1和序列2中都不含字符'&'。且序列2是序列1的逆序列。例如,'a+b&b+si是属于该模式的字符序列,'a+b&b-a'则不是。三、数据结构及算法思想运用栈和队列算法,在序列依次输入时将序列分别入栈和入队列,利用栈FILO和队列FIFO的特点,通过出栈和出队列实现序列顺序和逆序的比较,根据题目描述的回文序列判断并输出结果。四、模块划分1、对各个模块进行功能的描述本次设计共分为六个模块,分别是:初始化模块、输入模块、入栈模块、入队模块、判断模块、输出模块。各个模块功能如下表。表格1模块功能描

3、述初始化模块栈、队列等初始化输入模块字母序列输入入栈模块将输入序列入栈入队模块将输入序列入队判断模块将序列正、逆比较输出模块判断结果输出2、模块之间关系及其相互调用的图示开始五、详细设计及运行结果1、设计源代码:#include"stdio.h"#include"conio.h"#include"malloc.h"typedefstructNODEchardata;structNODE*next;LinkStack;typedefstructNode(chardata;structNode*next;LinkQueueNode;typ

4、edefstruct(LinkQueueNode*front;LinkQueueNode*rear;LinkQueue;voidInitStack(LinkStack*top)(top->next=NULL;charPush(LinkStack*top,chara)(LinkStack*temp;temp=(LinkStack*)malloc(sizeof(LinkStack);if(temp=NULL)return(0);temp->data=a;temp->next=top->next;top->next=temp;return(1);charPop(Link

5、Stack*top)(LinkStack*temp;chara;temp=top->next;if(temp=NULL)return(0);top->next=temp->next;a=temp->data;free(temp);return(a);intLengthStack(LinkStack*top)(LinkStack*temp;intcount=0;temp=top->next;while(temp!=NULL)(count+;temp=temp->next;return(count);voidInitQueue(LinkQueue*q)(q-&g

6、t;front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode);q->rear=(LinkQueueNode*)malloc(sizeof(LinkQueueNode);q->rear=q->front;q->front->next=NULL;charEnterQueue(LinkQueue*q,chara)(LinkQueueNode*NewNode;NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode);if(NewNode!=NULL)(NewNode->dat

7、a=a;NewNode->next=NULL;q->rear->next=NewNode;q->rear=NewNode;return(1);elsereturn(0);charOutQueue(LinkQueue*q)(LinkQueueNode*temp;chara;if(q->rear=q->front)return(0);temp=q->front->next;q->front->next=temp->next;if(q->rear=temp)q->rear=q->front;a=temp->da

8、ta;free(temp);return(a);)voidmain()(chara100,flag1=0,flag2=0,n,m;inti=0,t=0;LinkStack*top=(LinkStack*)malloc(sizeof(LinkStack);LinkQueue*q=(LinkQueue*)malloc(sizeof(LinkQueue);InitStack(top);InitQueue(q);printf("pleaseinputastringendof:n");while(ai-1!=64)(scanf("%c”,&ai);i+;)for(t

9、=0;t<i;t+)(if(at!=64)(Push(top,at);EnterQueue(q,at);)t=LengthStack(top);if(t%2=0)printf("Inputwrong!");else(for(i=0;i<t;i+)(n=Pop(top);m=OutQueue(q);if(n!=m)flag1=1;if(i=t/2)&&(n!=38)flag2=1;)if(flag1|flag2)printf("Thisisnotpalindromesequence!");elseprintf("Thi

10、sispalindromesequence!");)getch();2、运行结果:2.1 、回文字符序列输入:E:programC回文*hiuwenxe"pleaseinputastringendof©:qwertyytrewq©ThisispalindromesequenceJ图22.2 非回文字符序列输入:FdE:programC回文hru,'.en.exe"pleaseinputastringendof:qwerttreq©Thisisnotpalindzomesequence1六、调试情况,设计技巧及体会通过这次数据结构试验,我学习了链栈的建立及其一些基本的操作方法和队列的建立及对其的一些基本操作,充分理解了栈和区别和联系,栈和队列都可以通过链表实现,区别在于对其操作的节点位置不同,更重要的是通过这次实践操作学会了完成一个设计的基本方法和步骤,拿到一个问题不能急于开始书写代码要将问题理清楚、找清思路、分好模块再开始敲代码,代码只是实现一个功能的工具,只有好的解决问题的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论