回文序列判断(运用栈以及队列完成).doc

回文序列判断(运用栈以及队列完成).doc

ID:52777767

大小:87.00 KB

页数:6页

时间:2020-03-30

回文序列判断(运用栈以及队列完成).doc_第1页
回文序列判断(运用栈以及队列完成).doc_第2页
回文序列判断(运用栈以及队列完成).doc_第3页
回文序列判断(运用栈以及队列完成).doc_第4页
回文序列判断(运用栈以及队列完成).doc_第5页
资源描述:

《回文序列判断(运用栈以及队列完成).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、回文序列判断实验报告系别:通信工程班级:0905班学号:18号1.实验目的:熟悉栈的各项操作2.实验内容:利用栈的操作完成读入的一个以@结尾的字符序列是否是回文序列的判断.回文序列即正读与反读都一样的字符序列;例如:123&321@是;123&4321@、123&312@不是算法思想:从键盘上读取一个字符,同时存储在顺序栈与链队列之中,直到字符序列的最后一个字符为@停止输入,因为要满足特定的要求:序列1&序列2,故设置夜歌标记量falg=1,判断输入的元素个数是否为奇数个,若为偶数个则令flag=0,若为奇数个继续判断栈的中间元素是否为&,若不是则令flag=0,若是,将栈和队列中的元

2、素依次出列,判断是否相等,若不相等则令flag=0,最后将flag的值返回给主函数,若flag被修改为0说明不是回文序列,否则反之!!判断回文序列的流程图:初始化栈InitS(&s)初始化队列InitQ(&q)当ch!='@'时ch=getch()Ych!='@'Nprintf("%c",ch)push(&s,ch)enter(&q,ch)m++Ym%2!=0NYs->e[m/2]=='&'Nflag=0i=1当i<(m+1)/2时flagpop(&s,&ch1)=0deleteq(&q,&ch2)Ych1!=ch2Nflag=0i++retun(flag)3.实验感想与体会通过本次的

3、上机,对栈的各项基本操作都有了更好的掌握,同时明白了一些小的细节问题可能会影响到整个程序的正确的运行,本次的实验我通过了运用栈和队列,可以说对队列的一些基本的操作也得以了巩固和提高!更加体会到,自己写程序上机操作的重要性,它要比课本上学的要多得多!4.附录(源代码及运行图)#include#defineMAX100typedefstruct//栈结构体{chare[MAX];inttop;}SeqStack;typedefstructNODE//队列结构体{chard;structNODE*next;}LinkQN;typedefstruct//封装头指针为指针{Li

4、nkQN*front;LinkQN*rear;}LinkQ;InitS(SeqStack*s)//初始化顺序栈{s->top=-1;}intpush(SeqStack*s,charch)//入栈{if(s->top==MAX-1)return(0);s->top++;s->e[s->top]=ch;return(1);}intpop(SeqStack*s,char*x)//出栈{if(s->top==-1)return(0);*x=s->e[s->top];s->top--;return(1);}voidInitQ(LinkQ*q)//链队列初始化{q->front=(LinkQN*)

5、malloc(sizeof(LinkQN));if(!q->front){printf("分配空间失败!");}q->rear=q->front;q->front->next=NULL;}intenter(LinkQ*q,charch)//入队{LinkQN*np;np=(LinkQN*)malloc(sizeof(LinkQN));if(!np)return(0);np->d=ch;np->next=NULL;q->rear->next=np;q->rear=np;return(1);}intdeleteq(LinkQ*q,char*c)//出队{LinkQN*p;if(q->fro

6、nt==q->rear)return(0);p=q->front->next;q->front->next=p->next;if(q->rear==p)q->rear=q->front;*c=p->d;free(p);return(0);}inthuiwen(SeqStack*s,LinkQ*q)//回文判断{intflag=1,m=0,t=1;inti;charch1,ch2,ch;InitS(&s);InitQ(&q);printf("请输入字符序列当输入字符@时输入结束:");while(ch!='@'){ch=getch();if(ch!='@'){printf("%c",

7、ch);push(&s,ch);enter(&q,ch);m++;}}printf("输入完成!");printf("按任意键予以判断!");getch();if(m%2){if(s->e[m/2]=='&'){for(i=1;i<(m+1)/2;i++){pop(&s,&ch1);deleteq(&q,&ch2);if(ch1!=ch2)flag=0;}}elseflag=0;}elseflag=0;return(flag);}m

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

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

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