下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
栈和队列实现回文栈和队列实现回文栈和队列实现回文栈和队列的应用题目要求:输入一段字符串,判断字符串是否是回文。回文字符串的定义:字符串的顺序输入和逆序输出内容完全一样.要求出入一段字符串,以‘#’为结束符;判断是否是回文,并输出;实验目的:通过做回文的题,来熟悉栈和队列的结构以及内容,最终达到掌握实验步骤定义栈的结构体:typedefstruct{//栈结构的定义 int*top; int*base; intstacksize;}sqstack;定义队列的结构体:typedefstructqueue{//队列的结构体定义 intdata; structqueue*next;}queue,*que;typedefstruct{ quefront;//队列的头指针 querear;//队列的尾指针}Q;相关函数:voidinistack(sqstack&s)//初始化一个空栈booljust(sqstack&s)//判断栈是否为空,返回bool类型voidpush(sqstack&s,inte)//入栈charpop(sqstack&s,int&e)//出栈,返回char类型voidinitQ(Q&q)//初始化一个空队列pushq(Q&q,inte)//入队charpopq(Q&q,int&e)//出队,返回char类型总体结构图主界面(voidmain)主界面(voidmain)栈的定义队列的定义初始化空栈元素入栈元素出栈判断栈是否为空初始化空队列元素入队元素出队是否相等YesNo该字符串为回文该字符串不是回文运行结果分析完成对字符串的判断以及输出;程序清单#include<iostream。h>#include<malloc.h>typedefstruct{//栈结构的定义 int*top; int*base; intstacksize;}sqstack;voidinistack(sqstack&s)//初始化一个空栈{ s.base=(int*)malloc(100*sizeof(sqstack)); if(!s。base) { cout<〈"分配失败"〈〈endl; } s。top=s.base; s.stacksize=100;}booljust(sqstack&s){ boolss=true; if(s.top==s。base) ss=false; else ss=true; returnss;}voidpush(sqstack&s,inte)//入栈{ if(s。top-s.base〉=s。stacksize) { s.base=(int*)realloc(s.base,(s.stacksize+10)*sizeof(sqstack)); s。top=s.base+s.stacksize; s.stacksize+=10; } *s。top++=e;}charpop(sqstack&s,int&e)//出栈{ if(s.base==s。top) { cout<<"栈已经为空”<〈endl; } e=*--s.top; returne;}typedefstructqueue{//队列的结构体定义 intdata; structqueue*next;}queue,*que;typedefstruct{ quefront; querear;}Q;voidinitQ(Q&q)//初始化一个空队列{ q.front=q.rear=(queue*)malloc(sizeof(queue)); if(!q。front) { cout<<”分配失败”〈〈endl; } q.front—〉next=NULL;}voidpushq(Q&q,inte)//入队{ queue*p; p=(queue*)malloc(sizeof(queue)); p—>data=e; p—〉next=NULL; q.rear—〉next=p; q.rear=p;}charpopq(Q&q,int&e)//出队{ queue*t; if(q。front==q.rear) { cout〈<”队列已经为空"〈<endl; } t=(queue*)malloc(sizeof(queue)); t=q。front->next; e=t-〉data; q。front—>next=t-〉next; if(q.rear==t) q。rear=q。front; deletet; returne;}voidmain(){ charch;inte,k; boolss=true; sqstacks; Qq; inistack(s); initQ(q); cout<<"输入字符以‘#’为结束符:"<<endl; cin>>ch; while(ch!='#’) { push(s,ch); pushq(q,ch); cin〉〉ch; } while(just(s)) { pop(s,e); popq(q,k); i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论