版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心血管疾病遗传风险的动态评估
- 心脏移植前休克管理策略
- 心肌梗死风险预测:生物标志物与基因整合
- 微创缝合技术在硬脑膜修补中的手术配合要点
- 微创手术在儿童脊髓血管畸形中的应用
- 微创三叉神经微血管减压术的术后用药指导规范
- 2025年烘焙零食连锁加盟协议
- 康复辅具与医保支付的衔接策略
- 康复机器人与5G+物联网的生态构建
- 应急医疗物资储备的成本效益优化策略
- 中国仓储物流中心运营管理现状与发展趋势研究报告
- 2025年中共湛江市委巡察服务保障中心、湛江市清风苑管理中心公开招聘事业编制工作人员8人备考题库完整参考答案详解
- 2025年乡镇卫生院党风廉政建设自查报告
- 《国家赔偿法》期末终结性考试(占总成绩50%)-国开(ZJ)-参考资料
- 2025年国家开放大学(电大)《工程项目管理》期末考试复习试题及答案解析
- 农贸市场摊位租赁合同
- 考研咨询师员工培训方案
- 电价政策讲解课件
- 2023年新高考I卷英语试题讲评课件-2024届高考英语一轮复习
- 提高铝模板施工质量合格率
- GB/T 6672-2001塑料薄膜和薄片厚度测定机械测量法
评论
0/150
提交评论