已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、实验目的1、熟悉并掌握栈的的创建、入栈和出栈等基本用法并能运用栈完成一些特定的任务。2、熟悉并掌握队列的的创建、入队和出队等基本用法并能运用队列完成一些特定的任务。3、运用栈和队列实现对“回文”序列的判断。二、实验内容 编写一个算法,判断一次读入一个以结束符的字母序列,是否为形如序列1&序列2模式的字符序列。其中序列1和序列2中都不含字符&。且序列2是序列1的逆序列。例如,a+b&b+a是属于该模式的字符序列,a+b&b-a则不是。三、数据结构及算法思想运用栈和队列算法,在序列依次输入时将序列分别入栈和入队列,利用栈FILO和队列FIFO的特点,通过出栈和出队列实现序列顺序和逆序的比较,根据题目描述的回文序列判断并输出结果。四、模块划分1、对各个模块进行功能的描述本次设计共分为六个模块,分别是:初始化模块、输入模块、入栈模块、入队模块、判断模块、输出模块。各个模块功能如下表。表格 1模 块功能描述初始化模块栈、队列等初始化输入模块字母序列输入入栈模块将输入序列入栈入队模块将输入序列入队判断模块将序列正、逆比较输出模块判断结果输出2、模块之间关系及其相互调用的图示图1五、详细设计及运行结果1、设计源代码:#includestdio.h#includeconio.h#includemalloc.htypedef struct NODE char data; struct NODE *next;LinkStack;typedef struct Node char data; struct Node *next;LinkQueueNode;typedef struct LinkQueueNode *front; LinkQueueNode *rear;LinkQueue;void InitStack(LinkStack *top) top-next=NULL;char Push(LinkStack *top,char a) LinkStack *temp; temp=(LinkStack *)malloc(sizeof(LinkStack); if(temp=NULL) return(0); temp-data=a; temp-next=top-next; top-next=temp; return(1); char Pop(LinkStack *top) LinkStack *temp; char a; temp=top-next; if(temp=NULL) return(0); top-next=temp-next; a=temp-data; free(temp); return(a);int LengthStack(LinkStack *top) LinkStack *temp; int count=0; temp=top-next; while(temp!=NULL) count+; temp=temp-next; return(count);void InitQueue(LinkQueue *q) q-front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode);q-rear=(LinkQueueNode *)malloc(sizeof(LinkQueueNode); q-rear=q-front; q-front-next=NULL; char EnterQueue(LinkQueue *q,char a) LinkQueueNode *NewNode; NewNode=(LinkQueueNode *)malloc(sizeof(LinkQueueNode); if(NewNode!=NULL) NewNode-data=a; NewNode-next=NULL; q-rear-next=NewNode; q-rear=NewNode; return(1); else return(0);char OutQueue(LinkQueue *q) LinkQueueNode *temp; char a; 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-data; free(temp); return(a);void main() char a100,flag1=0,flag2=0,n,m; int i=0,t=0; LinkStack *top=(LinkStack *)malloc(sizeof(LinkStack); LinkQueue *q=(LinkQueue *)malloc(sizeof(LinkQueue); InitStack(top); InitQueue(q);printf(please input a string end of :n); while(ai-1!=64) scanf(%c,&ai); i+; for(t=0;ti;t+) if(at!=64) Push(top,at); EnterQueue(q,at); t=LengthStack(top); if(t%2=0) printf(Input wrong!); else for(i=0;it;i+) n=Pop(top); m=OutQueue(q); if(n!=m) flag1=1; if(i=t/2)&(n!=38) flag2=1; if(flag1|flag2) printf(This is not palindrome sequence!); else printf(This is palindrome sequence!); getch();2、运行结果:2.1、回文字符序列输入:图 22.2非回文字符序列输入:图 3六、调试情况,设计技巧及体会通过这次数据结构试验,我学习了链栈的建立及其一些基本的操作方法和队列的建立及对其的一些基本操作,充分理解了栈和区别和联系,栈和队列都可以通过链表实现,区别在于对其操作的节点位置不同,更重要的是通过这次实践操作学会了完成一个设计的基本方法和步骤,拿到一个问题不能急于开始书写代码要将问题理清楚、找清思路、分好模块再开始敲代码,代码只是实现一个功能的工具,只有好的解决问题的思路,才能做出好的程序。写完一个程序,只是完成一个设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026山东济南南美水务有限公司招聘4人笔试参考题库及答案详解
- 2026中城院 (北京) 环境科技股份有限公司国际事业部经营经理岗位招聘1人笔试备考题库及答案详解
- 2026中国铁建纪委办案中心社会招聘13人笔试模拟试题及答案详解
- 企业与供应商合作协议管理流程
- 高铁乘务安全责任协议
- 2026浙江宁波市余姚市阳明街道办事处招聘编外人员4人笔试备考试题及答案详解
- 2026重庆人工智能学院非事业编人员招聘12人(第三批)笔试参考题库及答案详解
- 早熟禾属牧草种质资源评价鉴定技术规程-编制说明
- 2026云南迪庆州维西县国有林场编外专职森林草原管护人员招聘1人笔试模拟试题及答案详解
- 2026年龙井市面向委培生、定向生公开招聘委培定向生专项安置人员笔试备考试题及答案详解
- 四川省凉山州2025年中考物理真题附同步解析
- 人大强基考试试题及答案
- 心理健康课题中期报告范文
- 2025年重庆市中考生物试卷真题(含标准答案)
- DB32T 5124.3-2025 临床护理技术规范 第3部分:成人危重症患者有创动脉血压监测
- T-FDSCX 002-2024 福鼎白茶标准
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 【高考真题(含答案)】安徽省新高考2024年化学试卷(含答案)
- 《SPIN销售法精髓》课件
- 电信生产安全事故案例分析(新版.)
- 律师事务所开拓客户培训
评论
0/150
提交评论